Vai al contenuto

Utente:Skatto420/Semaforo pedonale a chiamata con Arduino

Da Wikiversità, l'apprendimento libero.

Il seguente progetto ha come fine la realizzazione di un semaforo pedonale a chiamata con Arduino.

Principio di funzionamento

[modifica]

Il circuito comprende due semafori, uno per le macchine e uno per i pedoni, dove quest'ultimo viene azionato solamente dopo aver premuto il pulsante per la chiamata pedonale. Per lo svolgimento ho utilizzato tinkercad, un programma arduino online, e gli strumenti utilizzati sono: 6 LED, 8 resistenze, 2 pulsanti, un arduino e una breadboard.

Circuito

[modifica]

di seguito lo schema di montaggio

Codice

[modifica]
int rossom = 2;   //sono delle abbreviazioni: verdem=verde macchine;verdep=verde pedoni
int giallom = 3;
int verdem = 4;
int rossop = 5;
int giallop = 6;
int verdep = 7;
int pulsante1 = 8;
int pulsante2 = 9;
int stato_pulsante1 = 0;
int stato_pulsante2 = 0;

void setup() {
pinMode(verdem, OUTPUT);
pinMode(giallom, OUTPUT);
pinMode(rossom, OUTPUT);
pinMode(verdep, OUTPUT);
pinMode(giallop, OUTPUT);
pinMode(rossop, OUTPUT);
pinMode(pulsante1, INPUT);
pinMode(pulsante2, INPUT);
}

void loop() {
digitalWrite (verdem, HIGH);
digitalWrite (rossop, HIGH);
stato_pulsante1=digitalRead(pulsante1);

if (stato_pulsante1 == 1) {
delay (5000);
digitalWrite (giallom, HIGH);
digitalWrite (verdem, LOW);
delay (3000);
digitalWrite (giallom, LOW);
digitalWrite (rossom, HIGH);
digitalWrite (rossop, LOW);
digitalWrite (verdep, HIGH);
delay (4500);
digitalWrite (giallop, HIGH);
digitalWrite (verdep, LOW);
delay (2000);
digitalWrite (giallop, LOW);
digitalWrite (rossop, HIGH);
digitalWrite (rossom, LOW);
digitalWrite (verdem, HIGH);
} 
if (stato_pulsante2 == 1) {
delay (500);
digitalWrite (giallom, HIGH);
digitalWrite (verdem, LOW);
delay (3000);
digitalWrite (giallom, LOW);
digitalWrite (rossom, HIGH);
digitalWrite (rossop, LOW);
digitalWrite (verdep, HIGH);
delay (4500);
digitalWrite (giallop, HIGH);
digitalWrite (verdep, LOW);
delay (2000);
digitalWrite (giallop, LOW);
digitalWrite (rossop, HIGH);
digitalWrite (rossom, LOW);
digitalWrite (verdem, HIGH);
}
}