#include "DHTesp.h" // <-- นำเข้า library ที่ต้องใช้
DHTesp dhtSensor; // <-- "
int counter = 0; // <-- ประกาศตัวแปรสำหรับนับเวลา ในที่นี้จะสร้างให้มันนับเวลาแทนตัว delay เพราะถ้าใช้ delay มันจะไม่ให้โค้ดอื่นทำงานได้จนกว่าจะหมดเวลา
void setup() {
Serial.begin(115200); // <-- เริ่มต้น serial monitor ที่ความถี่ 115200 bps (bits per second)
dhtSensor.setup(14, DHTesp::DHT22); // <-- ตั้ง pin ที่ 14 เป็นตัวรับข้อมูลจาก sensor
pinMode(12, OUTPUT); // <-- ตั้ง pin 12 เป็น output (ไฟเหลืองกับขาว)
pinMode(13, OUTPUT); // <-- ตั้ง pin 13 เป็น output (พัดลม)
digitalWrite(12, HIGH); // <-- ตั้งให้ pin 12 ติดเป็นค่าเริ่มต้น (ไฟเหลืองกับขาว)
}
void loop() {
//อุณหภูมิ
TempAndHumidity data = dhtSensor.getTempAndHumidity(); // <-- ดึงข้อมูลจาก sensor
int temp = data.temperature; // <-- นำค่าที่ดึงมาใส่ในตัวแปร temp
Serial.println("Temp: " + String(temp) + "°C"); // <-- แสดงอุณหภูมิใน serial monitor
temp > 36 ? digitalWrite(13, HIGH) : digitalWrite(13, LOW); // <-- ถ้าอุณหภูมิมากกว่า 36 เปิดพัดลม ถ้าไม่มากกว่าให้ปิดพัดลม (pin 13)
//เงื่อนไข ? สิ่งที่ให้ทำเมื่อเข้าเงื่อนไข : สิ่งที่ให้ทำเมื่อไม่เข้าเงื่อนไข;
// ^^^ เผื่อครูถาม อันบนนี้เป็นการเขียน if else แบบย่อ
//เปิด-ปิด ไฟ
counter++; // <-- นับตัวจับเวลาไปทีละ 1
if (counter == 120) { digitalWrite(12, LOW); } // <-- ถ้าเวลาถึง 120 วิ ปิดไฟ (pin 12)
if (counter == 300) { digitalWrite(12, HIGH); counter = 0; } // <-- ถ้าเวลาถึง 300 วิ เปิดไฟ (pin 12) & reset ตัวนับเวลา
//counter display
Serial.println(String(counter)); // <-- แสดงตัวจับเวลาใน serial monitor
//delay 1s
delay(1000); // <-- ตั้งหน่วงเวลา 1 วิ
}
/* โค้ดเก่า
void void() {
// put your main code here, to run repeatedly:
digitalWrite(12,HIGH);
delay(120000);// this speeds up the simulation
digitalWrite(12,LOW);
delay(180000);
}
*/