컴퓨터/아두이노 라즈베리파이
[아두이노] OLED
우유식빵
2021. 11. 15. 06:40
아두이노 우노(Arduino UNO R3)를 기준으로 작성했다.
아두이노 메가를 기준으로 하고싶다면 이 글을 따라하고 아래 게시글의 문제해결 2번을 참고하면 된다.
https://waytocse.tistory.com/77
OLED을 통해 원하는 문구나 그림을 표시할 수 있다.
내가 사용한 OLED는 전에 ESP로 OLED동작시켰을 때와 같은
[ELECROW] 128x64 OLED 디스플레이 블루 [DO1286496BY]를 사용했다.
이녀석은 3.3v~5v사이 전압을 주면된다. 3.3v라고 코드에 써두긴했는데
문제없이 5v도 잘돌아간다.
//sda - a4
//scl - a5
//3.3v
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
int temp = 29;
int humi = 45;
int soil = 23;
void setup() {
Serial.begin(9600);
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3D for 128x64
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
}
void loop() {
delay(2000);
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0, 10);
display.println("T:"+(String)temp+"C ");
display.println("H:"+(String)humi+"% ");
display.println("S:"+(String)soil+"% ");
display.display();
temp = temp + 1;
humi = humi + 1;
soil = soil + 1;
}
위 코드는 2초 간격으로 temp,humi,soil이라는 변수 값을 증가시켜가며
OLED에 표시하는 코드이다.
SCL,SDA에 유의해서 회로연결을 해준 후
실행시켜보면
이렇게 2초간격으로 값이 증가되어 값을 다르게 표시하는 모습을 볼 수 있다.