dunque ci sono riuscito scusate se mi ripeto,ma è per fare prove con le finestrelle
la PARTE--0 riguarda le variabili che me le devo ancora studiare bene per il momento le copio
int RP1(13);
int GP1(12);
int VP1(11);
int R1(4);
int R2(10);
int G1(3);
int G2(9);
int V1(2);
int V2(8);
int P1(6);
int P2(7);
extern unsigned long timer0_millis;
unsigned long T1;//TEMPO SCAMBIO SEMAFORI
unsigned long T2;//TEMPO LAMPEGGIO SEMAFORO 2
unsigned long T3;//TEMPO LAMPEGGIO SEMAFORO 1
unsigned long T4;//TEMPO LAMPEGGIO PEDONALE 1
unsigned long T5;//TEMPO PEDONALE 1
int A;//STATO SEMAFORI
int B;//STATO LUCI GIALLE SEMAFORI
int C;//CICLO LAMPEGGIO SEMAFORI
PARTE1-- codifico il Setup
void setup()
{
Serial.begin(9600);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
pinMode(6, INPUT);
pinMode(7, INPUT);
}
poi passo al Loop
PARTE--2 per LEGGERE come risponde il mio schetch su SERIAL MONITOR void loop()
{
Serial.println(millis());
Serial.println(T1);
Serial.println(T2);
Serial.println(T3);
Serial.println("");
Serial.print(A);
Serial.print(B);
Serial.print(C);
Serial.println(D);
if((A==0)&&(C==0)){Serial.println("Semaforo2 Avanti");Serial.println("Semaforo1 Stop");}
if((A==0)&&(C==1)){Serial.println("Semaforo2 Lampeggio");}
if((A==1)&&(C==0)){Serial.println("Semaforo1 Avanti");Serial.println("Semaforo2 Stop");}
if((A==1)&&(C==1)){Serial.println("Semaforo1 Lampeggio");}
if(digitalRead(P1)){Serial.println("Pedonale1 Chiamato");}
if(D==1){Serial.println("Pedonale1 Attesa");}
if((A==0)&&(D==2)){Serial.println("Pedonale1 Avanti");}
Serial.println("");
PARTE3-- DESCRIVO LE VARIABILI switch(A)//SEMAFORI
{
case 0:
digitalWrite(RP1, HIGH);//SEMAFORO PEDONALE STOP
digitalWrite(R1, HIGH);//SEMAFORO1 STOP
digitalWrite(V2, HIGH);//SEMAFORO2 AVANTI
digitalWrite(R2,LOW);
digitalWrite(V1,LOW);
break;
case 1:
digitalWrite(R2,HIGH);//SEMAFORO2 STOP
digitalWrite(V1,HIGH);//SEMAFORO1 AVANTI
digitalWrite(R1,LOW);
digitalWrite(V2,LOW);
break;
}
switch(B)//LUCI GIALLE SEMAFORI
{
case 0:
digitalWrite(G1, LOW);
digitalWrite(G2, LOW);
break;
case 1:
digitalWrite(G1, HIGH);
break;
case 2:
digitalWrite(G2,HIGH);
break;
}
PARTE--4 dò il TEMPO alle luci dei SEMAFORI
if((D!=2)&&(millis()>=T1+2000)){A++;B=0;C++;
T1=millis();
T2=millis();
T3=millis();
T4=millis();
T5=millis();
}//TEMPO SCAMBIO SEMAFORI
if(A>1){A=0;}
if(B>2){B=0;}
if(C>1){C=0;}
if((A==0)&&(C==0)){//SEMAFORO2 VERDE--SEMAFORO1 ROSSO--PEDONALI INATTIVI
if(millis()>=T2+1000){B=2;C++;T2=millis();}//ATTESA PER LAMPEGGIO
}
if((A==0)&&(C==1)){//SEMAFORO 2 LAMPEGGIO
if(millis()>=T2+250){B=0;}//PRIMO LAMPEGGIO
if(millis()>=T2+500){B=2;T2=millis();}//SECONDO LAMPEGGIO
}
if((A==1)&&(C==0)){//SEMAFORO1 VERDE--SEMAFORO2 ROSSO
if(millis()>=T3+1000){B=1;C++;T3=millis();}//ATTESA PER LAMPEGGIO
}
if((A==1)&&(C==1)){//SEMAFORO 1 LAMPEGGIO
if(millis()>=T3+250){B=0;}//PRIMO LAMPEGGIO
if(millis()>=T3+500){B=1;T3=millis();}//SECONDO LAMPEGGIO
}
Parte--5 attivo il PEDONALEif(digitalRead(P1)&&(D==0)){//CHIAMATA PEDONALE
while(digitalRead(P1)){}//FINCHE'IL PULSANTE é PREMUTO NON FARE NIENTE
D++;//POI INCREMENTA INT(D)
}
if((A==0)&&(C==0)&&(D==1)){ //SE SEMAFORO1 STOP
++D;//INCREMENTA INT(D)
}
if(D==2)
{
A=0;//SEMAFORO2 resta VERDE
B=0;//LUCI GIALLE sono SPENTE
C=0;//FERMA I LAMPEGGI di tutti i SEMAFORI
digitalWrite(VP1,HIGH);//PEDONALE1 AVANTI
}
if(D==2){//SE PEDONALE AVANTI
if(millis()>=T4+1000){digitalWrite(GP1,HIGH);T2=millis();}//ATTESA PER LAMPEGGIO
}
if(D==2){//SE PEDONALE AVANTI
if(millis()>=T4+250){digitalWrite(GP1,LOW);}//PRIMO LAMPEGGIO
if(millis()>=T4+500){digitalWrite(GP1,HIGH);T3=millis();}//SECONDO LAMPEGGIO
}
if(millis()>=T5+2000){//DOPO(tot)MILLISECONDI
D=0;//PULSANTE
digitalWrite(VP1,LOW);
digitalWrite(GP1,LOW);
digitalWrite(RP1,HIGH);//PEDONALE STOP
}
}