아두이노 프로그래밍 (응용과정) 3일차 – Part2 LCD 활용하기 강사: 김영준 목원대학교 겸임교수 헬로앱스 (www.helloapps.co.kr)
LCD 연결하기
LCD 연결하기 센서 연결하기 I2C 핀 I2C 4핀 LCD 또는 LED 체인 등은 I2C 4핀에 연결합니다.
LCD 연결하기 센서 연결하기 I2C 핀 I2C 핀은 4개의 핀으로 구성되어 있습니다. GND 5V SDA SCL
LCD 연결하기 센서 연결하기 I2C 핀에 LCD 연결하기 헬로앱스 LCD의 경우, 빨간색 선이 GND 위치 (안쪽)에 오도록 한 후 연결합니다. LCD 연결선의 색상은 제조사 마다 다르므로 선의 이름을 확인한 후 연결해 줍니다.
LCD 제어하기 한글은 출력되지 않습니다. 1) 크리스털 LCD가 출력할 수 있는 것 - 알파벳 - 숫자 - 사용자가 만든 특수문자 (10개 까지 출력 가능) 한글은 출력되지 않습니다.
LCD 제어하기 LCD 명령어는 내장 명령어 탭에 포함되어 있습니다. LCD 명령어
LCD 제어하기 LCD 명령어
LCD 제어하기 LCD 명령어 설명 LCD 명령어 문자열을 LCD 창에 표시합니다. LCD 창의 모든 값을 지웁니다. LCD 창에서 문자 출력 위치(커서)를 X, Y 좌표로 이동시킵니다. LCD 창에 특수 문자를 출력합니다. 특수 문자를 생성하여 내부 저장소에 저장합니다. LCD 창에서 배경 라이트를 켭니다. LCD 창에서 배경 라이트를 끕니다.
LCD 제어하기 명령어 추가 2-5-1 명령어를 마우스로 드래그하여 추가합니다.
LCD 제어하기 명령어 추가 문자열 값은 “ “ 로 감싸여 있어야 합니다. LcdPrint(“Hello”)
LCD 제어하기 명령어 추가 void loop() { LcdPrint(“Hello”) Delay(100) }
LCD 제어하기 명령어 추가 void loop() { LcdPrint(“Hello”) Delay(100) } 기다리기 값의 숫자를 1,000에서 100으로 수정해 줍니다. 1,000은 1초를 의미하며, 따라서 100은 0.1초가 됩니다. 즉, 0.1초 간격으로 문자를 출력하게 됩니다. void loop() { LcdPrint(“Hello”) Delay(100) }
LCD 제어하기 실행 결과 HelloHelloHelloHelloHell
LCD 제어하기 LCD 창이 어둡게 되는 것을 방지하기 위해 백바이트를 켭니다 백라이트 켜기 LCD 창이 어둡게 되는 것을 방지하기 위해 백바이트를 켭니다 백라이트를 켜는 것은 최초 한번만 해주면 되기 때문에 Setup 함수에서 실행해 줍니다.
LCD 제어하기 백라이트 켜기 Setup 함수에 LcdBackLight 명령어를 추가해 줍니다.
LCD 제어하기 백라이트 켜기 void setup() { LcdBacklight() } void loop() LcdPrint(“Hello”) Delay(100) Setup 함수에 LcdBackLight 명령어를 추가해 줍니다.
LCD 제어하기 화면 지우기 void setup() { LcdBacklight() } void loop() LcdClear() LcdPrint(“Hello”) Delay(100)
LCD 제어하기 커서를 맨 앞으로 보내기 void setup() { LcdBacklight() } void loop() LcdClear() LcdHome() LcdPrint(“Hello”) Delay(100)
LCD 제어하기 센서값 표시하기 void setup() { LcdBacklight() } void loop() a0 = AnalogRead(0) LcdClear() LcdHome() LcdPrint(a0) Delay(100)
LCD 제어하기 CDS: 600 센서값 표시하기 조도센서는 다른 말로 CDS 라고도 불립니다.
LCD 제어하기 센서값 표시하기 void setup() { LcdBacklight() } void loop() a0 = AnalogRead(0) LcdClear() LcdHome() LcdPrint(“CDS: “) LcdPrint(a0) Delay(100)
LCD 제어하기 두 줄로 출력하기 void loop() { c = AnalogRead(0) a = AnalogRead(1) LcdClear() LcdHome() LcdPrint("CDS: ") LcdPrint(c) LcdSetCursor(0, 1) LcdPrint("Distance: ") LcdPrint(a) delay(1000) }
LCD 제어하기 특수문자 출력하기 각 문자는 5x8의 도트로 구성되며, 하나의 문자는 다음과 같이 8개의 16진수로 정의됩니다.
LCD 제어하기 특수 문자 생성 uint8_t mychar[8] = {0x00,0x1f,0x09,0x05,0x03,0x01,0x01, 0x00}; void setup() { LcdBackLight() LcdCreateChar(0, mychar) }
LCD 제어하기 특수 문자 표시 Void loop() { LcdClear() LcdHome() LcdPrintByte(0) delay(1000) }
LCD 제어하기 특수 문자 생성 사례 uint8_t bell[8] = {0x4,0xe,0xe,0xe,0x1f,0x0,0x4}; uint8_t note[8] = {0x2,0x3,0x2,0xe,0x1e,0xc,0x0}; uint8_t clock[8] = {0x0,0xe,0x15,0x17,0x11,0xe,0x0}; uint8_t heart[8] = {0x00,0x0a,0x1f,0x1f,0x0e,0x04,0x00,0x00}; uint8_t duck[8] = {0x00,0x0c,0x1d,0xf,0xf,0x06,0x00,0x00}; uint8_t check[8] = {0x00,0x01,0x03,0x16,0x1c,0x08,0x00,0x00}; uint8_t cross[8] = {0x00,0x1b,0x0e,0x04,0x0e,0x1b,0x00,0x00}; uint8_t retarrow[8] = {0x01,0x01,0x05,0x09,0x1f,0x08,0x04,0x00}; void setup() { LcdBackLight() LcdCreateChar(0, mychar) }
시계 만들기 millis() 함수 이해하기 아두이노 보드에 전원이 들어온 순간 부터 누적된 시간 밀리초 단위의 숫자 값 49일이 지나면 다시 0부터 시작됨
시계 만들기 void setup() { } void loop() t = millis() PrintLine(t) Delay(1000)
간단한 타이머 장치 만들기 LCD를 활용하여 타이머 장치 만들기 void setup() { LcdBacklight() } void loop() t = millis() LcdClear() LcdHome() LcdPrint(t) Delay(100)
초기화 되는 타이머 만들기 #include <AnalogKeyPad.h> void setup() { } void loop() a0 = KeyPad(0) PrintLine(a0) Delay(100) • 새로운 스크립트 파일을 생 성합니다. • 프로그램 상단에 #include <AnalogKeyPad.h> 를 추가합 니다. • KeyPad 함수를 활용합니다.
초기화 되는 타이머 만들기 #include <AnalogKeyPad.h> start_time = 0 void setup() { LcdBacklight() } void loop() t = millis() a0 = KeyPad(0) if (a0 == 1) start_time = t LcdClear() LcdHome() LcdPrint(t – start_time) Delay(100)