ESP WROOM32로 OLED를 제어해보고자한다.
내가 사용한 OLED는 아래와 같다.
https://www.devicemart.co.kr/goods/view?no=1384209
1. 라이브러리 설치
먼저 OLED를 제어하기 위해서 필요한 라이브러리를 설치해야한다.
라이브러리를 추가해주기 위해 라이브러리 관리에 들어간다.
ssd1306을 검색하고 adafruit에서 만든 것을 선택한다. 대충 최신 버전을 설치해준다.
gfx를 검색하고 역시 adafruit의 Adafruit GFX Library를 설치한다.
Arduino IDE에서 ESP WROOM 32를 제어하는 환경설정은 아래 게시글을 참고하면 된다.
https://waytocse.tistory.com/51
2. ESP WROOM 32와 OLED회로 연결하기
위와 같이 연결하면 된다. OLED가 I2C인경우 SDA가 GPIO21, SCL이 GPIO22에 연결되어야 한다.
3. Hello, World!로 OLED 작동 확인하기
/*********
Rui Santos
Complete project details at https://randomnerdtutorials.com
*********/
#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);
void setup() {
Serial.begin(115200);
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3D for 128x64
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
delay(2000);
display.clearDisplay();
display.setTextSize(5);
display.setTextColor(WHITE);
display.setCursor(0, 10);
// Display static text
display.println("Hello, world!");
display.display();
}
void loop() {
}
위와 같은 코드로 ESP WROOM 32를 연결해서 실행한다.
위와 같이 업로드가 완료됐다. 모습을 살펴보자
다음과 같이 나타난다.
폰트 크기가 너무 작은 것 같아서 display.setTextSize(5);로 바꾸고 실행했더니
이번에는 너무 크다. 그래서 3으로 바꿨더니
이번에도 너무 크다. 그래서 2로 바꾸니 딱 적당했다.
나는 OLED를 통해 온습도 값을 보여주고자 하므로 println값을 바꾸어서 이렇게 나타나도록 했다.
온습도 값과 토양 습도 값을 센서를 통해 받은 후 OLED로 보여주고 싶기 때문에
값을 업데이트 할 때마다 OLED로 업데이트 하는 모습을 보여줄 수 있는 지 확인 할 필요가 있었다.
그래서 loop()문에다 display코드를 짠 후 print할 string값을 유동적으로 바꾸는 식으로 시험삼아 코드를 작성해보았다.
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
int temp = 29;
int humi = 45;
int soil = 23;
void setup() {
Serial.begin(115200);
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
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;
}
그 결과
참고한 게시글.
https://randomnerdtutorials.com/esp32-ssd1306-oled-display-arduino-ide/
'컴퓨터 > 아두이노 라즈베리파이' 카테고리의 다른 글
[아두이노] DHT11 온습도 센서 + 타이머 기능 활용 (0) | 2021.11.15 |
---|---|
임베디드시스템설계실험 텀프 - 손 크기에 따른 세정제 양 분출 조절기 (0) | 2021.11.14 |
ESP WROOM 32 아두이노IDE에서 사용하는 법 (0) | 2021.09.15 |
라즈베리파이4 시작하기 - OS다운부터 부팅까지 초기 설정 (0) | 2021.09.14 |
아두이노 12v 워터펌프 모스펫 회로도 연결법과 소스코드 (2) | 2021.09.01 |
댓글