#include <Wire.h>
#include <Servo.h>
#include <LiquidCrystal_I2C.h>
Servo myservo;
#include <DHT.h>;
#define DHTPIN 5
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
int RED = 11;
LiquidCrystal_I2C lcd(0x27, 16, 2);
int hmd;
int tmp;
int ptmpin = 0;
int val;
int ledval=0;
const int switchPin = 2; // switch for blue led
int switchState = 0;
void setup()
{
Serial.begin(9600);
myservo.attach(7);
myservo.attach(7);
pinMode(RED, OUTPUT);
dht.begin();
digitalWrite(RED, LOW);
pinMode(switchPin, INPUT);
lcd.init();
lcd.begin(16,2);
lcd.backlight();
}
void loop()
{
// On
switchState = digitalRead(switchPin);
if(switchState==LOW){
switchState = 1;
digitalWrite(RED, HIGH);
Serial.println("IGNITION ON");
Serial.println('\n');
lcd.setCursor(0, 1);
lcd.print("IGNITION: ON ");
lcdon();
th();
// temperature
val = analogRead(ptmpin);
val = map(val, 0, 1023, 0, 180);
if(tmp <= 25 && hmd <= 50 && val == 0){
// Servo spins forward at full speed for 1 second.
myservo.write(180);
delay(500);
myservo.write(0);
// potentiometer
val = analogRead(ptmpin);
val = map(val, 0, 1023, 0, 180);
if (val != 0) {
myservo.write(val);
delay(15);
}
else {
myservo.write(0);
th();
delay(500);
}
}
else{
// potentiometer
val = analogRead(ptmpin);
val = map(val, 0, 1023, 0, 180);
if (val != 0) {
myservo.write(val);
delay(15);
}
else {
myservo.write(0);
th();
delay(500);
}
}
}
// Off
else if (switchState==HIGH){
switchState = 0;
digitalWrite(RED, LOW);
Serial.println("IGNITION OFF");
lcd.setCursor(0, 1);
lcd.print("IGNITION: OFF");
// potentiometer
val = analogRead(ptmpin);
val = map(val, 0, 1023, 0, 180);
myservo.write(val);
}
}
void th(){
hmd = dht.readHumidity();
tmp= dht.readTemperature();
}
void lcdon(){
lcd.setCursor(0, 0);
lcd.print("Temp:");
lcd.setCursor(9, 0);
lcd.print("Hum: ");
lcd.setCursor(5, 0);
lcd.print(tmp);
lcd.setCursor(13, 0);
lcd.print(hmd);
lcd.setCursor(15, 0);
lcd.print("%");
}