Indice
Descrizione
Nel video impareremo come realizzare dei semafori con Arduino. Innanzitutto costruiremo il circuito e lo sketch per far funzionare due semafori sincronizzati, per poi modificarlo introducendo la chiamata per i pedoni.
Questo semplice progetto fai da te ci permette di approfondire l'utilizzo dei LED e dei pulsanti, oltre che imparare ad usare gli array, il costrutto FOR e la creazione di nuove funzioni.
#define VERDE 0
#define GIALLO 1
#define ROSSO 2
int semaforo1[] = { 8, 9, 10 };
int semaforo2[] = { 5, 6, 7 };
int ritardo = 2000;
void setup(){
for(int i = 0; i < 3; i++){
pinMode(semaforo1[i], OUTPUT);
pinMode(semaforo2[i], OUTPUT);
}
}
void loop(){
cambiaLuce(semaforo2, ROSSO);
cambiaLuce(semaforo1, VERDE);
delay(ritardo);
cambiaLuce(semaforo1, GIALLO);
delay(ritardo/2);
cambiaLuce(semaforo1, ROSSO);
cambiaLuce(semaforo2, VERDE);
delay(ritardo);
cambiaLuce(semaforo2, GIALLO);
delay(ritardo/2);
}
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);
}
}
}
#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);
}
}
}