TFT LCD 모듈 사용방법
1. TFT LCD 라이브러리
여기서는 TFT LCD 모듈을 사용하기 위한 TFT 라이브러리의 기본이 되는 내용을 설명합니다. 드라이버 IC 별로 종류가 상당히 많은 만큼 드라이버 IC가 틀릴 경우 별도의 검색이 필요합니다.
일단 아래 두 사이트에 정보들을 확인해 두는 것이 좋습니다.
아두이노 공식 사이트 TFT 소개: http://arduino.cc/en/Guide/TFT#.UyhPlfl_vMo
아두이노 IDE 1.0.5에 포함된 아두이노 TFT 라이브러리는 화면에 그리는 역할을 하는 Adafruit GFX 그래픽 라이브러리와 TFT LCD의 드라이버 IC 칩을 컨트롤하는 Adafruit ST7735 드라이버 라이브러리를 상속해서 구현했습니다.
Adafruit 에서 그래픽 라이브러리를 제작할 때 Adafruit GFX 라이브러리를 통해 화면에 그리는 방법을 통일하고, LCD 종류/드라이버 IC 등의 차이가 있는 부분은 각각에 맞는 드라이버 라이브러리를 사용하도록 만들었습니다. 따라서 아두이노 TFT 라이브러리는 Adafruit GFX + ST7735 driver 의 조합으로 ST7735 드라이버를 사용하는 TFT LCD를 지원합니다. 가지고 있는 LCD의 종류가 다른 경우 아래 사이트에서 맞는 드라이버 라이브러리를 찾아야합니다.
Adafruit 그래픽 라이브러리 소개 : http://learn.adafruit.com/adafruit-gfx-graphics-library/overview
여기에 해당되는 라이브러리라면 비교적 쉽게 GFX + 드라이버 라이브러리 설치만으로 사용이 가능합니다.
SPI 연결을 위해 SPI Library, SD 카드를 사용하고자 한다면 SD 라이브러리가 추가로 필요합니다.
2. TFT LCD 연결, 사용 방법
160×128 해상도의 LCD의 경우 좌표는 좌상단(0, 0) ~ 우하단(159, 127) 입니다. setRotation(0) 함수를 호출하면 세로모드로 사용할 수 있습니다
. 현재 설정된 화면 사이즈는 screen.width()
, screen.height()
함수로 구할 수 있습니다.
TFT LCD는 16비트(2byte) 컬러를 출력할 수 있으며 RGB565 를 사용합니다. 즉 R(5bit), G(6bit), B(5bit) 입니다. 라이브러리에서는 다른 어플리케이션과의 호환성을 고려해서 RGB 에 1byte 씩 3byte를 이용해서 표현합니다.(0~255) 내부에서 필요할 때 적절히 16비트(2byte)로 변환해서 사용합니다.
TFT LCD는 주로 SPI 인터페이스를 지원하며 (I2C인 경우도 있음) 하드웨어 SPI를 사용하거나 핀을 직접 지정해서 사용할 수 있습니다. TFT LCD에 포함된 SD 카드를 사용할 경우 반드시 하드웨어 SPI를 사용해야 합니다.
아두이노 보드별로 SPI 핀 배치가 틀리므로 아래 링크에서 연결 방법을 확인하세요.
http://arduino.cc/en/Guide/TFTtoBoards#.Uyhcx_l_vMo
3. 소스 코드 (스케치)
#include <TFT.h> // Hardware-specific library #include <SPI.h> #define CS 10 #define DC 9 #define RESET 8 // pin definition for the Leonardo // #define CS 7 // #define DC 0 // #define RESET 1 TFT myScreen = TFT(CS, DC, RESET); void setup(){ myScreen.begin(); myScreen.background(0,0,0); // clear the screen with black delay(1000); // pause for dramatic effect } void loop(){ myScreen.stroke(255, 0, 0); // set the stroke color to red myScreen.line(0, 10, myScreen.width(), 10); // draw a line across the screen delay(1000); myScreen.noStroke(); // don't draw a line around the next rectangle myScreen.fill(0,255,0); // set the fill color to green myScreen.rect(0,20,myScreen.width(),10); //draw a rectangle across the screen delay(1000); myScreen.fill(0,0,255); // set the fill color to blue myScreen.stroke(255,255,255); // outline the rectangle with a white line myScreen.rect(0,45,myScreen.width(),45); // draw a fat rectangle delay(1000); myScreen.background(0,0,0); // clear the screen before starting again delay(1000); }
앞서 말씀드린대로 아두이노 TFT 라이브러리는 Adafruit 에서 제공하는 라이브러리를 기반으로 했기 때문에 Adafruit 라이브러리의 함수를 그대로 사용할 수 있습니다. 문자, 이미지 출력을 위한 방법은 아래 Adafruit GFX 함수 사용법을 참고하세요.
Adafruit GFX: http://learn.adafruit.com/adafruit-gfx-graphics-library/graphics-primitives
이미지 출력 방법: https://www.hardcopyworld.com/?p=335
TFT 사용방법에 대해 상세히 설명하는 아래 페이지들도 참고하세요.
TFT LCD Test Run: http://atmega.magictale.com/1119/tft-lcd-module-test-run/
TFT LCD Screen Guide (and SD card): http://www.instructables.com/id/Your-Image-on-an-Arduino-TFT-LCD-Screen-Guide/