pugliasos newlogoDEF

Orario della segreteria: tutti i martedì, dalle ore 17 alle 19, su appuntamento.

 In questo progetto viene proposto un gioco di luci.

 

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

 

Cablaggio

Luci di Natale

 

 

Componenti

 

  • 6 LED (2 gialli, 2 verdi, 2 rossi)
  • 6 resistenze da 220 Ω
  • 7 cavetti

 

 

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.

 

 


 

Liberamente tratto da https://www.progettiarduino.com/28-arduino-luci-di-natale-6ch.html

Save
Cookies user preferences
We use cookies to ensure you to get the best experience on our website. If you decline the use of cookies, this website may not function as expected.
Accept all
Decline all
Read more
Analytics
Tools used to analyze the data to measure the effectiveness of a website and to understand how it works.
Google Analytics
Accept
Decline