이것저것

[Arduino] OLED 모듈과 온습도 센서 사용

pental 2021. 10. 9. 01:47

[ 소스코드 ]

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include "DHT.h"       // DHT.h 라이브러리를 포함한다
#define DHTPIN 2      // DHT핀을 2번으로 정의한다(DATA핀)
#define DHTTYPE DHT11  // DHT타입을 DHT11로 정의한다
DHT dht(DHTPIN, DHTTYPE);  // DHT설정 - dht (디지털2, dht11)
#define SCREEN_WIDTH 128 // OLED 가로 넓이, 픽셀 사이즈
#define SCREEN_HEIGHT 64 // OLED 세로 넓이, 픽셀 사이즈
#define OLED_RESET  -1 // 리셋핀 #(또는 -1 아두이노와 리셋핀을 연결하는 경우)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
 
void setup() {
  Serial.begin(9600); // 디버깅 메시지 출력을 위해 시리얼 모니터 활성화
  // SSD1306_SWITCHCAPVCC = 내부 3.3V 차지 펌프 회로를 켜둔다.
  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C))
  {
    Serial.println(F("SSD1306 Not Connected"));
    for(;;); // SSD1306에 주소할당이 되지 않으면 무한루프
  }
}
 
void loop()
{
  display.clearDisplay();
  int h = dht.readHumidity();  // 변수 h에 습도 값을 저장 
  int t = dht.readTemperature();  // 변수 t에 온도 값을 저장
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(0,27);
  display.println((String) "Humidity: " + h + (String) "%");
  display.println((String) "Temperature: " + t + (String) " C");
  display.display();
  delay(2000);
  display.clearDisplay();
}