LCD창을 이용해 원하는 문자를 출력할 수 있을까?
아두이노에 I2C LCD 부품을 연결하여 원하는 문자를 출력해 봅시다.
01. I2C LCD 모듈이란?
좌측의 I2C LCD 모듈은 16x2로 16글자의 영문자 혹은 숫자를 2줄까지 출력(총32글자)이 가능한 아두이노 출력장치입니다. 32글자가 출력이 가능하여 활용도가 매우 높은 LCD 출력장치입니다.
인터넷에서 쉽게 구매 가능한 I2C lCD 모듈입니다.
왼쪽의 사진과 같이 I2C 인터페이스가 납땜되어 있는 제품으로 구매해서 간편하게 사용해 보도록 합시다.
02. I2C LCD 제품 주소 스캔하기
I2C LCD 제품을 사용하는 과정에서 간혹 주소가 default 값이 아닌 다른 주소로 설정된 경우가 있습니다.
따라서 아래와 같이 제품에 설정된 주소를 알아내는 방법을 함께 해보도록 하겠습니다.
GND - GND
VCC - 5V
SDA - A4
SCL - A5
아래의 소스를 업로드 합니다.
#include <Wire.h>
void setup()
{
Wire.begin();
Serial.begin(9600);
while (!Serial);
Serial.println("\nI2C Scanner");
}
void loop()
{
byte error, address;
int nDevices;
Serial.println("Scanning...");
nDevices = 0;
for(address = 1; address < 127; address++ )
{
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0)
{
Serial.print("I2C device found at address 0x");
if (address<16)
Serial.print("0");
Serial.print(address,HEX);
Serial.println(" !");
nDevices++;
}
else if (error==4)
{
Serial.print("Unknow error at address 0x");
if (address<16)
Serial.print("0");
Serial.println(address,HEX);
}
}
if (nDevices == 0)
Serial.println("No I2C devices found\n");
else
Serial.println("done\n");
delay(5000);
}
우측 상단의 시리얼 모니터 버튼을 클릭하면 아래와 같이 설정된 주소를 확인할 수 있습니다.
주소는 0x27 또는 0x3F 의 형태로 확인할 수 있습니다.
03. I2C LCD 에 원하는 문자를 출력해봅시다.
아래 예제 소스를 업로드 하여 문자를 LCD창에 출력해봅시다.
01
02
03
04
05
06
07
08
09
10
11
12
13
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F,16,2);
void setup() {
Serial.begin(9600);
lcd.init();
lcd.backlight();
}
void loop() {
lcd.print("Temp");
lcd.print("300");
lcd.print("'C");
lcd.begin(16,2);
delay(500);
}
01: I2C 통신 라이브러리 불러오기
02:LCD 1602 I2C용 라이브러리 불러오기
03:LCD 설정 접근주소는 0x3F, 16개문자 2행
04~07: Setup 함수를 정의한다
05: 통신속도를 9600으로 설정
06: LCD 초기화
07:LCD 백라이트 켜기
08:loop함수를 정의한다.
09: LCD에 출력"Temp"
10: LCD에 출력 "300"
11: LCD에 출력 "'C"
12: LCD 의 크기를 설정
13:500밀리초 대기
04. I2C LCD 에 원하는 문자를 두줄 출력해봅시다.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
void setup() {
Serial.begin(9600);
lcd.init();
lcd.backlight();
}
void loop() {
lcd.setCursor(0,0);
lcd.print("Temp");
lcd.print("300");
lcd.print("'C");
lcd.setCursor(0,1);
lcd.print("aaa");
lcd.print("100");
lcd.print("'C");
lcd.begin(16,2);
delay(500);
}
01: I2C 통신 라이브러리 불러오기
02:LCD 1602 I2C용 라이브러리 불러오기
03:LCD 설정 접근주소는 0x3F, 16개문자 2행
04~07: Setup 함수를 정의한다
05: 통신속도를 9600으로 설정
06: LCD 초기화
07:LCD 백라이트 켜기
08:loop함수를 정의한다.
09: 0칸 0행에 커서 위치
10: LCD에 출력"Temp"
11: LCD에 출력 "300"
12: LCD에 출력 "'C"
13: 0칸 1행에 커서 위치
14: LCD에 출력"aaa"
15: LCD에 출력 "100"
16: LCD에 출력 "'C"
17:LCD크기 설정(깜빡이며)
18: 500밀리초 대기