Loop

Ciao a tutti, il titolo del tutorial si chiama Loop anche se sinceramente mi piace di più chiamarlo Supercar, la serie televisiva girata nel 1983 dove c’era la macchina Kitt dotata di un’ intelligenza artificiale (a cui ci sto lavorando per crearla ;)) e davanti al cofano aveva una serie di led rossi che si accendevano in sequenza. L’esempio che vediamo in questo tutorial fa uso di sei LED collegati ai pin da 2 a 7 in serie con sei resistenze da 220 ohm. Lo scopo del codice , da scrivere, sarà quello di far lampeggiare i LED in sequenza, uno dopo l’altro utilizzando due funzioni già conosciute: digitalWrite() e delay().

Il circuito da costruire è il seguente:

Fate attenzione come collegate i led…

Ora vediamo il codice da scrivere:

#define timer 100  //Tempo di ritardo
#define num_pins 6  //Numero dei pins
int pins[] = { 2, 3, 4, 5, 6, 7 };  //Array dei pin
int i;
void setup()
{
     //Dichiara tutti i pins come OUTPUT
     for (i = 0; i < num_pins; i++)
         pinMode(pins[i], OUTPUT);
}
void loop()
{
     int i;
     //loop per accendere e spegnere i led
     for(i = 0; i < num_pins; i++)
     {
         digitalWrite(pins[i], HIGH);
         delay(timer);
         digitalWrite(pins[i], LOW);
     }
     for (i = num_pins - 1; i >= 0; i--)
     {
         digitalWrite(pins[i], HIGH);
         delay(timer);
         digitalWrite(pins[i], LOW);
     }
}

Analisi del codice:

-int pins[] = { 2, 3, 4, 5, 6, 7 };: In questo modo definiamo un array di numeri interi, ossia possiamo immaginarlo come una cassettiera che contiene n cassetti contente un numero per ogni cassetto. Come vedete ci sono dei cicli for nel codice che “aprono un cassetto” alla volta estraendo il numero dell i-esimo cassetto, in questo modo vengono richiamati i numeri dell’array. Non sò se sono stato chiaro e semplice, ad ogni modo vi faccio un piccolo schemino che vi può essere utile in questo esempio e in altri.

Costruiamo un array di 6 numeri contente i numeri da 2 a 7:

Da scrivere nel codice:  int pins[] = { 2, 3, 4, 5, 6, 7 }

Rappresentazione: Cassetti                      1      2      3      4    | 5|    6

N° nei cassetti                                        2      3      4      5    |6 |    7

Richiamiamo il numero nel cassetto N° 5:

da scrivere nel codice:  int n = pins[5];   //n diventa uguale a 6

Come vedete un numero dentro un array lo possiamo richiamare con  un ciclo for oppure nel modo detto sopra.

Be Sociable, Share!

1 Comment

  1. Danilo scrive:

    Complimenti, bell’articolo. ^_^
    Nel secondo ciclo FOR invece di “i >= 0” io metterei “i >= -1” in modo da far spegnere e riaccendere anche il primo led come l’ultimo.