//YouTube|Tech at Home
#include "DHT.h"
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
LiquidCrystal_I2C lcd(0x27,16,2);
#define DHTPIN 2
#define DHTTYPE DHT22 // DHT 11
DHT dht(DHTPIN, DHTTYPE);
int in1 = 3;
int in2 =4;
int en1 = 6;
int Mode_SW = 7;
int data,Mode;
void setup() {
Serial.begin(9600);
dht.begin();
lcd.init();
//lcd.begin(); //nu merge cu lcd.begin
lcd.backlight();
lcd.setBacklight(HIGH);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7,INPUT_PULLUP);
}
void loop()
{
Mode = digitalRead(Mode_SW);
if(Mode == HIGH) //Manual mode
{
lcd.setCursor(0,0);
lcd.print("Mode:Manual");
while(Serial.available() > 0)
{
data = Serial.read();
//Serial.println(data); //Uncomment this line to print the incomming data
if(data == 'C') //FAN Off
{
lcd.setCursor(0,1);
lcd.print("Fan:OFF ");
delay(10);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
analogWrite(6, 0);
}
else if(data == 'D') //FAN Low
{
lcd.setCursor(0,1);
lcd.print("Fan:LOW ");
delay(10);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
analogWrite(6, 100);
}
else if(data == 'E') //FAN High
{
lcd.setCursor(0,1);
lcd.print("Fan:HIGH ");
delay(10);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
analogWrite(6, 255);
}
}
}
if(Mode == LOW) // Automatic mode
{
lcd.setCursor(0,0);
lcd.print("Mode:Auto ");
delay(700);
// Read temperature as Celsius (the default)
float t = dht.readTemperature();
lcd.setCursor(0,1);
lcd.print("Temperature:");
lcd.print(t);
lcd.print("C");
delay(20);
if(t <= 28)
{
digitalWrite(3, LOW);
digitalWrite(4, LOW);
analogWrite(6, 0);
}
else if((t > 28) && (t <= 30))
{
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
analogWrite(6, 100);
}
else if(t > 30)
{
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
analogWrite(6, 255);
}
}
}