안녕하세요 이번에는 간단하게 OELD에 텍스트를 표시하는것과 기본적으로 제공하는
GraphicsTest 예제를 사용하는 방법에 대해 작성해 보았습니다.
핵심부품
부품목록
브레드보드
회로도
예제사용
스케치 -> 라이브러리 포함하기 -> 라이브러리 관리에 들어갑니다.
자 다음으로 "U8glib"를 검색 합니다.
찾은 이후 설치를 해주세요.
자 그럼 우선 간단하게 제공하고 있는 예제를 불러와 업로드를 해보겠습니다.
라이브러리를 설치한 이후 파일 -> 예제 -> U8glib -> GraphicsTest를 클릭.
예제를 불러오셨다면 아래 주석을 찾아서 주석을 해제 해주세요
(해제하지 않으면 실행이 안될수도 있습니다.)
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0); // I2C / TWI
아래와 같이 "//" 를 지우시면 주석이 해제가 됩니다.
예제 영상
[아두이노] OLED 제어하기 -GraphicsTest 예제
소스코드
자 그러면 이제는 OLED에 원하는 text를 간단하게 표시해 보겠습니다.
소스코드는 아래와 같습니다.
구현 결과
이상입니다 감사합니다.
공유하기
게시글 관리
구독하기배씨의 프로그래밍저작자표시
- 카카오스토리
- 트위터
- 페이스북
'프로그래밍 > 아두이노[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
#include <SPI.h>
#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)
{
u8x8.begin();
u8x8.setPowerSave(0);
}
void loop(void)
{
u8x8.setFont(u8x8_font_chroma48medium8_r);
u8x8.drawString(0,0,"Helloo World!");
delay(2000);
}
-. 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를 아래의 방법으로 찾아서 변경해 주시면 됩니다.
//www.youtube.com/watch?v=dVqv3LvJAJY
//garagegeekguy.blogspot.com/2018/10/how-to-find-out-address-of-your-i2c.html
간단히 설명하면
아래의 code를 복사해 넣고 실행한후에 툴>시리얼모니터를 실행하면 I2C에 붙어있는 Device의 address를 알수 있습니다.
#include <Wire.h>
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에서 매뉴얼도 제공하기때문에, 참조하시어 본인의 제작물에 적용을 해보시면 되겠습니다.
//github.com/olikraus/u8g2/wiki
//github.com/adafruit/Adafruit_SSD1306
//github.com/adafruit/Adafruit-GFX-Library
나머지 참조할만한 내용들입니다.
//m.blog.naver.com/PostView.nhn?blogId=namgoocha&logNo=220670935526&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F