상세 컨텐츠

본문 제목

014. Arduino 아두이노 - 0.96" OLED 모듈 사용하기

embedded/arduino

by ZelKun 2016. 2. 10. 09:30

본문

반응형

OLED(Organic Light Emitting Diode)를 이용해볼거에요

128x64 픽셀로 예전 노키아 휴대폰에 쓰던 액정 모듈이라네요

   

   

OLED

arduino

GND

GND

VCC

5v

SDA(Serial Data Line)

A4 & SDA

SCL(Serial CLock)

A5 & SCL

SDA, SCL 은 A4,A5 혹은 아두이노 좌측상단의 SDA, SCL 에다 연결하면 됩니다

참고로 SDA, SCL 은 A4, A5로 이미 예약(UNO기준)되 있는거라 변경할 수 없습니다

   

A4, A5

SDA, SCL

SDA, SCL 을 사용하는걸 보면 I2C 통신을 하는것 같네요(업로드 속도가 느리죠)

   

사진출처 : http://henrysbench.capnfatz.com/henrys-bench/u8glib-arduino-oled-tutorial-1-hello-world-on-steroids/

   

사용하는 OLED모델이랑은 좀 다르지만 좌표에 대해 잘나온거 같아 첨부합니다

   

OLED 라이브러리가 있지만 잘안되니(잘못찾았나..) u8glib 를 이용할거에요

u8glib : https://code.google.com/archive/p/u8glib/

   

아두이노용 u8glib 라이브러리를 다운받습니다

https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/u8glib/u8glib_arduino_v1.14.zip

   

직접 써볼 수 있겠지만 일단 예제를 해볼거에요

화려한 그래픽을 볼수 있으니까요




라이브러리를 추가하고

파일 -> 예제 -> u8glib -> GraphicsTest 를 불러옵니다

   

바로 업로드하면 에러를 뿜어내니 수정을 해야해요

   

U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI

부분을 찾아 주석을 해제 합니다

   

다른 I2C 부분의 주석을 해제해도 나오긴 하는데 일그러지게 보입니다

해상도가 128x64라는 거죠

   

이제 직접 사용해 봐야겠죠?

우선 테스트를 위해 Hello, world! 를 출력합니다

#include "U8glib.h"

U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE);

   

void setup() {

}

   

void loop() {

    u8g.firstPage();

    do{

        u8g.setFont(u8g_font_unifont);

        u8g.setPrintPos(0,10);

        u8g.print("Hello, world");

        u8g.drawStr(0,30, "Hello, world!");

    }while(u8g.nextPage());

}

u8g.setPrintPos(x, y) 좌표이동

u8g.print("Hello, world!"); 문자 출력입니다

u8g.drawStr(0,30, "Hello, world!"); 좌표와 문자를 동시에 쓸수도 있어요

   




실제 조도센서를 이용해서 센서값도 출력해봅니다

#include "U8glib.h"

U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE);

   

void setup() {

}

   

void loop() {

    int d = analogRead(A0);

    u8g.firstPage();

    do{

        u8g.setFont(u8g_font_unifont);

        u8g.setPrintPos(0,10);

        u8g.print("Hello, world!");

        u8g.drawStr(0,30, "cds:");

        u8g.setPrintPos(35,30); //픽셀단위라 x를 작게 잡아주면 글씨가 겹칩니다

        u8g.print(d);

    }while(u8g.nextPage());

}

   

참고 : http://tronixlabs.com/display/oled/graphic/0-96-128x64-oled-module-yellow-and-blue-australia/

참고 : http://henrysbench.capnfatz.com/henrys-bench/u8glib-arduino-oled-tutorial-1-hello-world-on-steroids/

반응형

관련글 더보기

댓글 영역