da
impedance » 8 giu 2019, 12:12
Volendolo fare con arduino impiegando soltanto la funzione "switch case". Ho pensato al caso in cui ci fossero 4 led e si volessero azionare in diverse modalità.
In base al valore dato alla costante "sequenza" :
0: accensione a partire dal led A in sequenza con tempo di ritardo di 0.5s. L'accensione del successivo determina lo spegnimento del precedente
1: accensione a partire dal led D n sequenza con tempo di ritardo di 0.5s. L'accensione del successivo determina lo spegnimento del precedente
2:accensione a partire dal led A in sequenza con tempo di ritardo di 0.5s. L'accensione del successivo non determina lo spegnimento del precedente
3:accensione a partire dal led A in sequenza con tempo di ritardo di 0.5s. L'accensione del successivo non determina lo spegnimento del precedente.
- Codice: Seleziona tutto
//costanti
const int sequenza = 0; //0 = da dx vs sx, 1 = da sx verso dx - l'accensione del successivo coincide con lo spegnimento del precedente
// 2 = da sx verso dx, 3 = da dx verso sx - l'accensione del successivo mantiene acceso il precedente
const int ledA = 13;
const int ledB = 12;
const int ledC = 11;
const int ledD = 10;
const int tempo = 500;
void setup() {
// put your setup code here, to run once:
pinMode(ledA, OUTPUT);
pinMode(ledB, OUTPUT);
pinMode(ledC, OUTPUT);
pinMode(ledD, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
switch (sequenza) {
case 0:
digitalWrite(ledA, HIGH);
digitalWrite(ledD, LOW);
delay(tempo);
digitalWrite(ledA, LOW);
digitalWrite(ledB, HIGH);
delay(tempo);
digitalWrite(ledB, LOW);
digitalWrite(ledC, HIGH);
delay(tempo);
digitalWrite(ledC, LOW);
digitalWrite(ledD, HIGH);
delay(tempo);
break;
case 1:
digitalWrite(ledD, HIGH);
digitalWrite(ledA, LOW);
delay(tempo);
digitalWrite(ledD, LOW);
digitalWrite(ledC, HIGH);
delay(tempo);
digitalWrite(ledC, LOW);
digitalWrite(ledB, HIGH);
delay(tempo);
digitalWrite(ledB, LOW);
digitalWrite(ledA, HIGH);
delay(tempo);
break;
case 2:
digitalWrite(ledA, HIGH);
delay(tempo);
digitalWrite(ledB, HIGH);
delay(tempo);
digitalWrite(ledC, HIGH);
delay(tempo);
digitalWrite(ledD, HIGH);
delay(tempo);
digitalWrite(ledA, LOW);
digitalWrite(ledB, LOW);
digitalWrite(ledC, LOW);
digitalWrite(ledD, LOW);
delay(50);
break;
case 3:
digitalWrite(ledD, HIGH);
delay(tempo);
digitalWrite(ledC, HIGH);
delay(tempo);
digitalWrite(ledB, HIGH);
delay(tempo);
digitalWrite(ledA, HIGH);
delay(tempo);
digitalWrite(ledA, LOW);
digitalWrite(ledB, LOW);
digitalWrite(ledC, LOW);
digitalWrite(ledD, LOW);
delay(50);
break;
}
}