En aquest apartat començarem a aprendre les diferents instruccions de programació amb Arduino, així com les estructures de programació més típiques. Per començar aprendrem com programar:
Sortides digitals
Entrades digitals
Condicionals
Aquest és un muntatge senzill en què programaràs la il·luminació de 2 leds fent servir les sortides digitals de la placa Arduino. Els leds s'engegaran alternativament cada segon.
Pots provar a canviar el temps d'il·luminació de cada led? Pots connectar més leds i modificar el programa?
Components:
Placa Arduino Uno
Connectors
1 led verd
1 led vermell
2 resistències de 220 Ω
Ara et proposo que facis un muntatge aplicant el que has aprés sobre il·luminació de leds. Tens dues opcions:
Semàfor: munta 3 leds (vermell, groc i verd) i programa la seqüència d'engegada-apagada com si fos un semàfor.
Seqüencia de llums: fes un muntatge amb diversos leds i programa una seqüència lliure d'il·luminació. Per exemple, que s'engeguen els leds d'una banda a un altra, o primer els parells i després els senars, o la seqüència que tu vulguis.
Aquest muntatge simula una alarma lumínica. En un estat normal (amb el polsador obert) hi ha un led de color verd encès. Quan apretem el polsador (a causa d'alguna alerta), començaran a il·luminar-se els 2 leds vermells alternativament fins que soltem el polsador.
Important
Fixar-se en el funcionament de la instrucció de comparació if ...else que es fa servir a la programació.
Components:
Placa Arduino Uno
Connectors
1 led verd
2 leds vermells
1 polsador
3 resistències de 220 Ω per limitar el corrent que arriba als leds
1 resistència pull-down de 10 KΩ, que envia un LOW al pin del polsador quan aquest està obert.
Explicació del funcionament de les resistències pull-up and pull-down.
La instrucció condicional és molt utilitzada en el món de la programació. Hi ha dos elements:
Condició
Instruccions a fer
Si es compleix la condició, el programa entrarà a fer les instruccions que hi ha dins del condicional.
En el doble condicional (si /si no), s'especifiquen les instruccions a fer si es compleix la condició, i si no es compleix la condició.
Ara et proposo que facis un muntatge aplicant el que has aprés sobre leds i polsadors. Tens dues opcions:
Semàfor amb pas de vianants: munta i programa un semàfor (vermell-groc-ver) amb un altre semàfor per vianants (verd-vermell), que s'activa quan els vianants premen un polsador.
Seqüencies de llums: fes un muntatge amb diversos leds polsadors, i programa diferents seqüències d'il·luminacions que canvien quan premem el polsador.
Arduino, com gairebé tots els microprocessadors, no és capaç de generar sortides analògiques. El que podem fer és simular una sortida analògica mitjançant cicles d'engegada i apagada de la sortida de 5V, en els quals modifiquem l'amplada (el temps) de l'engegada. El valor mitjà de la tensió de sortida vindria a ser la mitjana entre el temps apagat i el temps engegat. Tot i que realment no és un senyal analògic, l'efecte exterior ho sembla. Així podem fer que es modifiqui la lluminositat de leds, o la velocitat de gir de motors.
La placa Arduino UNO disposa de 6 sortides PWM que estan identificades amb el símbol: "~" al costat del número del pin. Són els pins: 3, 5, 6, 9, 10 i 11.
Arduino utilitza 8 bits d'informació per emmagatzemar les entrades i sortides digitals. Tal i com veiem en aquesta taula de potències de dos, en un sistema binari (0 i 1), si disposem de 8 bits d'informació, tenim 256 possibilitats diferents. Normalment, en el món de la informàtica el primer valor és el 0, i per tant, arribem fins el 255. En el cas de les sortides PWM, això voldrà dir 256 fraccions de tensió entre 0V i 5 V.
Modifica el valor de 0 a 255 per obtenir valors de lluminositat de 0% al 100%
Utilitzem un bucle que es repeteix tantes vegades com indiquem en el comptador amb increments de una unitat. Dins del bucle escrivim les instruccions que volem repetir.
Utilitzem un bucle que es repeteix mentre es compleix una condició, en aquest cas, que la intensitat sigui menor a 255. Dins del bucle escrivim les instruccions que volem repetir.
En aquest programa utilitzem la variable intensitat per modificar la sortida PWM del pin 10. El muntatge fa que el led s'il·lumini progressivament del 0% al 100%, i a continuació, comenci a apagar-se lentament.
Els 3 codis següents tenen el mateix efecte:
En el primer codi, utilitzem la instrucció "Escriure digital" per enviar 0V o 5V a cadascun dels pins del led RGB.
En el segon codi, utilitzem una instrucció específica per programar leds RGB, en la qual podem triar el color d'una paleta de colors.
En el tercer codi, utilitzem funcions per programar cadascun dels colors. Des del bucle principal, anem fent crides a cadascuna de les funcions que generen els colors.
Modifica els valors assignats als pins R, G i B amb valors compresos entre 0 i 255. D'aquesta forma podrem aconseguir qualsevol color per addicció d'aquests tres colors primaris.
Aquest programa utilitza tres variables R, G i B on va desant números aleatoris compresos entre 0 i 255. A cada execució del bucle principal, es modifiquen aquests números aleatoris i, per tant, es modifica el color de sortida pel led RGB.
Display 7 segments - 1 dígit
Nomenclatura dels segments del Display
Configuració de pins i segments del Display