arduino-scratch

06 - Les entrades digitals de arduino

Anem a conéixer les entrades digitals de arduino i aprendrem a llegir un polsador. Presentarem els valors booleans que són unes dades molt utilitzades en la programació. A més veurem cóm crear estructures condicionals utilitzant el bloc de «Control» «si …/ si no».

Material requerit

Imatge Descripció
Arduino Uno o compatible amb S4A i amb el firmware per S4A carregat.
Una protoboard
Cables de connexió
Un díode led
Dos resistències de 330 Ohms
Un polsador

Les entrades digitals d’arduino

Amb freqüència en electrònica necessitem saber si una llum està encesa o apagada, si algú ha premut un botó o si una porta ha quedat oberta o està tancada.

A aquesta mena de senyals tot/res, SI/NO, TRUE /FALSE, 0/1 se’n diu digitals o Booleanes.

Molts dels sensors i actuadors que veiem en el món real són digitals:

En aquesta lliçó llegirem un botó o polsador extern (entrada digital) i s’encendrà o apagarà un LED (eixida digital) en funció que el polsador estiga pressionat o no.

Esquema elèctric del circuit

Aquest circuit és una mica més complicat que els que hem vist fins ara. El muntatge del LED serà el mateix que en les sessions anteriors. En aquest cas el connectarem a l’eixida digital 10.

Per primera vegada utilitzarem el pin de 5V de la nostra placa arduino. A diferència de les eixides digitals, que poden donar HIGH o LOW, aquest pin sempre donarà HIGH.

Connectarem el polsador S1 al pin de 5V, i tancarem el circuit connectant l’altra part del polsador a l’entrada digital 2 i a GND a través d’una resistència.

Esquema elèctric

D’aquesta forma quan el polsador es tanca obtenim 5V, HIGH, en l’entrada digital 2. Si està obert obtenim 0V, LOW. I llavors, per a què serveix la resistència R1?

Si llegim el valor d’una entrada digital que no té res connectat veurem com a vegades els valors en l’entrada fluctuen. Per a evitar-ho podem connectar una resistència PULLDOWN o PULLUP. Una resistència de PULLDOWN el que fa és garantir que quan el botó no està premut, es llija sempre LOW, és a dir, fixa la tensió a 0V. Per contra, una resistència de PULLUP garanteix que el valor llegit és HIGH, per tant 5V.

Nosaltres hem realitzat el muntatge amb la resistència en PULLDOWN. Mentre no pressionem el polsador, romandrà obert, és a dir que no deixarà que circule el corrent a l’altra part. D’aquesta manera el que tenim és el pin 2 connectat a GND a través de la resistència R1, de manera que llegirà LOW.

En tancar-ho el que fem és tancar el circuit del pin 2 a 5V, amb el que llegirà HIGH.

El muntatge en la protoboard seria el següent:

Muntage

Aprenent a llegir el polsador

Per a llegir el polsador utilitzarem usar un nou bloc de “Control” “si … / si no”.

Bloc si ... si no

El comportament d’aquest bloc és el següent:

El primer que farem serà crear la condició. Per a això utilitzarem els blocs de la categoria “Operadors”. Com en aquest cas el que volem és crear una condició que comprove el valor d’un senyal digital usarem el bloc de “Operadors” “… = …”. Ho seleccionem i ho arrosseguem fins al buit en forma d’hexàgon.

Crear la condició

Per a acabar de crear la condició hem de decidir què és el que volem comparar. En aquest cas el que volem saber és si l’entrada digital 2 està llegint HIGH o LOW. El bloc per a llegir entrades digitals està en la categoria “Moviment”.

Llegir entrades digitals

Encara que en aquest bloc sembla que el que comparem és si està pressionat, això dependrà del circuit. Seria millor que ho interpretàrem simplement com a “valor sensor digital …”; i veure quin valor realment està rebent aqueixa entrada digital.

Si hem entés això últim, hauríem de tindre més o menys clar que el que volem aconseguir amb aquest bloc és una cosa així:

Segons siga el cas, executarem la ordre «digital 13 encès» o «digital 13 apagat»

Seqüència completa

Resum de la sessió

En aquesta sessió hem aprés diverses coses importants:

Veure també