Arduino Uno 로 0.91인치 I2C OLED (128 X 32 해상도) 를 사용해서 U8glib 범용 라이브러리와
Adafruit 라이브러리를 사용해서 문자와 그래픽 등을 출력해 보는 프로젝트 입니다
OLED(Organic Light Emitting Diodes)란?
유기발광다이오드 또는 유기EL이라고도 부르며 형광성 유기화합물에 전류가 흐르면 빛을 내는
전계 발광 현상을 이용하여 스스로 빛을 내는 '자체발광형 유기물질'을 일컫습니다
OLED의 특징
낮은 전압에서 구동이 가능하고 얇은 박형으로 만들 수 있으며
넓은 시야각과 빠른 응답속도를 갖고 있어 일반 LCD와 달리 바로 옆에서 보아도 화질이 변하지 않으며 화면에 잔상이 남지 않습니다
또한 소형 화면에서는 LCD이상의 화질과 단순한 제조공정으로 인한 유리한 가격 경쟁력을 갖습니다
휴대전화나 카오디오, 디지털카메라와 같은 소형기기의 디스플레이에 주로 사용하고 있습니다
<0.91인치 I2C OLED SSD1306 이미지>
본 테스트에서는 0.91인치 I2C타입의 128 X 32 해상도의 SSD1306
SSD1306.pdf OLED를 사용하였습니다
SPI 타입도 있으나 I2C 타입이 배선하기도 편하고 사용하기 편리해서 I2C 타입으로 진행하였습니다
SPI타입도 조금만 검색해 보면 많은 레퍼런스가 공유되고 있기때문에 어렵지 않게 테스트 해볼수 있습니다
I2C통신 방식으로 단 2개의 라인 (SCL, SDA)으로 통신할수 있으며, 3.3V & 5V 동작전압으로 사용이 가능합니다
사용된 부품
아두이노 우노 (Italy)
0.91인치 I2C OLED 화이트
브래드보드
점퍼케이블
구성 배선도
사용된 라이브러리
0.91인치 OLED는 u8glib 범용 그래픽 라이브러리 나 Adafruit 라이브러리 를 사용해서 구동시킬수 있습니다
u8glib 범용 라이브러리
Adafruit 라이브러리
Adafruit-GFX-Library-master.zip
u8glib 범용 라이브러리로 테스트 하고자 할때는 위 첨부된 U8glib 압축파일을 다운로드 받아서 설치하거나 위 링크에서 다운로드 하면 됩니다
Adafruit 라이브러리로 테스트 하고자 할때는 위 첨부된 2개의 압축파일을 다운로드 받아서 설치하거나 위 링크에서 다운로드 하면 됩니다
라이브러리 추가 방법은 Arduino IDE 설치하기 포스팅을 참조해 주세요
1번 u8glib 범용 라이브러리 사용
u8glib 범용 라이브러리를 설치 후 기본 예제인 examples 폴더의 HelloWorld 예제를 스케치 업로드 합니다
라이브러리 설치 후 Arduino IDE 에서 파일--->예제--->U8glib--->examples--->HelloWorld 순으로 클릭
그러면 'u8g' was not declared in this scope 라는 에러 메세지가 뜨면서 컴파일 에러가 날것 입니다
이는 예제코드에 u8g 라는 변수가 선언되지 않았기 때문에 나오는 에러 메세지입니다
u8g 라이브러리는 범용 라이브러리로 SSD1306 뿐만 아니라 상당히 다양한 드라이버 콘트롤러를 지원하기 때문에
예제코드에 드라이버 콘트롤러에 관한 변수가 따로 선언되어 있지 않습니다
예제코드마다 사용하는 LED 드라이버에 맞는 u8g 변수를 선언해 주는 내용을 추가해 주어야 합니다
https://code.google.com/p/u8glib/wiki/device
위 링크를 참조해서 사용하는 OLED 드라이버 컨트롤러 이름 과 해상도 그리고 생성자 를 확인해야 합니다
SSD1306 드라이버를 사용하고 해상도는 128 X 32 이고 I2C 타입이기 때문에 디바이스 이름은
u8g_dev_ssd1306_128x32_i2c 가 되고 생성자는
U8GLIB_SSD1306_128X32(U8G_I2C_OPT_NONE) 가 됩니다
생성자를 확인했으니 예제코드 전역변수 선언부에
U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE);
를 추가해 주면 됩니다
전역변수가 무엇인지 잘 모른다면 위 파란색 글씨 링크를 참고 하도록 하며, 그래도 잘 모르겠다면 실행하고자 하는 예제코드의 U8glib.h 라이브러리를 불러오는 코드 #include "U8glib.h" 바로 아래 부분에
U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); 를 추가해 주면 됩니다 (하단 프로젝트 동영상 마지막 부분 참조) 그리고 나서 스케치 업로드를 하면 정상적으로 컴파일 에러 없이 스케치 업로드가 됩니다
좀 번거롭기도 하고 용량이 커서 스케치 업로드하는데 시간도 좀 오래 걸리지만 u8g 라이브러리는 그만큼 다양한 드라이버를 지원하기 때문에 막강합니다
프로젝트 동영상 - u8glib 범용 라이브러리 사용
2번 Adafruit 라이브러리 사용
Adafruit 라이브러리로 테스트 하고자 할때는 위 첨부된 Adafruit-GFX-Library-master 와 Adafruit_SSD1306-master 2개의 압축파일을 다운로드 받아서 설치합니다
라이브러리 설치 후 Arduino IDE 에서 파일--->예제--->Adafruit_SSD1306--->examples--->ssd1306_128x32_i2c 순으로 클릭합니다
U8glib 라이브러리에 비하면 간단하게 테스트 해볼수 있습니다
프로젝트 동영상 - Adafruit 라이브러리 사용
0.96인치 I2C OLED 도 동일하게 전역변수 선언 후 U8glib 라이브러리로 테스트 할수 있습니다
0.96 인치 I2C OLED는 128X64 해상도 이므로 아래와 같이 전역변수를 수정해서 추가해 줍니다
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE);
구성 배선도
u8glib 범용 라이브러리를 설치 후 기본 예제인 examples 폴더의 HelloWorld 예제를 스케치 업로드 합니다
라이브러리 설치 후 Arduino IDE 에서 파일--->예제--->U8glib--->examples--->HelloWorld 순으로 클릭
예제코드 전역변수 선언부에 U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); 를 추가해 주면 됩니다
전역변수가 무엇인지 잘 모른다면 위 파란색 글씨 링크를 참고 하도록 하며, 그래도 잘 모르겠다면 실행하고자 하는 예제코드의 U8glib.h 라이브러리를 불러오는 코드 #include "U8glib.h" 바로 아래 부분에
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); 를 추가해 주면 됩니다 (하단 프로젝트 동영상 마지막 부분 참조) 그리고 나서 스케치 업로드를 하면 정상적으로 컴파일 에러 없이 스케치 업로드가 됩니다
프로젝트 동영상 - u8glib 범용 라이브러리 사용
'Arduino(아두이노) 활용 강좌' 카테고리의 다른 글
Arduino Uno 로 MAX7219 (8X8) 도트 매트릭스 모듈 5개를 이용해 이동하는 문자 출력해 보기 (0) | 2018.02.01 |
---|---|
Arduino Uno 로 A3967 Easy Driver 를 사용해서 2상 4선 바이폴라 스테핑모터 제어해 보기 (0) | 2018.01.09 |
Arduino Uno 로 0.96 I2C OLED와 DHT11 온습도 센서를 사용해서 OLED 에 실내 온습도 출력해 보기 (0) | 2018.01.05 |
Arduino Uno 로 MMA8452Q 3축 가속도센서를 사용해 위치 변화에 따른 출력값 확인해 보기 (0) | 2018.01.04 |
Arduino Uno 로 수위감지센서와 LED, 부저를 사용해서 간단한 수위 경보기 만들어 보기 (0) | 2017.12.25 |
댓글