Dei semafori stradali e pedonali comandati da un pulsante

void setup() {

for (int i = 0; i < 4; i++) pinMode(macchina2[i], OUTPUT); // dichiariamo che i pin dei led dell'array macchina2 sono OUTPUT
for (int i = 0; i < 4; i++) pinMode(macchina[i], OUTPUT); // dichiariamo che i pin dei led dell'array macchina sono OUTPUT
for (int i = 0; i < 3; i++) pinMode(pedoni[i], OUTPUT); // dichiariamo che i pin dei led dell'array pedoni sono OUTPUT

pinMode(buzzer, OUTPUT);
pinMode(pulsante, INPUT_PULLUP); // dichiariamo che il pin del pulsante e' un INPUT. PULLUP significa che il pulsante e' collegato tramite una
// resistenza ai 5V di arduini. Quindi quando non e' premuto ci restituira' valore logico 1 mentre quando premuto
// ci dara' valore logico 0

}

void loop() {

digitalWrite(pedoni[0], HIGH); // accendiamo il led presente nella posizione '0' dell'array pedoni
digitalWrite(macchina[conteggio], HIGH); // accendiamo il led presente nella posizione 'conteggio' dell'array macchina
digitalWrite(macchina2[conteggio], HIGH); // accendiamo il led presente nella posizione 'conteggio' dell'array macchina2

long tempo = 4000 + millis(); // la variabile tempo assume il valore della funzione millis() + 4000

while (tempo >= millis()) { // aspetto 4 secondi nel ciclo while
if (digitalRead(pulsante) == 0) prenotazione = 1; // se nel ciclo viene effettuata la chiamata pedonale, la variabile prenotazione varra' 1
delay(50); // ritardo di 50ms
}

digitalWrite(macchina[conteggio], LOW); // spengiamo il led presente nella posizione 'conteggio' dell'array macchina
digitalWrite(macchina2[conteggio], LOW); // spegniamo il led presente nella posizione 'conteggio' dell'array macchina2

if (conteggio > 2) { // se il conteggio e' 3 devo riazzerlarlo
conteggio = 0; // azzero il conteggio
if (prenotazione == 1) chiamataAttivata(); // solo se e' stata effettuata la chiamata pedonale, eseguo la funzione chiamataAttivata()
} else {
conteggio++; // altrimenti se il conteggio e' minore di 3, conteggio viene incrementato di 1
}

}

void chiamataAttivata() {

digitalWrite(macchina[0], HIGH); // accendo il led rosso del primo semaforo delle macchine
digitalWrite(macchina2[2], HIGH); // accendo il led rosso del secondo semaforo delle macchine

for (int i = 0; i < 3; i++) { // ciclo for nel quale viene effettuato il ciclo del semaforo dei pedoni
digitalWrite(pedoni[i], HIGH); // accendo il led nella posizione i dell'array pedoni
long tempo = millis() + 6000; // tempo vale 6000 + millis()
while (tempo >= millis()) { // per 6 secondi tengo accenso quel led
if (i == 1) { // quando e' acceso il led verde dei pedoni i = 1 quindi ci sara' il lampeggio di suono del Buzzer
digitalWrite(buzzer, HIGH); // accensione suono buzzer
delay(500); // ritardo 500ms
digitalWrite(buzzer, LOW); // spegnimento suono buzzer
delay(500); // ritardo 500ms
} else if (i == 2) { // quando e' acceso il giallo verde dei pedoni i = 2 quindi ci sara' il lampeggio di suono del Buzzer (piu' veloce)
digitalWrite(buzzer, HIGH); // accensione suono buzzer
delay(200); // ritardo 200ms
digitalWrite(buzzer, LOW); // spegnimento suono buzzer
delay(200); // ritardo 200ms
}
}
digitalWrite(pedoni[i], LOW); // spengo il led nella posizioe i dell'array pedoni
}
prenotazione = 0; // prenotazione torna a valere 0
digitalWrite(macchina2[2], LOW); // spengo il led rosso del secondo semaforo delle macchine
}

Buonasera e benvenuto nella sezione Italiana del forum,

cortesemente, come prima cosa, leggi attentamente il REGOLAMENTO di detta sezione, (... e, per evitare future possibili discussioni/incomprensioni, prestando molta attenzione al punto 15), dopo di che, come da suddetto regolamento, fai la tua presentazione NELL'APPOSITA DISCUSSIONE spiegando bene quali esperienze hai in elettronica e programmazione, affinché noi possiamo conoscere la tua esperienza ed esprimerci con termini adeguati.

Detto questo, come richiesto al punto 7 del succitato regolamento, per favore edita il tuo post qui sopra (quindi NON scrivendo un nuovo post, ma utilizzando il bottone a forma di piccola matita :pencil2: che si trova in basso del tuo post), seleziona la parte di codice e premi l'icona </> nella barra degli strumenti per contrassegnarla come codice. Inoltre, così com'è, non è molto leggibile ... assicurati di averlo correttamente indentato nell'IDE prima di inserirlo (questo lo si fa premendo ctrlT su un PC o cmd T su un Mac, sempre all'interno del IDE).

Grazie,

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposita discussione e sistemato il codice come indicato, nel rispetto del regolamento nessuno ti risponderà (eventuali risposte o tuoi ulteriori post, verrebbero temporaneamente nascosti), quindi ti consiglio di farla al più presto. :wink:

Ah, altra cosa importante, nella sezione in lingua Inglese, si può scrivere SOLO in Inglese ... quindi, per favore, la prossima volta presta più attenzione in quale sezione metti i tuoi post; questa volta esso è stato spostato, da un moderatore della sezione di lingua Inglese, nella sezione di lingua Italiana ... la prossima volta potrebbe venire direttamente eliminato.

Grazie,

Guglielmo

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.