In questo progetto viene proposto un gioco di luci.
{tab=Descrizione}
In questo progetto viene proposto un gioco di luci (come quello che, nel periodo natalizio, si vede ai balconi di molte abitazioni) mediante l’uso delle funzioni:
- lampeggio
- sequenza: i 6 LED, in sequenza, prima si accendo da sinistra verso destra e poi si spengono nel verso opposto
- simmetrica_int: prima si accendono a coppie i LED 4 e 5, 3 e 6, infine 2 e 7; in maniera analoga avviene lo spegnimento
- centro_periferia: si accende e spengono i LED dall’interno verso l’esterno, prima da un lato e poi dall’altro
- casuale
{tab=Cablaggio}

Componenti
- 6 LED (2 gialli, 2 verdi, 2 rossi)
- 6 resistenze da 220 Ω
- 7 cavetti
{tab=Il codice}
Il codice
void lampeggio() {
for (int i = 2; i < 8; i = i + 1) {
digitalWrite(i, HIGH);
}
delay(300);
for (int i = 2; i < 8; i = i + 1) {
digitalWrite(i, LOW);
}
delay(300);
}
void sequenza() {
for (int i = 2; i < 8; i = i + 1) {
digitalWrite(i, HIGH);
delay(200);
}
delay(300);
for (int i = 7; i > 1; i = i - 1) {
digitalWrite(i, LOW);
delay(200);
}
delay(300);
}
void simmetrica_int() {
int k = 1;
for (int i = 4; i > 1; i = i - 1){ // ciclo di accensione simmetrica
digitalWrite(i, HIGH);
digitalWrite(i + k, HIGH);
delay(400);
k = k + 2;
/* prima accende i LED 4 e 5, poi incrementa k di 2 (k = 3) ed accende i LED 3 e 6; poi incrementa ancora una volta k di 2 (k = 5) ed accende i LED 2 e 7 */
}
delay(500);
k = 1;
for (int i = 4; i > 1; i = i - 1) { // ciclo di spegnimento simmetrico
digitalWrite(i, LOW);
digitalWrite(i + k, LOW);
delay(400);
k = k + 2;
}
}
void centro_periferia() {
for (int i = 5; i < 8; i = i + 1) {
digitalWrite(i, HIGH);
delay(50);
digitalWrite(i, LOW);
delay(400);
}
for (int i = 4; i > 1; i = i - 1) {
digitalWrite(i, HIGH);
delay(30);
digitalWrite(i, LOW);
delay(30);
}
}
void casuale() { // ciclo di accensione (e spenimento) casuale dei LED
for (int i = 0; i < 100; i = i + 1) {
int k = random(8);
digitalWrite(k, HIGH);
delay(30);
digitalWrite(k, LOW);
delay(30);
}
}
void setup() {
for (int i = 2; i < 8; i = i + 1) pinMode(i, OUTPUT);
}
void loop() {
sequenza(); sequenza(); sequenza();
lampeggio(); lampeggio(); lampeggio();
simmetrica_int(); simmetrica_int(); simmetrica_int(); simmetrica_int();
lampeggio(); lampeggio(); lampeggio();
casuale();
lampeggio(); lampeggio(); lampeggio();
centro_periferia(); centro_periferia(); centro_periferia(); centro_periferia(); centro_periferia();
lampeggio(); lampeggio(); lampeggio();
}
Adeguando i tempi è possibile personalizzarne gli effetti. Si può snellire il loop, evitando di richiamare più volte la stessa funzione, introducendo ulteriori for nel loop stesso o nelle singole funzioni.
{/tabs}
Liberamente tratto da https://www.progettiarduino.com/28-arduino-luci-di-natale-6ch.html
