#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);
}