/*
TITOLO: Semaforo con 2 incroci Italiano_Tedesco
AUTORE: Pietro Peressutti
CLASSE: 2elea
DATA: 23/01/2024
VERSIONE: 1.1
*/
// semaforo 1 ITALIANO
int r1I=13;
int g1I=12;
int v1I=11;
int r2I=10;
int g2I=9;
int v2I=8;
// semaforo 2 TEDESCO
int r1T =7;
int g1T= 6;
int v1T = 5;
int r2T = 4;
int g2T = 3;
int v2T = 2;
// Ingresso selettore modalità
int pinmodo = 1;
void setup() {
// put your setup code here, to run once:
//ITALIANO
pinMode (r1I,OUTPUT);
pinMode (g1I,OUTPUT);
pinMode (v1I,OUTPUT);
pinMode (r2I,OUTPUT);
pinMode (g2I,OUTPUT);
pinMode (v2I,OUTPUT);
//TEDESCO
pinMode(r1T, OUTPUT);
pinMode(g1T, OUTPUT);
pinMode(v1T, OUTPUT);
pinMode(r2T, OUTPUT);
pinMode(g2T, OUTPUT);
pinMode(v2T, OUTPUT);
//impostazione del selettore (input digitale)
pinMode(pinmodo, INPUT);
// attivo la comunicazione seriale
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repatledy:
bool modo;
//leggo il valore del pin di senezione (pin 1 )
modo = digitalRead(pinmodo);
// eseguo l'if-else
if( modo == LOW){
// parte da eseguire se il test è vero
Serial.println("Sequenza Italiana");
// Richiamo della funzione semaforo Italiano
SemaforoItaliano();
}
else{
// parte da eseguire se il test è falso
Serial.println("sequenza Tedesca");
// Richiamo la funzione del semaforo Tedesco
SemaforoTedesco();
}
}
// function del semaforo ITALIANO
void SemaforoItaliano(){
//SEQUENZA SEMAFORO ITALIANO
//R1, G1, V1 per la prima via;
//R2, G2, V2 per la seconda via.
// Fase 1 :R1, R2 accesi per 2 secondi
digitalWrite(v1I,LOW);
digitalWrite(g1I,LOW);
digitalWrite(r1I,HIGH);
digitalWrite(v2I,LOW);
digitalWrite(g2I,LOW);
digitalWrite(r2I,HIGH);
delay(2000);
//Fase 2: V1, R2 accesi per 10 secondi
digitalWrite(v1I,HIGH);
digitalWrite(g1I,LOW);
digitalWrite(r1I,LOW);
digitalWrite(v2I,LOW);
digitalWrite(g2I,LOW);
digitalWrite(r2I,HIGH);
delay(10000);
//Fase3 :G1, R2, accesi per 3 secondi
digitalWrite(v1I,LOW);
digitalWrite(g1I,HIGH);
digitalWrite(r1I,LOW);
digitalWrite(v2I,LOW);
digitalWrite(g2I,LOW);
digitalWrite(r2I,HIGH);
delay(3000);
//Fase4 :R1, R2 accesi per 2 secondi
digitalWrite(v1I,LOW);
digitalWrite(g1I,LOW);
digitalWrite(r1I,HIGH);
digitalWrite(v2I,LOW);
digitalWrite(g2I,LOW);
digitalWrite(r2I,HIGH);
delay(2000);
//Fase 5 :R1, V2 accesi per 10 secondi
digitalWrite(v1I,LOW);
digitalWrite(g1I,LOW);
digitalWrite(r1I,HIGH);
digitalWrite(v2I,HIGH);
digitalWrite(g2I,LOW);
digitalWrite(r2I,LOW);
delay(10000);
//Fase6 :R1, G2, accesi per 3 secondi
digitalWrite(v1I,LOW);
digitalWrite(g1I,LOW);
digitalWrite(r1I,HIGH);
digitalWrite(v2I,LOW);
digitalWrite(g2I,HIGH);
digitalWrite(r2I,LOW);
delay(3000);
// Fase 7 : R1,R2 accesi
digitalWrite(v1I,LOW);
digitalWrite(g1I,LOW);
digitalWrite(r1I,HIGH);
digitalWrite(v2I,LOW);
digitalWrite(g2I,LOW);
digitalWrite(r2I,HIGH);
delay(2000);
}
// function del semaforo Tedesco
void SemaforoTedesco(){
//SEQUENZA SEMAFORO TEDESCO
//fase 1: r1 e r2 accesi per 2 secondi
digitalWrite(r1T, HIGH);
digitalWrite(r2T, HIGH);
digitalWrite(g1T, LOW);
digitalWrite(g2T, LOW);
digitalWrite(v1T, LOW);
digitalWrite(v2T, LOW);
delay(2000);
//fase 2: g1 e r2 accesi per 2 secondi
digitalWrite(r1T, LOW);
digitalWrite(r2T, HIGH);
digitalWrite(g1T, HIGH);
digitalWrite(g2T, LOW);
digitalWrite(v1T, LOW);
digitalWrite(v2T, LOW);
delay(2000);
//fase 3: v1 e r2 accesi per 10 secondi
digitalWrite(r1T, LOW);
digitalWrite(r2T, HIGH);
digitalWrite(g1T,LOW);
digitalWrite(g2T, LOW);
digitalWrite(v1T, HIGH);
digitalWrite(v2T,LOW);
delay(10000);
//fase 4: g1, v1 e r 2 accesi per 3 secondi
digitalWrite(r1T, LOW);
digitalWrite(r2T, HIGH);
digitalWrite(g1T,HIGH);
digitalWrite(g2T, LOW);
digitalWrite(v1T, HIGH);
digitalWrite(v2T, LOW);
delay(3000);
//fase 5: r1 e r2 accesi per 2 secondi
digitalWrite(r1T, HIGH);
digitalWrite(r2T, HIGH);
digitalWrite(g1T,LOW);
digitalWrite(g2T, LOW);
digitalWrite(v1T, LOW);
digitalWrite(v2T, LOW);
delay(2000);
//fase 6: r1 e g2 accesi per 2 secondi
digitalWrite(r1T, HIGH);
digitalWrite(r2T, LOW);
digitalWrite(g1T,LOW);
digitalWrite(g2T, HIGH);
digitalWrite(v1T, LOW);
digitalWrite(v2T, LOW);
delay(2000);
//fase 7: r1, e v2 accesi per 10 secondi
digitalWrite(r1T, HIGH);
digitalWrite(r2T, LOW);
digitalWrite(g1T,LOW);
digitalWrite(g2T, LOW);
digitalWrite(v1T, LOW);
digitalWrite(v2T, HIGH);
delay(10000);
//fase 8: r1, g2, e v2 accesi per 3 secondi
digitalWrite(r1T, HIGH);
digitalWrite(r2T, LOW);
digitalWrite(g1T,LOW);
digitalWrite(g2T, HIGH);
digitalWrite(v1T, LOW);
digitalWrite(v2T, HIGH);
delay(3000);
//Fasa 9 r1,r2 accesi
digitalWrite(r1T, HIGH);
digitalWrite(r2T, HIGH);
digitalWrite(g1T,LOW);
digitalWrite(g2T, LOW);
digitalWrite(v1T, LOW);
digitalWrite(v2T, LOW);
delay(3000);
}