Semaforo a chiamata con Arduino

Da testwiki.
Vai alla navigazione Vai alla ricerca

Template:Lavori in corso Template:Risorsa

Questa lezione descrive come realizza un semaforo con chiamata pedoni

Componenti utilizzati

  • 6 resistenze da 220Ω per i led;
  • 1 resistenza da 100kΩ per il pulsante
  • 6 LED (2 verdi, 2 gialli, 2 rossi)
  • 1 Pulsante

Schema di montaggio

Codice

 /**
 * Semaforo con chiamata pedoni
 * Giovanni Serafini
 * 3B EN
 * a.s. 2021/2022    
 **/
#define VERDE 0
#define GIALLO 1
#define ROSSO 2

int semaforoPrincipale[] = { 8, 9, 10 };
int semaforoPedonale[] = { 5, 6, 7 };
int ritardo = 2000;
int pulsantePin = 2;
int attesaChiamata = 3000;

void setup(){
  for(int i = 0; i < 3; i++){
    pinMode(semaforoPrincipale[i], OUTPUT);
    pinMode(semaforoPedonale[i], OUTPUT);
  }
  pinMode(pulsantePin, INPUT);
  cambiaLuce(semaforoPedonale, ROSSO);
  cambiaLuce(semaforoPrincipale, VERDE);
}

void loop(){
  if(digitalRead(pulsantePin) == HIGH){
    delay(attesaChiamata);
    cambiaLuce(semaforoPrincipale, GIALLO);
    delay(ritardo/2);
    cambiaLuce(semaforoPrincipale, ROSSO);
    cambiaLuce(semaforoPedonale, VERDE);
    delay(ritardo);
    cambiaLuce(semaforoPedonale, GIALLO);
    delay(ritardo/2);
    cambiaLuce(semaforoPedonale, ROSSO);
    cambiaLuce(semaforoPrincipale, VERDE);
  }
  delay(10);
}

void cambiaLuce(int semaforo[], int luce){
  for(int i = 0; i < 3; i++){
    if(i == luce){
      digitalWrite(semaforo[i], HIGH);
    }else{
      digitalWrite(semaforo[i], LOW);
    }
  }
}

Espansioni suggerite

Si può aggiungere, al posto del pulsante, un sensore di prossimità che - quando qualcuno gli si avvicina - fa diventare verde il semaforo per i pedoni.