간편하게 사용할 수 있는 큰 사이즈의 LCD가 필요하여 알리에서 ILI9488 드라이버를 사용하는 LCD를 구매하여 테스트해 보았습니다.
이 LCD를 구매한 이유는 SPI 인터페이스를 사용하여 비교적 적은 라인수의 연결로 쉽게 동작시킬수 있으며 화면 영역이 가로 55.68mm x 세로 83.52mm로 커서 많은 정보를 디스플레이 할 수 있기 때문입니다.
이 LCD 관련 정보는 아래 내용을 참고 하시기 바랍니다.
총 14개의 핀이 있으며 해당핀은 아래 핀맵을 참고하시면 됩니다.
위 LCD 정보를 보면 동작 전압이 3.3V입니다. 일반적으로 아두이노 우노는 5V를 사용하므로 직접적으로 연결하면 안되고 레벨쉬프터등으로 연결하던지 아니면 3.3V에서 동작하는 STM 계열 보드나, 아두이노 프로 미니 8MHz 버전과 같이 I/O 전압이 3.3V인 보드에서 테스트하면 됩니다.
제 경우 간단하게 디스플레이 테스트를 위해 3.3V에서 동작되는 아두이노 프로 미니 8MHz 버전을 사용하여 테스트 해 볼 예정입니다. 우선 LCD와 아두이노 프로 미니를 연결해야 하는데 위 핀맵 이미지를 참고하여 연결합니다.
제 경우 위 이미지와 같이 연결하였는데 커넥터의 핀 이름은 아래 확대된 부분을 참고하시면 됩니다. 아래 이미지는 위 회로도를 바탕으로 실제 연결된 하드웨어 구성 이미지입니다.
이제 하드웨어 구성을 마쳤으니 소프트웨어를 작성해야 합니다.
저는 아래 사이트에서 제공해 주는 ILI9488 드라이버를 사용하여 테스트 하였습니다.
위 사이트에 접속하여 아래쪽의 Program Down의 3.5 inch SPI Module Package(ILI9488)를 다운로드 받으면 됩니다. 다운로드를 받은 후 3.5inch_SPI_Module_ILI9488_MSP3520_V1.1/1-Demo/Demo_Arduino/Install libraries 안에 있는 아래 3개의 디렉터리를 아두이노 IDE의 라이브러에 설치해 줍니다.
라이브러리 설치가 완료되었으면 같이 제공되는 몇 가지 예제를 테스트 해 봅니다.
회로도에 맞게 예제 소스의 LCD 초기화 코드를 수정 후 테스트 되었습니다.
LCDWIKI_SPI mylcd(ILI9488_18, 10, 9, 8, A3);
기본적으로 전체화면에 R/G/B 컬러를 보여주거나 라인, 사각형등의 디스플레이는 정상적으로 잘 동작되었습니다.
제 경우 LCD에 이미지를 보여줘야 해서 이미지 테스트를 추가적으로 해 보았습니다.
C# 프로그램으로 이미지를 RGB565 데이터로 변환시켜 주는 프로그램을 작성하여 테스트해 보았는데 아래 이미지처럼 정상적인 이미지로 디스플레이가 안되는 문제가 발생하였습니다.
좀 더 수정해 보니 아래 이미지처럼 또렷하지는 않지만 대략적인 이미지는 보여줍니다.
디버깅을 해 보면서 알게된 점은 디스플레이되는 RGB565의 2바이트 데이터가 Byte Swap이 되어야 정상적인 이미지로 디스플레이되는것을 알게 되었습니다. 아래 코드와 같이 GB데이터를 먼저 처리하고 RG데이터를 다음 배열에 넣어야 합니다.
rgb565_data[byte_count++] = (byte)((int)(color.G & 0x1C) << 3 | (color.B & 0xF8) >> 3); rgb565_data[byte_count++] = (byte)((int)(color.R & 0xF8) | (color.G & 0xE0) >> 5);
이렇게 C# 코드를 수정한 후 제대로된 이미지를 디스플레이 할 수 있었습니다.
코드를 정리 후 최종 테스트된 이미지입니다.
이렇게 ILI9488 드라이버를 사용한 LCD의 기본 테스트를 맞쳤습니다.
테스트 후 드라이버용 다운로드 파일의 압축을 푼 디렉터리를 살펴보던중 3.5inch_SPI_Module_ILI9488_MSP3520_V1.1/7-Character&Picture_Molding_Tool/Tools-Image2Lcd 2.9/Image2Lcd 2.9(破解版) 안에 이미지 변환 프로그램이 이미 있는것을 알게 되었습니다.
저처럼 고생할 필요없이 Image2Lcd 프로그램을 사용하면 쉽게 이미지 변환을 할 수 있으니 참고하시기 바랍니다.
좀 더 디렉터리를 살펴보았으면 테스트 시간을 절약할 수 있었을텐데 아쉽네요. 아무튼 디스플레이가 정상적으로 동작되고 LCD도 사이즈가 커서 잘 사용할 수 있을것 같습니다.