ESP-IDF로 제어하기 전에 먼저 arduino IDE로 해당 3.5 inchi TFT LCD를 제어해보겠다.
ESP32C3 Super mini의 기본적인건 이전 포스팅을 참고하자
https://kksp12y.tistory.com/90
일단 내가 사용하는 하드웨어를 보이겠다.
보드 : ESP32C3 Super Mini
디스플레이 :https://www.ebay.com/itm/204891182194
저것을 제어하기 위해 우리는 해당 디스플레이가 어떤 드라이버를 사용하는지 알아야한다.
해당 디스플레이의 정보를 확인하자
드라이버는 ST7796S를 사용하고, 3.3V ~ 5V 에서 동작한다.
그리고 SPI를 사용한다.
이제 우리는 ST7796드라이버를 제어하는 라이브러리를 만든 사람들을 찾으러 떠나자
나는 다음 라이브러리를 찾았다
https://github.com/Bodmer/TFT_eSPI/tree/master
위 라이브러리는 아두이노IDE에도 있기때문에 굳이 zip로 아두이노IDE에 추가하지 않아도 된다.
추가적으로 우리가 만져야하는게 User_Setup과 User_Setup_Select.h를 우리 보드에 맞게 핀 변경해주고, 드라이버도 우리가 사용하는 걸로 변경해줘야 한다.
설치한 TFT_eSPI 라이브러리 폴더로 가는 방법 ( 컴퓨터 마다 다르겠지만 보통 문서에 Arduino폴더가 있음 )
내 pc -> 문서 -> Arduino -> libraries 안에 있음
User_Setup.h는 다음과 같이 수정했다.
.
.
.
// Only define one driver, the other ones must be commented out
//#define ILI9341_DRIVER // Generic driver for common displays
//#define ILI9341_2_DRIVER // Alternative ILI9341 driver, see https://github.com/Bodmer/TFT_eSPI/issues/1172
//#define ST7735_DRIVER // Define additional parameters below for this display
//#define ILI9163_DRIVER // Define additional parameters below for this display
//#define S6D02A1_DRIVER
//#define RPI_ILI9486_DRIVER // 20MHz maximum SPI
//#define HX8357D_DRIVER
//#define ILI9481_DRIVER
//#define ILI9486_DRIVER
//#define ILI9488_DRIVER // WARNING: Do not connect ILI9488 display SDO to MISO if other devices share the SPI bus (TFT SDO does NOT tristate when CS is high)
//#define ST7789_DRIVER // Full configuration option, define additional parameters below for this display
//#define ST7789_2_DRIVER // Minimal configuration option, define additional parameters below for this display
//#define R61581_DRIVER
//#define RM68140_DRIVER
#define ST7796_DRIVER
//#define SSD1351_DRIVER
//#define SSD1963_480_DRIVER
//#define SSD1963_800_DRIVER
//#define SSD1963_800ALT_DRIVER
//#define ILI9225_DRIVER
//#define GC9A01_DRIVER
.
.
.
// For NodeMCU - use pin numbers in the form PIN_Dx where Dx is the NodeMCU pin designation
#define TFT_MISO 5 // Automatically assigned with ESP8266 if not defined
#define TFT_MOSI 6 // Automatically assigned with ESP8266 if not defined
#define TFT_SCLK 4 // Automatically assigned with ESP8266 if not defined
#define TFT_CS 7 // Chip select control pin D8
#define TFT_DC 3 // Data Command control pin
#define TFT_RST 2 // Reset pin (could connect to NodeMCU RST, see next line)
.
.
.
// #define SPI_FREQUENCY 1000000
// #define SPI_FREQUENCY 5000000
// #define SPI_FREQUENCY 10000000
// #define SPI_FREQUENCY 20000000
//#define SPI_FREQUENCY 27000000
//#define SPI_FREQUENCY 40000000
// #define SPI_FREQUENCY 55000000 // STM32 SPI1 only (SPI2 maximum is 27MHz)
#define SPI_FREQUENCY 80000000
.
.
.
나머진 그냥 그대로 두고 배선은 다음과 같다.
* 참고 ( 내가 직접 올린 글인데, 보드 호환성 때문에 반복적인 재부팅이 일어나 도움 요청을 하였고, 다음을 통해 오류해결이 되었으니 반복적인 재부팅이 일어날 경우 esp32보드 패키지의 버전을 2.0.13으로 낮추자)
https://forum.arduino.cc/t/display-error-problems-using-st7796s-drivers/1340217/4
이렇게 진행하고, TFT_graphicstest_one_lib.ino 예제를 실행하자
(코드의 길이가 길어서 github 주소 남겨둠)
그럼 다음과 같이 실행됨을 알 수 있다.
다음 포스팅에서는 디스플레이를 이용해 원하는 것을 띄워보도록 하겠다
'ESP' 카테고리의 다른 글
ESP32C3 Super Mini / ST7796S TFT LCD -3 (0) | 2025.01.12 |
---|---|
ESP32C3 Super Mini / SD리더기 (0) | 2025.01.11 |
ESP32C3 Super Mini / ST7796S TFT LCD -2 (0) | 2025.01.09 |
ESP-IDF를 사용하자 (0) | 2025.01.07 |
ESP32C3 SuperMini -1 (0) | 2024.12.28 |