Arduino를 이용하여 ESP32로 Round LCD 구동하기
Round LCD 는 240x240 일반적으로 알리에 팔고 있다, 하지만 다른 LCD는 SPI를 많이 사용하는데,
이 LCD는 8비트 패러럴 버스를 사용하여 구동해야 한다.
GFX 라이브러리를 사용하기 위하여 Arduino에 아래 라이브러리( GFX Library for Arduino )를 찾아서 인스톨한다.
아래 타이밍도는 8bit 패러럴 LCD를 이용하기 위한 참고할 타이밍도 이다.
이미 작성된 라이브러리를 이용한다 하더라도 원리는 파악을 하고 넘어가는 것이 좋다. 기본적인 타이밍은......
GPIO와 LCD의 연결은 위와 같이 연결을 하였다.
ESP32에서 GPIO34 ~ 39는 출력으로 설정할 수 없다고 스펙에서 본 것 같다. 어디서 캡처를 해두었는데 어디서 캡쳐를 해두었는지 기억은 잘 나지 않지만, 혹시 다른 분들이 테스트해보실 때 안된다면 GPIO를 확인해보셔도 좋을 듯한다.
#include <Arduino_GFX_Library.h>
Arduino_DataBus *bus = new Arduino_ESP32PAR8(26 /* DC */, 25 /* CS */, 27 /* WR */, 14 /* RD */, \
15 /* D0 */, 2 /* D1 */, 0 /* D2 */, 4 /* D3 */, 16 /* D4 */, 17 /* D5 */, 5 /* D6 */, 18 /* D7 */);
Arduino_GFX *gfx = new Arduino_ILI9331(bus, 12 /* RST */, 0 /* rotation */, false /* IPS */);
uint16_t x, y, color, toggle;
void setup(void)
{
Serial.begin(115200);
Serial.println("start program !!! ");
randomSeed(1);
gfx->begin();
gfx->fillScreen(YELLOW);
gfx->fillCircle(150, 150, 20, GREEN);
gfx->fillCircle(50, 50, 20, RED);
gfx->fillCircle(50, 100, 20, PINK);
gfx->fillRect(50, 50, 100, 100, GREEN);
}
void loop()
{
x = random(240);
y = random(240);
color = random(60000);
toggle ^= 1;
if(toggle)
{
gfx->fillCircle(x, y, 5, color);
}
else
{
gfx->fillRect(x, y, 5, 5, color);
}
delay(25);
}
계속 실행해놓으면 한 가지 색상으로 가득 차게 되고 그다음부터 동그라미, 네모 가 생성되지 않는다.
아무래도 ILI9331 은 테스트하는 사람들이 많지 않은 거 같다.
Arduino 소스상에서는 그다지 문제가 생길 부분은 보이지 않지만, 증상이 그렇게 나오니 Arduino_GFX를 의심도 해봐야 한다.
일단 LCD 가 동작하는가를 알아보려고 작업한 부분이니, 여기서 그만 넘어가고 추후에는 다른 방법을 알아봐야 할 것 같다.
ESP IDF를 직접 설치해서 작업도 가능하니 한번 알아봐야 되겠다.
'MCU > ESP32' 카테고리의 다른 글
ESP32 ESP IDF 설치하기 VSCode ( win11 ) (0) | 2023.02.08 |
---|---|
ESP32 + WS2812B ( Adafruit NeoPixel ) (0) | 2021.05.07 |
Arduino 1.8.13 Font 안보일 경우 (0) | 2021.03.31 |