/* gestione della trasmissione del codice per l'apertura di una serratura elettronica
* la seguente tabella logica per un eventuale ampliamento delle funzione della
* chiave eletronica
* tasto tasto1 azione
0 0 nop
0 1 porta1
1 0 porta2
1 1 finestra
*/

const int ledgiallo2=6;
const int tasto=12;
const int tasto1=13;

const int dato0=2;
const int dato1=3;

String dato="";
int stato_tasto=0;
int stato_tasto1=0;
String ID="PrZNnN57A28h269O";
String risp_id="OK PrZNnN57A28h269O";
int ritardo=400;
int i=0;
int caso=0;
String mes=" ";
String mes0="aiuto mondo verdura apri la porta";
String mes1="aiuto mondo verdura chiudi la porta";
String mes2="aiuto mondo verdura apri la finestra";
void setup() {
Serial.begin(9600);

pinMode(dato0,OUTPUT);
pinMode(dato1,OUTPUT);
pinMode(ledgiallo2,OUTPUT);
pinMode(tasto,INPUT);
pinMode(tasto1,INPUT);
digitalWrite(dato0,0);
digitalWrite(dato1,0);
}

void loop()
{
if(Serial.available()>0)
{
dato=Serial.readString();
if (dato==risp_id)
{
Serial.print(mes0);
}
}
else
{
stato_tasto=digitalRead(tasto);
stato_tasto1=digitalRead(tasto1);


if ( stato_tasto==0 && stato_tasto1==0 )
{
caso=0;
digitalWrite(dato0,0);delay(50);digitalWrite(dato1,0);
}
else
{
if ( stato_tasto==1 && stato_tasto1==0)
{
caso=1;mes=mes0;


digitalWrite(dato0,1);delay(50);digitalWrite(dato1,0);
}
else
{

if ( stato_tasto==0 && stato_tasto1==1 )
{
caso=2;mes=mes1;
digitalWrite(dato0,0);delay(50);digitalWrite(dato1,1);
}
else
{
if ( stato_tasto==1 && stato_tasto1==1 )
{
caso=3;mes=mes2;
digitalWrite(dato0,1);digitalWrite(dato1,1);delay(50); delay(50); digitalWrite(dato0,0);digitalWrite(dato1,0);
}
}}}
while(stato_tasto==1 || stato_tasto1==1 )
{
stato_tasto=digitalRead(tasto);
stato_tasto1=digitalRead(tasto1);

if (stato_tasto==0 && stato_tasto1==0 )
{
digitalWrite(ledgiallo2,HIGH);
Serial.print(ID);
delay(100);
digitalWrite(ledgiallo2,LOW);
}
}
}
}