maubarzi:
Due domande:
- Quando scatta il giallo si spegne il verde?
- Perchè tratti i 4 semafori in modo indipendente e non li accoppi a due a due? Gli opposti dovrebbero essere uguali
- Questa è la versione ottimizzata che non funziona, quella funzionante com'era?
- Hai dimestichezza con un po' di elettronica digitale? Sistemato questo codice, vuoi uno spunto per semplificare al massimo il software delegando un pelo all'hardware? Solo dopo aver sistemato questo però
Si, ho barato quando ho detto che le domande erano solo due
Nella versione originale i semafori li ho accoppiati due a due (immagina un quadrivio con due coppie di semafori alternati). Ti posto qui il codice usato (semplicemente accendendo e spegnendo i led con delay)
void setup()
{
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
pinMode(11, OUTPUT);
}
void loop()
{
// Inizio Blocco1
// Accendo Rosso semafori 1 e 3 - Verde semaforo 2
// e 4
digitalWrite(2, HIGH);
// Accendi Rosso1
digitalWrite(3, LOW);
// Spegni Giallo1
digitalWrite(4, LOW);
// Spegni Verde1
digitalWrite(5, HIGH);
// Accendi Verde2
digitalWrite(6, LOW);
// Spegni Giallo2
digitalWrite(7, LOW);
// Spegni Rosso2
digitalWrite(8, HIGH);
// Accendi Rosso3
digitalWrite(9, LOW);
// Spegni Giallo3
digitalWrite(10, LOW);
// Spegni Verde3
digitalWrite(13, HIGH);
// Accendi Verde4
digitalWrite(12, LOW);
// Spegni Giallo4
digitalWrite(11, LOW);
// Spegni Rosso4
// Fine Blocco1
delay(5000); // Wait for 5000 millisecond(s)
// Inizio Blocco2
// Spengo Verde 2 e 4 - accendo Giallo 2 e 4
digitalWrite(5, LOW);
// Spegni Verde2
digitalWrite(13, LOW);
// Spegni Verde4
digitalWrite(6, HIGH);
// Accendi Giallo2
digitalWrite(12, HIGH);
// Accendi Giallo4
// Fine Blocco2
delay(5000); // Wait for 5000 millisecond(s)
// Inizio Blocco3
// Spengo Giallo 2 e 4 - Accendo Rosso 2 e 4
digitalWrite(6, LOW);
// Spegni Giallo2
digitalWrite(12, LOW);
// Spegni Giallo4
digitalWrite(7, HIGH);
// Accendi Rosso2
digitalWrite(11, HIGH);
// Accendi Rosso4
// Fine Blocco3
delay(5000); // Wait for 5000 millisecond(s)
// Inizio Blocco4
// Accendo Verde 1 e 3 -
digitalWrite(4, HIGH);
// Accendi Verde1
digitalWrite(10, HIGH);
// Accendi Verde3
digitalWrite(2, LOW);
// Spegni Rosso1
digitalWrite(8, LOW);
// Spegni Rosso3
// Fine Blocco4
delay(5000); // Wait for 5000 millisecond(s)
// Inizio Blocco5
// Spengo Verde 1 e 3 - Accendo Giallo 1 e 3
digitalWrite(4, LOW);
// Spegni Verde1
digitalWrite(10, LOW);
// Spegni Verde3
digitalWrite(3, HIGH);
// Accendi Giallo1
digitalWrite(9, HIGH);
// Accendi Giallo3
// Fine Blocco5
delay(5000); // Wait for 5000 millisecond(s)
// Inizio Blocco6
// Spengo Giallo 1 e 3 - Accendo Rosso 1 e 3
digitalWrite(3, LOW);
// Spengo Giallo1
digitalWrite(9, LOW);
// Spengo Giallo3
digitalWrite(2, HIGH);
// Accendo Rosso1
digitalWrite(8, HIGH);
// Accendo Rosso3
delay(5000); // Wait for 5000 millisecond(s)
// Fine Blocco6
}