#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <LiquidCrystal.h>
#include "DHTesp.h"
#include <LiquidCrystal_I2C.h>
const int DHT_PIN = 5;
DHTesp dhtSensor;
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
#define I2C_ADDR 0x27
#define LCD_COLUMNS 20
#define LCD_LINES 4
#define SCREEN_WIDTH 128 // pixel ความกว้าง
#define SCREEN_HEIGHT 64 // pixel ความสูง
// กำหนดขาต่อ I2C กับจอ OLED
#define OLED_RESET -1 //ขา reset เป็น -1 ถ้าใช้ร่วมกับขา Arduino reset
Adafruit_SSD1306 OLED(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
int var = 0; // ตัวแปรสำหรับทดสอบแสดงผล
void setup() {
lcd.begin(16,2);
Serial.begin(9600);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
if (!OLED.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // สั่งให้จอ OLED เริ่มทำงานที่ Address 0x3C
Serial.println("SSD1306 allocation failed");
} else {
Serial.println("ArdinoAll OLED Start Work !!!");
}
}
void loop() {
TempAndHumidity data = dhtSensor.getTempAndHumidity();
Serial.println("Temp: " + String(data.temperature, 2) + "°C");
Serial.println("Humidity: " + String(data.humidity, 1) + "%");
Serial.println("---");
delay(2000); // Wait for a new reading from the sensor (DHT22 has ~0.5Hz sample rate)
OLED.clearDisplay(); // ลบภาพในหน้าจอทั้งหมด
OLED.setTextColor(WHITE, BLACK); //กำหนดข้อความสีขาว ฉากหลังสีดำ
OLED.setCursor(0, 10); // กำหนดตำแหน่ง x,y ที่จะแสดงผล
OLED.setTextSize(1); // กำหนดขนาดตัวอักษร
OLED.println("Temp: " + String(data.temperature, 2) + "°C");
OLED.setCursor(0, 20);
OLED.setTextSize(1);
OLED.println("Humidity: " + String(data.humidity, 1) + "%");
lcd.setCursor(0, 0); // กำหนดให้ เคอร์เซอร์ อยู่ตัวอักษรตำแหน่งที่0 แถวที่ 1 เตรียมพิมพ์ข้อความ
lcd.print("Humidity: " + String(data.humidity, 1) + "%");
lcd.setCursor(0, 1); // กำหนดให้ เคอร์เซอร์ อยู่ตัวอักษรตำแหน่งที่0 แถวที่ 1 เตรียมพิมพ์ข้อความ
lcd.print("Temp: " + String(data.temperature, 2) + "°C");
// OLED.clearDisplay(); // ลบภาพในหน้าจอทั้งหมด
// OLED.setTextColor(WHITE, BLACK); //กำหนดข้อความสีขาว ฉากหลังสีดำ
// OLED.setCursor(0, 20); // กำหนดตำแหน่ง x,y ที่จะแสดงผล
// OLED.setTextSize(1); // กำหนดขนาดตัวอักษร
// OLED.println("Humidity: " + String(data.humidity, 1) + "%");
OLED.display(); // สั่งให้จอแสดงผล
delay(500);
}