이 글에서는 아두이노로 TFT 화면에 이미지를 표시하는 방법을 보여드립니다. 아래 튜토리얼을 읽거나 유튜브 영상을 시청하세요.
배선도
아두이노 우노와 1.17인치 TFT LCD 연결도
TFT 핀
아두이노 핀
5V (LCD)
5V
MISO (LCD)
핀 12
SCK (LCD)
핀 13
MOSI (LCD)
핀 11
LCD CS (LCD)
핀 10
SD CS (LCD)
핀 4
D/C (LCD)
핀 9
RESET (LCD)
핀 8
BL (LCD)
핀 8 (또는 5V로 백라이트 항상 켬)
GND (LCD)
GND
SD 카드 이미지 준비사항
이미지는 .bmp 파일이어야 함
해상도는 160 x 128 픽셀 이하 (화면 해상도)
파일명은 반드시 arduino.bmp로 하고 SD 카드 최상위 루트에 위치
SD 카드 장착 시 아두이노와 TFT 화면은 전원이 차단된 상태여야 함
SD 카드에 arduino.bmp 파일 배치 예시
아두이노 코드
아래 코드를 복사해 아두이노에 업로드하세요.
실행 결과
아두이노 IDE의 시리얼 모니터를 열면 .bmp 이미지가 TFT 화면에 표시됩니다. 또는 영상으로 결과를 확인하세요.
TFT 화면에 표시된 이미지
코드
아두이노 우노로 TFT 화면에 이미지 표시하기 스케치
// CreaTechWeb: Displaying an image on a TFT screen with arduino
// https://createchweb.com/displaying-an-image-on-a-tft-screen-with-arduino/
#include
#include
#include // 아두이노 LCD 라이브러리
// 우노용 핀 정의
#define sd_cs 4
#define lcd_cs 10
#define dc 9
#define rst 8
// 레오나르도용 핀 정의 (주석 처리됨)
// #define sd_cs 8
// #define lcd_cs 7
// #define dc 0
// #define rst 1
TFT TFTscreen = TFT(lcd_cs, dc, rst);
PImage logo; // 화면에 그릴 이미지 변수
void setup() {
TFTscreen.begin();
TFTscreen.background(255, 255, 255); // 흰색 배경
TFTscreen.stroke(0, 0, 255); // 파란색 텍스트
TFTscreen.println();
TFTscreen.println(F("Arduino TFT Bitmap Example"));
TFTscreen.stroke(0, 0, 0); // 검은색 텍스트
TFTscreen.println(F("Open serial monitor"));
TFTscreen.println(F("to run the sketch"));
Serial.begin(9600);
while (!Serial) { } // 네이티브 USB 포트용 대기
TFTscreen.background(255, 255, 255);
Serial.print(F("Initializing SD card..."));
if (!SD.begin(sd_cs)) {
Serial.println(F("failed!"));
return;
}
Serial.println(F("OK!"));
TFTscreen.begin();
TFTscreen.background(255, 255, 255);
logo = TFTscreen.loadImage("arduino.bmp");
if (!logo.isValid()) {
Serial.println(F("error while loading arduino.bmp"));
}
}
void loop() {
if (!logo.isValid()) return; // 이미지 로드 실패 시 아무것도 안 함
Serial.println(F("drawing image"));
// 이미지가 화면 밖으로 나가지 않도록 랜덤 위치 계산
int x = random(TFTscreen.width() - logo.width());
int y = random(TFTscreen.height() - logo.height());
TFTscreen.image(logo, x, y); // 이미지 그리기
delay(1500); // 1.5초 대기 후 다시 그리기
}
코드 설명
SPI, SD, TFT 라이브러리 사용 (아두이노 기본 내장)
TFTscreen.loadImage("arduino.bmp")로 SD 카드에서 BMP 이미지 로드