?>

Hard Copy World

HCW

Input, display and etc

Home > Info >

Input, display and etc

TFT LCD 모듈 사용방법

페이지 정보

작성자 최고관리자 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 작성일14-10-05 00:46 조회5,454회 댓글1건

본문

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 연결, 사용 방법

160x128 해상도의 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

이미지 출력 방법: http://www.hardcopyworld.com/ngine/aduino/index.php/archives/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/

[이 게시물은 최고관리자님에 의해 2014-10-05 00:47:19 기술자료 - 각종 센서에서 이동 됨]
추천 0
  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기

댓글목록

하드카피님의 댓글

하드카피 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일

Arduino mega용 TFT LCD 실드를 사용하는 경우 아래 링크의 자료를 참고하세요.
http://hardcopyworld.com/gnuboard5/bbs/board.php?bo_table=freeboard&wr_id=38