아두이노 시리얼모니터 lcd 출력 - adu-ino silieolmoniteo lcd chullyeog

홈UNO[아두이노] 아두이노로 LCD 사용하기

5/14/2019

아두이노 시리얼모니터 lcd 출력 - adu-ino silieolmoniteo lcd chullyeog

안녕하세요 대짜이찐입니다.

이번 포스팅에서는,

I2C 캐릭터 LCD를 아두이노에 연결해서

테스트해보겠습니다.

아두이노 시리얼모니터 lcd 출력 - adu-ino silieolmoniteo lcd chullyeog

LCD(Liquid Crystal Display)는 액정표시장치라고도 부릅니다.  

LCD는 TV나 휴대폰에 주로 사용되는 제품입니다.

스스로 빛을 내지 않기 때문에, 후면에 백라이트(Back Light)를 두고

전면에 액정을 두어 액정이 전기 신호에 따라

빛을 차단하거나 통과시키는 방식으로 표시합니다.

아두이노에서 LCD는 16 * 2 Character LCD를 가장 보편적으로 사용합니다.

이전에는 LCD 모듈에 I2C모듈이 부착되지 않았기 때문에

디지털 포트를 많이 사용하였고 때문에 효율성이 좋지 않았습니다.

하지만 우리가 사용할 제품은 I2C 모듈이 부착되어있는 LCD로,

I2C 통신을 통해 제어가 가능하기 때문에 필요한 핀은 4개 뿐입니다.

덕분에 효율이 많이 좋아졌습니다.  

아두이노 시리얼모니터 lcd 출력 - adu-ino silieolmoniteo lcd chullyeog

뒷면에 있는 점퍼는 백라이트 ON을 위해서 연결되어있고,

가변저항을 통해서 문자의 선명도를 조절합니다.

I2C LCD를 아두이노에서 사용하기 위해서는 LiquidCrystal_I2C 라이브러리가 필요합니다.


아래 링크에서 다운로드 해주세요.

아두이노 시리얼모니터 lcd 출력 - adu-ino silieolmoniteo lcd chullyeog

초록색으로된 Clone or download버튼을 눌러 압축파일을 다운로드 해준 후

아두이노 IDE 메뉴바-스케치-라이브러리 포함하기 -.ZIP 라이브러리 추가를 이용해서 추가해줍니다.

아두이노 시리얼모니터 lcd 출력 - adu-ino silieolmoniteo lcd chullyeog

16*2 LCD 모듈의 구조입니다.

아두이노 시리얼모니터 lcd 출력 - adu-ino silieolmoniteo lcd chullyeog

준비물: 아두이노, I2C LCD 모듈, 점퍼선

아두이노

I2C LCD 모듈

비고

GND

GND

Ground

5V

VCC

Vcc

A4

SDA

Serial Data

A5

SCL

Serial Clock

아래 예제는 시리얼모니터로 받은 값을 lcd로 출력하는 예제입니다.

주의하셔야 할게, I2C 주소값이 기본 0x27이지만

모듈에 따라 0x3F인것도 있습니다.

출력이 안된다면, I2C주소값을 수정해주세요.

/*

lcd 시리얼 테스트

http://www.devicemart.co.kr/

*/

#include <Wire.h>// I2C 통신을 위해 Wire 라이브러리 사용

#include <LiquidCrystal_I2C.h>// LiquidCrystal_i2c 라이브러리 사용

// 객체이름을 lcd로 선언 I2C 주소값을 0x27로 설정, 16 문자 2줄 디스플레이

// 만약 lcd가 출력이 안된다면, 주소값을 0x3F로 수정

LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup()

{

lcd.begin(); // lcd 시작

lcd.backlight(); // lcd 백라이트 on

 Serial.begin(9600); // 속도 9600bps로 시리얼 통신시작

Serial.println("LCD통신 시작"); // 시리얼 통신 시작 문자 출력

}

void loop()

{

// 시리얼 통신으로 문자열이 도착한다면

if (Serial.available())

{

  delay(10); // 메세지가 모두 도착하도록 잠시 대기

  lcd.clear(); // lcd 내용 삭제(초기화)

  // 받은 문자들을 시리얼 모니터와 lcd에 출력

    while (Serial.available() > 0)

  {

    char val=Serial.read(); // 받은 문자열을 val에 저장

    if(val>16)

    {

      Serial.print(val); // val 값을 시리얼 모니터에 출력

      lcd.print(val);  // val 값을 lcd에 출력

    }

    else

    {

      Serial.print(val); // val 값을 시리얼 모니터에 출력

      lcd.print(val);  // val 값을 lcd에 출력

    }

  }

}

}


아래표는 lcd객체이름을 lcd로 선언했을 때 함수명입니다.

예) 객체이름 lcd-> lcd.begin(), 객체이름 device-> device.begin()

함수

기능

lcd.begin()

lcd 사용을 시작

lcd.clear()

lcd 화면의 모든 내용 삭제

lcd.backlight()

lcd 백라이트 on

lcd.noBacklight()

lcd 백라이트 off

lcd.display()

lcd 내용 표시

lcd.noDisplay()

lcd 내용 숨김

lcd.setCursor(col,row)

lcd 커서를 col,row좌표로 이동 (0부터시작)

lcd.cursor()

lcd 커서 표시

lcd.noCursor()

lcd 커서 숨김

lcd.home()

lcd 커서의 위치를 0,0좌표로 이동

lcd.blink()

lcd 커서를 깜박임

lcd.noBlink()

lcd 커서를 깜박이지 않음

lcd.write(data)

lcd 화면에 data를 출력(아스키코드값)

lcd.print(data)

lcd 화면에 data를 출력

lcd.scrollDisplayRight()

lcd 내용을 우측으로 1칸 이동

lcd.scrollDisplayLeft()

lcd 내용을 좌측으로 1칸 이동

lcd.autoscroll()

lcd 내용을 자동으로 스크롤

lcd.leftToRight()

lcd 문자 표시를 좌에서 우로 설정

lcd.rightToLeft()

lcd 문자 표시를 우에서 좌로 설정