In questo progetto viene proposto un gioco di luci.
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: Il codice 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. Descrizione
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();
}
Liberamente tratto da https://www.progettiarduino.com/28-arduino-luci-di-natale-6ch.html