안녕하세요.
이번에는 OLED 스크린인
SSD1306을 사용해보도록 하겠습니다.
먼저 저의 SSD1306은
SCL, SDA, VCC, GND로 되어있고
128*64 해상도입니다.
SSD1306이라고 해서 이렇게 핀이 적은게 아니라 더 많은 것도 있습니다.
데이터시트에는
해상도 : 128*64
시야각 : >160도
동작전압 : 3.3V
작동 온도 : -30~70℃
모듈 사이즈 : 27*27*4.1 mm
나옵니다.
이 OLED를 사용하기 위해서는 라이브러리가 필요합니다.
https://bintray.com/olikraus/u8glib/Arduino
여기서 라이브러리를 받아주세요.
그리고 아두이노에 라이브러리를 추가시켜줍니다.
모르시면 한번 보고 적용시켜주세요.
그리고
예제에서 u8glib를 들어가면 이렇게 나옵니다.
모든 소스마다 이런게 있는데요.
이거는 디바이스 리스트입니다.
이 라이브러리에서 지원하는 스크린은 많네요.
이제 필요한 것은 위에 이것입니다.
이것이 저의 스크린 디바이스이기 때문에 필요합니다.
주석처리 되어있는것을 주석을 풀어주세요
그래야지 u8g라는 변수를 사용할 수 있습니다.
이러면 모든 예제를 사용이 가능해요.
이제 아두이노에 OLED를 연결 해야되는데요.
나노에는 SCL, SDA 핀이 보이질 않습니다.
(어디다가... 끼우라고?)
인터넷을 찾아보니
SCL - A5, SDA - A4
이렇게 나오네요.
이렇게 끼우시면 됩니다.
(우노, 메가, 미니는 따로 SCL, SDA 핀이 있던데.. 나노는 왜!!!!)
HelloWorld 예제로 출력을 해보았습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 | /* screen rotation */ void undoRotation(void) { u8g_UndoRotation(&u8g); } void setRot90(void) { u8g_SetRot90(&u8g); } void setRot180(void) { u8g_SetRot180(&u8g); } void setRot270(void) { u8g_SetRot270(&u8g); } /* screen scaling */ void undoScale(void) { u8g_UndoScale(&u8g); } void setScale2x2(void) { u8g_SetScale2x2(&u8g); } /* picture loop */ void firstPage(void) { cbegin(); u8g_FirstPage(&u8g); } uint8_t nextPage(void) { return u8g_NextPage(&u8g); } /* system commands */ uint8_t setContrast(uint8_t contrast) { cbegin(); return u8g_SetContrast(&u8g, contrast); } void sleepOn(void) { u8g_SleepOn(&u8g); } void sleepOff(void) { u8g_SleepOff(&u8g); } /* graphic primitives */ void setColorEntry(uint8_t color_index, uint8_t r, uint8_t g, uint8_t b) { u8g_SetColorEntry(&u8g, color_index, r, g, b); } void setHiColor(uint16_t rgb) { u8g_SetHiColor(&u8g, rgb); } void setHiColorByRGB(uint8_t r, uint8_t g, uint8_t b) { u8g_SetHiColorByRGB(&u8g, r, g, b); } void setRGB(uint8_t r, uint8_t g, uint8_t b) { u8g_SetRGB(&u8g, r, g, b); } void setColorIndex(uint8_t color_index) { u8g_SetColorIndex(&u8g, color_index); } uint8_t getColorIndex(void) { return u8g_GetColorIndex(&u8g); } void setDefaultForegroundColor(void) { u8g_SetDefaultForegroundColor(&u8g); } void setDefaultBackgroundColor(void) { u8g_SetDefaultBackgroundColor(&u8g); } void setDefaultMidColor(void) { u8g_SetDefaultMidColor(&u8g); } u8g_uint_t getWidth(void) { return u8g_GetWidth(&u8g); } u8g_uint_t getHeight(void) { return u8g_GetHeight(&u8g); } uint8_t getMode(void) { return u8g_GetMode(&u8g); } void drawPixel(u8g_uint_t x, u8g_uint_t y) { return u8g_DrawPixel(&u8g, x, y); } void drawHLine(u8g_uint_t x, u8g_uint_t y, u8g_uint_t w) { u8g_DrawHLine(&u8g, x, y, w); } void drawVLine(u8g_uint_t x, u8g_uint_t y, u8g_uint_t h) { u8g_DrawVLine(&u8g, x, y, h); } void drawLine(u8g_uint_t x1, u8g_uint_t y1, u8g_uint_t x2, u8g_uint_t y2) { u8g_DrawLine(&u8g, x1, y1, x2, y2); } void drawFrame(u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h) { u8g_DrawFrame(&u8g, x, y, w, h); } void drawRFrame(u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, u8g_uint_t r) { u8g_DrawRFrame(&u8g, x, y, w, h,r); } void drawBox(u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h) { u8g_DrawBox(&u8g, x, y, w, h); } void drawRBox(u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, u8g_uint_t r) { u8g_DrawRBox(&u8g, x, y, w, h,r); } void drawCircle(u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t opt = U8G_DRAW_ALL) { u8g_DrawCircle(&u8g, x0, y0, rad, opt); } void drawDisc(u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t opt = U8G_DRAW_ALL) { u8g_DrawDisc(&u8g, x0, y0, rad, opt); } void drawEllipse(u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rx, u8g_uint_t ry, uint8_t opt = U8G_DRAW_ALL) { u8g_DrawEllipse(&u8g, x0, y0, rx, ry, opt); } void drawFilledEllipse(u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rx, u8g_uint_t ry, uint8_t opt = U8G_DRAW_ALL) { u8g_DrawFilledEllipse(&u8g, x0, y0, rx, ry, opt); } void drawTriangle(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2) { u8g_DrawTriangle(&u8g, x0, y0, x1, y1, x2, y2); } /* bitmap handling */ void drawBitmap(u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, u8g_uint_t h, const uint8_t *bitmap) { u8g_DrawBitmap(&u8g, x, y, cnt, h, bitmap); } void drawBitmapP(u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, u8g_uint_t h, const u8g_pgm_uint8_t *bitmap) { u8g_DrawBitmapP(&u8g, x, y, cnt, h, bitmap); } void drawXBM(u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, const uint8_t *bitmap) { u8g_DrawXBM(&u8g, x, y, w, h, bitmap); } void drawXBMP(u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, const u8g_pgm_uint8_t *bitmap) { u8g_DrawXBMP(&u8g, x, y, w, h, bitmap); } /* font handling */ void setFont(const u8g_fntpgm_uint8_t *font) {u8g_SetFont(&u8g, font); } int8_t getFontAscent(void) { return u8g_GetFontAscent(&u8g); } int8_t getFontDescent(void) { return u8g_GetFontDescent(&u8g); } int8_t getFontLineSpacing(void) { return u8g_GetFontLineSpacing(&u8g); } u8g_uint_t drawStr(u8g_uint_t x, u8g_uint_t y, const char *s) { return u8g_DrawStr(&u8g, x, y, s); } u8g_uint_t drawStr90(u8g_uint_t x, u8g_uint_t y, const char *s) { return u8g_DrawStr90(&u8g, x, y, s); } u8g_uint_t drawStr180(u8g_uint_t x, u8g_uint_t y, const char *s) { return u8g_DrawStr180(&u8g, x, y, s); } u8g_uint_t drawStr270(u8g_uint_t x, u8g_uint_t y, const char *s) { return u8g_DrawStr270(&u8g, x, y, s); } u8g_uint_t drawStrP(u8g_uint_t x, u8g_uint_t y, const u8g_pgm_uint8_t *s) { return u8g_DrawStrP(&u8g, x, y, s); } u8g_uint_t drawStr90P(u8g_uint_t x, u8g_uint_t y, const u8g_pgm_uint8_t *s) { return u8g_DrawStr90P(&u8g, x, y, s); } u8g_uint_t drawStr180P(u8g_uint_t x, u8g_uint_t y, const u8g_pgm_uint8_t *s) { return u8g_DrawStr180P(&u8g, x, y, s); } u8g_uint_t drawStr270P(u8g_uint_t x, u8g_uint_t y, const u8g_pgm_uint8_t *s) { return u8g_DrawStr270P(&u8g, x, y, s); } void setFontPosBaseline(void) { u8g_SetFontPosBaseline(&u8g); } void setFontPosBottom(void) { u8g_SetFontPosBottom(&u8g); } void setFontPosCenter(void) { u8g_SetFontPosCenter(&u8g); } void setFontPosTop(void) { u8g_SetFontPosTop(&u8g); } void setFontRefHeightText(void) { u8g_SetFontRefHeightText(&u8g); } void setFontRefHeightExtendedText(void) { u8g_SetFontRefHeightExtendedText(&u8g); } void setFontRefHeightAll(void) { u8g_SetFontRefHeightAll(&u8g); } void setFontLineSpacingFactor(uint8_t factor) { u8g_SetFontLineSpacingFactor(&u8g, factor); } u8g_uint_t getStrPixelWidth(const char *s) { return u8g_GetStrPixelWidth(&u8g, s); } u8g_uint_t getStrPixelWidthP(u8g_pgm_uint8_t *s) { return u8g_GetStrPixelWidthP(&u8g, s); } u8g_uint_t getStrWidth(const char *s) { return u8g_GetStrWidth(&u8g, s); } u8g_uint_t getStrWidthP(u8g_pgm_uint8_t *s) { return u8g_GetStrWidthP(&u8g, s); } void setHardwareBackup(u8g_state_cb backup_cb) { u8g_SetHardwareBackup(&u8g, backup_cb); } // support for the F() macro u8g_uint_t drawStr(u8g_uint_t x, u8g_uint_t y, const __FlashStringHelper *s) { return u8g_DrawStrP(&u8g, x, y, (u8g_pgm_uint8_t *)s); } u8g_uint_t drawStr90(u8g_uint_t x, u8g_uint_t y, const __FlashStringHelper *s) { return u8g_DrawStr90P(&u8g, x, y, (u8g_pgm_uint8_t *)s); } u8g_uint_t drawStr180(u8g_uint_t x, u8g_uint_t y, const __FlashStringHelper *s) { return u8g_DrawStr180P(&u8g, x, y, (u8g_pgm_uint8_t *)s); } u8g_uint_t drawStr270(u8g_uint_t x, u8g_uint_t y, const __FlashStringHelper *s) { return u8g_DrawStr270P(&u8g, x, y, (u8g_pgm_uint8_t *)s); } u8g_uint_t getStrPixelWidth(const __FlashStringHelper *s) { return u8g_GetStrPixelWidthP(&u8g, (u8g_pgm_uint8_t *)s); } u8g_uint_t getStrWidth(const __FlashStringHelper *s) { return u8g_GetStrWidthP(&u8g, (u8g_pgm_uint8_t *)s); } /* cursor handling */ void setCursorFont(const u8g_pgm_uint8_t *cursor_font) { u8g_SetCursorFont(&u8g, cursor_font); } void setCursorStyle(uint8_t encoding) { u8g_SetCursorStyle(&u8g, encoding); } void setCursorPos(u8g_uint_t cursor_x, u8g_uint_t cursor_y) { u8g_SetCursorPos(&u8g, cursor_x, cursor_y); } void setCursorColor(uint8_t fg, uint8_t bg) { u8g_SetCursorColor(&u8g, fg, bg); } void enableCursor(void) { u8g_EnableCursor(&u8g); } void disableCursor(void) { u8g_DisableCursor(&u8g); } void drawCursor(void) { u8g_DrawCursor(&u8g); } /* virtual screen */ void setVirtualScreenDimension(u8g_uint_t width, u8g_uint_t height) { u8g_SetVirtualScreenDimension(&u8g, width, height); } uint8_t addToVirtualScreen(u8g_uint_t x, u8g_uint_t y, U8GLIB &child_u8g) { return u8g_AddToVirtualScreen(&u8g, x, y, &child_u8g.u8g); } |
u8glib.h
'Arduino' 카테고리의 다른 글
거리측정 센서 - HC-SR04 (0) | 2016.07.26 |
---|---|
아두이노 스케치 라이브러리 추가하기 (0) | 2016.01.20 |
아두이노로 LED를 켜보자 (0) | 2015.09.04 |
아두이노가 없을 때 사용하자 Fritzing (0) | 2015.09.01 |
오픈소스 하드웨어의 절대 강자 Arduino (0) | 2015.09.01 |