#include "DHT.h" //เรียกใช้ library ชื่อ DHT
#define DHTPIN 7   //กำหนดขา7 ให้มีชื่อว่าDHTPIN
#define DHTTYPE DHT22  //กำหนดขาDHT22 ให้มีชื่อว่าDHTTYPE
DHT dht(DHTPIN, DHTTYPE);  //ให้โค้ดDHT มีชื่อว่า dht(ขาที่ต่อเซ็นเซอร์, ชนิดของเซ็นเซอร์)

//----------กำหนดค่าในการทำงานของ OLED----------
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128  //กำหนดความสูงของจอว่ามี 128 พิกเซล
#define SCREEN_HEIGHT 64  //กำหนดความกว้างของจอว่ามี 64 พิกเซล
#define SCREEN_ADDRESS 0x3C  //กำหนดที่อยู่ของจอ OLED
#define OLED_RESET     4     //กำหนดขารีเซ็ตของจอ
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);  //ให้โค้ดAdafruit_SSD1306 มีชื่อว่า display(ความกว้าง, ความสูง, &Wire, ขารีเซ็ต)

//-----------------------------
#define relay 2
#define Pot_pin A0
int Pot,Temp_set;

//----------การทำงานเพียงครั้งเดียวเมื่อเริ่มโปรแกรม----------
void setup() {
  Serial.begin(9600);  //เรียกใช้ Serial Monitor ที่บิต 9600
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  //เปิดใช้งานจอ OLED
  dht.begin();  //เปิดใช้งาน DHT
  display.clearDisplay();  //เมื่อเริ่มโปรแกรมให้ทำการล้างหน้าจอ OLED
  pinMode(relay, OUTPUT);
  digitalWrite(relay, 1);
}

//----------การทำงานที่วนซ้ำไปเรื่อยๆ----------
void loop() {
 // float h = dht.readHumidity();  //อ่านค่าความชื้นจากDHT22 โดยเก็บในตัวแปร h
  float t = dht.readTemperature();  //อ่านค่าความอุณหภูมิจากDHT22 โดยเก็บในตัวแปร t

  Pot = analogRead(Pot_pin);
  Temp_set = map(Pot, 0, 1023, 18, 40);

  display.clearDisplay(); 

  display.setTextColor(WHITE, BLACK);
  display.setCursor(0, 0); 
  display.setTextSize(1);
  display.println("== Welcome DHT22 =="); 
  display.setCursor(0, 13); 
  display.setTextSize(1);
  display.println("Fx_Aircondition");
  
  display.setCursor(0, 26); 
  display.setTextSize(1);
  display.print("Temperature = "); display.print(t); display.println(" C");
 // display.print("Humidity    = "); display.print(h); display.println(" %");
  display.setCursor(0, 36); 
  display.setTextSize(1);
  display.print("Temp_set    = "); display.print(Temp_set); display.println(" C");
  display.setCursor(0, 46); 
  display.setTextSize(1);
  display.print("Status      = "); display.println("ON");
  if(t>Temp_set+3){
    digitalWrite(relay, 0);
    display.setCursor(0, 46); 
    display.setTextSize(1);
    display.print("Status      = "); display.println("OFF");
    } else if(t<=Temp_set){
      digitalWrite(relay, 1);
      display.setCursor(0, 46); 
      display.setTextSize(1);
      display.print("Status      = "); display.println("ON");
    }
  
  display.display(); 

 // Serial.print("Humidity: "); Serial.print(h); Serial.print(" %  ");
  Serial.print("Temperature: "); Serial.print(t); Serial.println(" C");
  Serial.print(Temp_set);Serial.print(" / Temp_set = "); Serial.println("OFF");

  delay(1000);
}
$abcdeabcde151015202530354045505560fghijfghij
NOCOMNCVCCGNDINLED1PWRRelay Module