#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#define LEDROSSO 0
#define LEDVERDE 2
#define PULSANTEROSSO 16
#define PULSANTEVERDE 4
int temporosso;
int tempoverde;
int casorosso;
int casoverde;
int ritardorosso;
int ritardoverde;
LiquidCrystal_I2C LCD = LiquidCrystal_I2C(0x27,20,4);
DHT dht22(23, DHT22);
void gestionerosso();
void gestioneverde();
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Mpoah");
LCD.init();
LCD.backlight();
LCD.setCursor(0,0);
LCD.print("Mpoah");
dht22.begin();
pinMode(LEDROSSO, OUTPUT);
pinMode(LEDVERDE, OUTPUT);
pinMode(PULSANTEROSSO, INPUT);
pinMode(PULSANTEVERDE, INPUT);
temporosso = 0;
tempoverde = 0;
ritardorosso = 0;
ritardoverde = 0;
casorosso = 1;
casoverde = 1;
}
void loop() {
float temperatura;
float umidita;
delay(1);
gestionerosso();
gestioneverde();
temperatura = dht22.readTemperature();
umidita = dht22.readHumidity();
char temp[10];
char um[10];
dtostrf(temperatura, 1, 2, temp);
dtostrf(umidita, 1, 2, um);
LCD.setCursor(0,1);
LCD.print("Temperatura: ");
LCD.print(temp);
LCD.setCursor(0,2);
LCD.print("Umidita': ");
LCD.print(um);
}
void gestionerosso(){
switch(casorosso)
{
case 1:
if(digitalRead(PULSANTEROSSO))
{
temporosso = 10000;
digitalWrite(LEDROSSO, HIGH);
casorosso = 12;
ritardorosso = 5;
Serial.println("2");
}
break;
case 12:
ritardorosso--;
if(ritardorosso == 0)
{
casorosso = 2;
}
break;
case 2:
temporosso = 10000;
if(!digitalRead(PULSANTEROSSO))
{
casorosso = 23;
ritardorosso = 5;
Serial.println("3");
}
break;
case 23:
ritardorosso--;
if(ritardorosso == 0)
{
casorosso = 3;
}
break;
case 3: // led acceso pulsante rilasciato
temporosso = temporosso -1;
// temporosso--;
if(temporosso == 0)
{
digitalWrite(LEDROSSO, LOW);
casorosso = 1;
Serial.println("1");
}
if(digitalRead(PULSANTEROSSO))
{
digitalWrite(LEDROSSO, LOW);
temporosso = 0;
casorosso = 34;
ritardorosso = 5;
Serial.println("4");
}
break;
case 34:
ritardorosso--;
if(ritardorosso == 0)
{
casorosso = 4;
}
break;
case 4: // led spento pulsante premuto
if(!digitalRead(PULSANTEROSSO))
{
casorosso = 41;
ritardorosso = 5;
Serial.println("1");
}
break;
case 41:
ritardorosso--;
if(ritardorosso == 0)
{
casorosso = 1;
}
break;
}
}
void gestioneverde(){
switch(casoverde)
{
case 1:
if(digitalRead(PULSANTEVERDE))
{
tempoverde = 10000;
digitalWrite(LEDVERDE, HIGH);
casoverde = 12;
ritardoverde = 5;
Serial.println("2");
}
break;
case 12:
ritardoverde--;
if(ritardoverde == 0)
{
casoverde = 2;
}
break;
case 2:
tempoverde = 10000;
if(!digitalRead(PULSANTEVERDE))
{
casoverde = 23;
ritardoverde = 5;
Serial.println("3");
}
break;
case 23:
ritardoverde--;
if(ritardoverde == 0)
{
casoverde = 3;
}
break;
case 3: // led acceso pulsante rilasciato
tempoverde = tempoverde -1;
// tempoverde--;
if(tempoverde == 0)
{
digitalWrite(LEDVERDE, LOW);
casoverde = 1;
Serial.println("1");
}
if(digitalRead(PULSANTEVERDE))
{
digitalWrite(LEDVERDE, LOW);
tempoverde = 0;
casoverde = 34;
ritardoverde = 5;
Serial.println("4");
}
break;
case 34:
ritardoverde--;
if(ritardoverde == 0)
{
casoverde = 4;
}
break;
case 4: // led spento pulsante premuto
if(!digitalRead(PULSANTEVERDE))
{
casoverde = 41;
ritardoverde = 5;
Serial.println("1");
}
break;
case 41:
ritardoverde--;
if(ritardoverde == 0)
{
casoverde = 1;
}
break;
}
}