0. ์ค๋น
๊ตฌ์ฑํ : ์๋์ด๋ ธ UNO, YwRobot ์ฌ์ OLED i2C 128x32(DIS080015)
1. ์ฐ๊ฒฐ
OLED | ์๋์ด๋ ธ |
GND | GND |
Vcc | 5V |
SDA | A5 |
SCL | A4 |
2. ์๋์ด๋ ธ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ถ๊ฐ
ํด๋น ์ ํ์ ์๋์ด๋ ธ U8glib๋ฅผ ์ง์ํ๋ค.
https://code.google.com/archive/p/u8glib/downloads
์์ ๋งํฌ์์ u8glib ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ค์ด๋ฐ๊ณ , ์๋์ด๋ ธ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ถ๊ฐํด๋๋๋ค.
3. ์ฝ๋
#include "U8glib.h"
U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE);
void draw(void) {
// graphic commands to redraw the complete screen should be placed here
u8g.setFont(u8g_font_unifont);
//u8g.setFont(u8g_font_osb21);
u8g.drawStr( 0, 22, "Hello World!");
}
void setup(void) {
// flip screen, if required
// u8g.setRot180();
// set SPI backup if required
//u8g.setHardwareBackup(u8g_backup_avr_spi);
// assign default color value
if ( u8g.getMode() == U8G_MODE_R3G3B2 ) {
u8g.setColorIndex(255); // white
}
else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) {
u8g.setColorIndex(3); // max intensity
}
else if ( u8g.getMode() == U8G_MODE_BW ) {
u8g.setColorIndex(1); // pixel on
}
else if ( u8g.getMode() == U8G_MODE_HICOLOR ) {
u8g.setHiColorByRGB(255,255,255);
}
}
void loop(void) {
// picture loop
u8g.firstPage();
do {
draw();
} while( u8g.nextPage() );
// rebuild the picture after some delay
delay(50);
}
์ ์ฝ๋ 3๋ฒ์งธ ๋ผ์ธ์ "U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE);"์ u8g ์ ์ญ๋ณ์๋ฅผ ์ด๊ธฐํํด์ฃผ๋ ๋ถ๋ถ์ด๋ค. ์ด ๋, ๊ฐ OLED ๋๋ฐ์ด์ค์ ๋ง๋๋ก ์ค์ ํด์ค์ผํ๋ค.
OLED ์ ํ ์ฌ์์ ๋ณด๋ฉด ๋๋ผ์ด๋ฒ์นฉ์ด SSD1306์์ ์ ์ ์๋ค.
https://code.google.com/archive/p/u8glib/wikis/device.wiki
๋งํฌ์์ SSD1306์ 128x32์ ์์ฑ์๋ฅผ ํ์ธํ๋ค.
"SSD1306_128x32"๋ก ๊ฒ์์ ํ์ฌ SSD1306 128x32์์ i2Cํต์ ์ผ ๋ ์ฌ์ฉํ๋ ์์ฑ์๋ฅผ ์ ์ธํด์ผํ๋ค.
์ฐธ๊ณ ๋กํ ์ฝ๋๋ ์๋์ ๊ฐ๋ค.
๋จ, ์๋์ ์ฝ๋๋ 128x64 OLED ๋ฒ์ ์ด๋ฏ๋ก ํ์ฌ ๋ด OLED์ ์ค์ ์ ๋ง๊ฒ ์์ฑ์๋ฅผ ๋ณ๊ฒฝํ์๋ค.
http://www.hardcopyworld.com/gnuboard5/bbs/board.php?bo_table=tech_etc&wr_id=15
์๋์ ์ฌ์ง์ฒ๋ผ "Hello World"๊ฐ ์คํ๋จ์ ์ ์ ์๋ค.
๋๊ธ