Introducció a la robòtica en trenta-una classes/Onzè dia: llums de Nadal
Llums de Nadal.
Avui, essent el darrer dia de classe abans de Nadal, hem fet seqüències de llums.
Una de les maneres de fer-ho, és amb un comptador, per a tenir memòria de per quin llum passem.
Per a fer-ho fàcil, hem connectat un led a cadascuna de les sortides que van de la 2 a la 12. Fent-ho amb sortides consecutives, serà senzill automatitzar seqüències. Penseu que els leds tenen polaritat, i que cal una resistència a cadascun per a limitar-ne el corrent.
Coses noves: comptador++, és un abreujament de comptador=comptador+1. De la mateixa manera, comptador-- decrementa el comptador en una unitat.
A continuació un programa d’exemple amb diferents seqüències. Només són un petit exemple. Inventeu-ne de noves.
void setup() {
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
pinMode(12,OUTPUT);
}
void loop() {
int comptador=2;
while(comptador<13){ // encenem els llums del 2 al 12
digitalWrite(comptador,1);
comptador++;
delay(250);
}
comptador=12;
while(comptador>1){ // apaguem els llums del 12 al 2
digitalWrite(comptador,0);
comptador- -;
delay(300);
}
comptador=2;
while(comptador<14){ // fem córrer un led del 2 al 12
digitalWrite(comptador,1);
digitalWrite(comptador-1,0);
comptador++;
delay(300);
}
}
Veiem que en el digitalWrite no diem un número de pin concret sino que hi posem
comptador com a argument: sí a les funcions també podem posar variables en lloc de
valors fixes.
A més, en la tercera seqüència, veiem que, a part d’anar encenent el led que diu el
comptador, apaguem el led que havíem encès quan el comptador valia una unitat menys.
Efectivament, la funció digitalWrite, també admet com a número de pin una funció
matemàtica (comptador-1), a més de variables.