#include <Servo.h>
#include "DHT.h"
#define DHTTYPE DHT22
DHT dht(13, DHTTYPE);
float h, t;
long timePrint=0;
int ledT=12;
int ledH=33;
int btnFan=25;
int btnFanBefore=0;
long timePress1=0;
int btnH=32;
int btnHBefore=0;
long timePress2=0;
// mô phỏng Fan
int boolFan=0;
int pos = 180;
int increment = -1;
Servo myservo;
void setup() {
Serial.begin(115200);
myservo.attach(26);
dht.begin();
pinMode(btnFan, INPUT);
pinMode(btnH, INPUT);
pinMode(ledT, OUTPUT);
pinMode(ledH, OUTPUT);
}
void loop() {
int reading1=digitalRead(btnFan);
int reading2=digitalRead(btnH);
t = dht.readTemperature();
h = dht.readHumidity();
//Serial print
if (millis() - timePrint >= 2000) {
Serial.print("Nhiệt độ: ");
Serial.println(t);
Serial.print("Độ ẩm: ");
Serial.println(h);
timePrint = millis();
}
//chuc nang 1
if(t>25){
digitalWrite(ledT, HIGH);
if(reading1&&reading1!=btnFanBefore)
timePress1=millis();
if(reading1&&millis()-timePress1>30&timePress1>0){
timePress1=-1;
boolFan=!boolFan;
}
}
else {
digitalWrite(ledT, LOW);
boolFan=0;
}
if(t>25&&boolFan){
fanRun();
}
//chuc nang 2
if(reading2&&reading2!=btnHBefore){
timePress2=millis();
}
if(h>70){
if(reading2&&millis()-timePress2>30&&timePress2>0){
timePress2=-1;
digitalWrite(ledH,HIGH);
}
}
else
digitalWrite(ledH, LOW);
btnFanBefore=reading1;
btnHBefore=reading2;
}
void fanRun(){
if (pos < 0 || pos > 180)
increment *= -1;
pos += increment;
myservo.write(pos);
delay(2);
}