Semaforo con chiamata pedoni

Share
// Definizione dei pin
const int pedoniButtonPin = 2;
const int semaforoPedoniPin = 3;
const int semaforoVeicoliPin = 4;

// Definizione dei tempi di accensione dei semafori
const unsigned long tempoVerdePedoni = 5000; // 5 secondi
const unsigned long tempoGialloPedoni = 2000; // 2 secondi
const unsigned long tempoVerdeVeicoli = 7000; // 7 secondi
const unsigned long tempoGialloVeicoli = 2000; // 2 secondi

// Variabili di stato
bool pedoniChiamata = false;

void setup() {
  // Configurazione dei pin
  pinMode(pedoniButtonPin, INPUT_PULLUP);
  pinMode(semaforoPedoniPin, OUTPUT);
  pinMode(semaforoVeicoliPin, OUTPUT);
  
  // Semaforo iniziale
  digitalWrite(semaforoPedoniPin, LOW);
  digitalWrite(semaforoVeicoliPin, HIGH);
}

void loop() {
  // Controllo della chiamata dei pedoni
  if (digitalRead(pedoniButtonPin) == LOW) {
    pedoniChiamata = true;
  }
  
  // Ciclo del semaforo
  if (!pedoniChiamata) {
    // Semaforo per i veicoli
    digitalWrite(semaforoPedoniPin, LOW);
    digitalWrite(semaforoVeicoliPin, HIGH);
    delay(tempoVerdeVeicoli);
    
    digitalWrite(semaforoVeicoliPin, LOW);
    delay(tempoGialloVeicoli);
  }
  else {
    // Semaforo per i pedoni
    digitalWrite(semaforoVeicoliPin, LOW);
    digitalWrite(semaforoPedoniPin, HIGH);
    delay(tempoVerdePedoni);
    
    digitalWrite(semaforoPedoniPin, LOW);
    delay(tempoGialloPedoni);
    
    pedoniChiamata = false;
  }
}

In questo esempio, utilizziamo un pulsante collegato al pin 2 per simulare la chiamata dei pedoni. Quando il pulsante viene premuto, viene impostata la variabile ‘pedoniChiamata‘ su ‘true‘, segnalando che i pedoni vogliono attraversare la strada.

Il loop principale controlla se la chiamata dei pedoni è stata attivata. Se non è stata attivata, il semaforo dei veicoli è verde mentre il semaforo dei pedoni è spento. Dopo un periodo di tempo, il semaforo dei veicoli passa a giallo per un breve periodo.

Se la chiamata dei pedoni è stata attivata, il semaforo dei veicoli viene spento e il semaforo dei pedoni diventa verde per un periodo di tempo. Successivamente, il semaforo dei pedoni passa a giallo per un breve periodo e la variabile ‘pedoniChiamata‘ viene reimpostata su ‘false‘ per consentire il ritorno al normale funzionamento del semaforo.