Barra de Leds. Arrays i bucles For

Barra de Leds. Arrays i bucles For

BarraLeds

Volem controlar l’encesa intermitent dels 10 LEDs d’una barra de LEDs. El programa surt llarguíssim i molt repetitiu. Cal racionalitzar el codi!

Comencem per la declaració dels pins utilitzats:

Si utilitzem un Array podem transformar les 10 línies de codi necessàries per declarar els pins en una sola:

array03

Un Array és un conjunt de variables que s’emmagatzemen en posicions successives. La seva declaració ha de tenir la forma:

tipus de dades nom Array [núm d’elements] = {valor1, valor2, …, valor n} ;

* el nombre d’elements podem especificar-lo o no, però els claudàtors s’han de mantenir. 

Configuració dels pins digitals:

Quan utilitzem els valors al programa ens haurem de referir a la seva posició dins l’array.
Compte! El primer element ocupa la posició 0. En el nostre cas, array amb 10 elements, l’últim ocupa la posició 9.
Així, quan configurem els pins digitals amb la instrucció pinMode (pin,OUTPUT); ho haurem de fer així:

array04

Aquest codi és molt repetitiu, estem utilitzant la mateixa instrucció 10 vegades.
Si utilitzem un bucle For, podem repetir una o un seguit d’instruccions tantes vegades com vulguem. La seva sintaxi:

paràmetres del for (entre ( ) i separats per ;):
inicialització: cal una variable comptador (x) el valor inicial de la qual ha de ser 0.
condició (test): el bucle es repetirà mentre es compleixi la condició especificada. Si volem repetir les instruccions 10 vegades, la condició ha de ser: mentre la variable x < 10.
incrementador: cada cop que s’avaluï la condició i s’executi el codi, la variable comptador ha d’incrementar el seu valor. En el nostre cas, el nou valor de x serà l’antic valor de x + 1 o el que és el mateix, x++
* Les instruccions a repetir, com sempre, entre { }

Així, el codi anterior, que necessita 10 línies per configurar els pins, podem simplificar-lo i configurar tots a l’hora:

For04

Definició dels comportaments dels leds:

Per exemple per fer-los intermitents tots a lhora utilitzant bucles for:

For05

Una mica maquejat, el programa complet:

BarraLedsIntermitent_Programa

Un altre exemple d’ús d’Arrays i bucles For:

El projecte Final Countdown link de l’alumne Tecno-Lògic D Chamizo amb visualitzador de 7 segments:


https://gist.github.com/a-r-d/2857293