본문 바로가기

트렌드 한눈에 보기/학계 트렌드

아두이노 2.42 inch OLED 테스트

 아두이노를 처음 접했던 것이 언제였더라. 기억은 나지 않지만 상당히 오래전 일이다. 처음에는 완전 개쩌는 아이템인줄 알고 냉큼 연습 키트를 구매했지만, 이내 시들해져서 관심 밖에 두었더랬다. 하지만, 본격적으로 구동하는 제품을 만드려고 할 때는 아두이노만 한 것이 없다.


TLDR: 아두이노 디스플레이 시행착오 정리

1. 디스플레이 구매시 아두이노 호환 여부를 확인할 것

2. 디스플레이가 SPI가 아니라 I2C인지 확인할 것

3. 디스플레이 I2C 주소를 확인할 것


 이번에도 아두이노를 활용해서 제품을 만들고 있다. 특이하게도 디스플레이가 필요하게 되었는데, "특이" 하다고 생각한 이유는, 아두이노로는 단순한 동작(모터 제어라든지 센서 모니터링 정도)만 가능하다고 생각했을 뿐, 그래픽 제어 같은 고오급 기술은 못한다고 생각했기 때문이다.

 

디바이스마트에서 판매하는 디스플레이들

 그래서 처음부터 참 시행착오를 많이 겪었다. 대표적인 예시가 아두이노와 호환되지 않는 디스플레이를 자꾸 검색하고 있던 것이었다. 말 그대로 헛짓거리였다. 디스플레이를 구할 때는 "아두이노와 호환되는지" 부터 확인해야 한다.

 

구매한 OLED 2.42 inch

 아두이노 호환으로 한 차례 필터링한 뒤에는 선택지가 많지 않다. 기껏해야 "터치" 방식이냐, 아니면 그냥 "디스플레이" 방식이냐 정도일 것이다. 굳이 터치까지 필요하지 않다면, 사이즈만 결정해서 바로 I2C 방식 OLED를 구매하면 된다. 방식에는 I2C와 SPI가 있고, 종류에는 OLEDLCD가 있다. 모두 전자가 후자보다 월등히 성능이 우수하다.

 

 문제는 아두이노 OLED 제어가 생각만큼 다양한 시행착오가 쌓여있는 영역이 아니라는 것이다. 컴퓨터쟁이들이 휙휙 검색해보는 stackoverflow 나 stackexchange 같은 커뮤니티도 잘 나오지 않는다. 본 글처럼 개개인이 정리해 놓은 글들을 잘 찾아봐야 하는데, 각자 가진 디스플레이 specification이 모두 다르기에 그것마저 쉽지가 않다.

 

디바이스마트 상품 설명칸

 대표적으로, 아두이노 디스플레이는 해상도(128x64, 128x32 등등...)마다 주소값이 있다. 아두이노로 코드를 올릴 때 해당하는 주소를 잘 찾아서 넣어야하는데, 단순히 "128x64 번지입니다" 하고 명시되어 있지 않다. "0x3C" 따위의 복잡한 이름을 붙이고 있는 것이다. 

 

 더욱 큰 문제는 번지수가 가끔 틀리다는 것이다. 다른 글에서는 번지수를 찾으려고 스캐너 프로그램까지 돌려야한다는데, 0x3C 아니면 0x3D일 확률이 크므로 두 개를 바꿔가며 테스트해보면 된다. 물론 에러가 났을 때 '번지수가 잘못되었는가보다' 하고 파악할 수 있는 능력이 되어야 한다. 

 

실험 결과

 코드를 잘 짜주면, 위와 같이 그럴듯한 결과물을 얻을 수 있다. 디자인은 게임보이에서 착안했는데 상당히 흡족하다. 맘 같아서는 실리콘 패드까지 달아주고 싶지만, 그렇지 못한다는 것이 아쉬울 따름이다.