안녕하세요 이번에는 간단하게 OELD에 텍스트를 표시하는것과 기본적으로 제공하는 GraphicsTest 예제를 사용하는 방법에 대해 작성해 보았습니다.
핵심부품아두이노 OLED 정보
부품목록
브레드보드OLED 제어 브레드보드
회로도OLED 제어 회로도
예제사용
자 다음으로 "U8glib"를 검색 합니다. 자 그럼 우선 간단하게 제공하고 있는 예제를 불러와 업로드를 해보겠습니다. 예제를 불러오셨다면 아래 주석을 찾아서 주석을 해제 해주세요 아래와 같이 "//" 를 지우시면 주석이 해제가 됩니다.
예제 영상[아두이노] OLED 제어하기 -GraphicsTest 예제
소스코드
구현 결과이상입니다 감사합니다. 공유하기 게시글 관리 구독하기배씨의 프로그래밍저작자표시
'프로그래밍 > 아두이노[Arduino]&라즈베리파이[Raspberry Pi]' 카테고리의 다른 글[아두이노] OLED[0.96인치(128*64)]에 원하는 그림 출력-NodeMCU포함 (0)2019.05.13[아두이노] 토양수분감지센서로 OLED에 표시[Soil Moisture Sensor] (0)2019.05.03[아두이노] 조이스틱[joystick] 모듈을 사용하여 LED제어하기 (4)2019.04.29[아두이노] 전압센서 모듈을 이용하여 LCD에 센서값 표시하기 (0)2019.04.29[아두이노] 빗물감지센서 모듈을 사용하여 LCD에 센서값을 표시하기 + LED 제어 (0)2019.04.26SSD1306 driver를 IC를 사용하고 128X64 OLED는 동일하지만 만드는 회사마다, Interface가 조금씩 다르기때문에 이부분을 잘 선택해 줍니다. 주석처리된 부분을 해제시켜 줍니다. 저같은 경우는 아래 녹색 글씨 부분입니다.
#include <Arduino.h> #include <U8x8lib.h> #ifdef U8X8_HAVE_HW_SPI #endif
U8X8_SSD1306_128X64_NONAME_SW_I2C u8x8(/* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE); // OLEDs without Reset of the Display
void setup(void) -. Adafruit SD1306이용하기 파일>예제>adafruit SSD1306>ssd1306_128x64_i2c
code가 길어서 적지 않았습니다 바로 실행해 보세요. 화면이 아무것도 출력이 되지 않으면, 아래의 코드레서 Address를 check해주세요. 0x3D > 0x3C로 변경해보고 실행 if(!display.begin(SSD1306_SWITCHAPVCC,0x3D)) { // Address 0x3D for 128x64
0x3D, 0x3C로도 안되면 Address를 아래의 방법으로 찾아서 변경해 주시면 됩니다. https://www.youtube.com/watch?v=dVqv3LvJAJY https://garagegeekguy.blogspot.com/2018/10/how-to-find-out-address-of-your-i2c.html
간단히 설명하면 아래의 code를 복사해 넣고 실행한후에 툴>시리얼모니터를 실행하면 I2C에 붙어있는 Device의 address를 알수 있습니다.
void setup() { Wire.begin(); Serial.begin(9600); while (!Serial); Serial.println("\nI2C Scanner"); }
void loop() { byte error, address; int nDevices; Serial.println("Scanning...");
nDevices = 0; for(address = 1; address < 127; address++ ) { // The i2c_scanner uses the return value of // the Write.endTransmisstion to see if // a device did acknowledge to the address. Wire.beginTransmission(address); error = Wire.endTransmission();
if (error == 0) { Serial.print("I2C device found at address 0x"); if (address<16) Serial.print("0"); Serial.print(address,HEX); Serial.println(" !"); nDevices++; } else if (error==4) { Serial.print("Unknow error at address 0x"); if (address<16) Serial.print("0"); Serial.println(address,HEX); } } if (nDevices == 0) Serial.println("No I2C devices found\n"); else Serial.println("done\n"); delay(5000); // wait 5 seconds for next scan } ●결과물 좌(u8g2 라이브러리 이용), 중,우(Adafruit SSD1306, Adafruit GFX 라이브러리 이용)
●마치며 단순 text출력은 비교적 쉬운데, 그래픽 관련 API들을 사용하려면, 이제부터는 공부가 필요합니다. 그리고 화면 구성을 어떻게 사용할지도 구상해야 합니다. 라이브러리마다 github에서 매뉴얼도 제공하기때문에, 참조하시어 본인의 제작물에 적용을 해보시면 되겠습니다.
https://github.com/olikraus/u8g2/wiki https://github.com/adafruit/Adafruit_SSD1306 https://github.com/adafruit/Adafruit-GFX-Library
나머지 참조할만한 내용들입니다.
https://m.blog.naver.com/PostView.nhn?blogId=namgoocha&logNo=220670935526&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F |