Al següent post entendrem com connectar un polsador (push button) amb Arduino.
El polsador:
El polsador o botó és el dispositiu que permet el pas d’intensitat quan és premut. Un cop es deixa de pressionar torna a la posició inicial.
Està format per quatre potes o terminals, connectats “dos a dos” com s’observa a continuació:
Muntatge del polsador amb Arduino:
Però, com ho anem a muntar? i amb quin tipus de senyal treballarem?
Al treballar amb polsadors treballem amb senyals digitals, no analògiques. Això vol dir que la informació que rebrà la placa només podrà tenir dos estats, és a dir “sí / no”, “HIGH / LOW”, “1/0”, “5V / 0V”, “encès o apagat”.
En principi podríem pensar en fer una connexió directa de el polsador de la següent manera: (connectant el pin digital a terra o a cinc volts a través del botó).
Per què no funcionaria?
Quan tinguéssim el polsador pressionat no hi hauria problema tindríem 0V o 5V. El problema ve quan no ho està. Què passa? Diguem que el pin digital quedaria totalment “a l’aire”, desconnectat del tot. Això és el que s’anomena un “estat d’alta impedància”. El que passa en aquesta situació és que es produeix una indeterminació en el pin digital, és a dir, queda sense un estat definit. Algunes vegades es llegirà HIGH i altres LOW en funció de si hi ha pertorbacions, interferències, l’últim estat en què hagi quedat connectat … en definitiva depèn de diferents factors.
Com podem solucionar-ho?
Amb el muntatge Pull-up o Pull-down.
Aquests muntatges forcen el valor de tensió a 0 o 5 V al pin digital en funció de si pressionem o no el polsador.
El muntatge PULL-UP: Fa que, sense pressionar el polsador, és a dir, sense fer res, el pin digital estigui en HIGH (5V) perquè el pin digital està connectat a 5V a través de la resistència i quan pressionem el polsador, el pin passi a LOW (0V).
El muntatge PULL-DOWN: Fa que, sense pressionar el polsador, és a dir, sense fer res, el pin digital estigui en LOW (0V) perquè el pin digital està connectat a terra a través de la resistència i quan pressionem el polsador, el pin passi a HIGH (5V).
La denominació de resistències pull-down i pull-up fa referència a el muntatge, les resistències en si són resistències usuals que ronden entre 1KΩ i 10KΩ. Normalment s’utilitzen de 4K7Ω o de 10KΩ. Nosaltres hem escollit 4K7Ω.
Amb això acabem d’entendre com realitzar el muntatge del botó. Aquest, a la realitat si triem pull-up seria el següent:
Però donat les reduïdes dimensions amb què moltes vegades ens trobem als nostres projectes, seria possible muntar el botó sense haver de realitzar el muntatge pull-up, és a dir, sense haver d’utilitzar la resistència de 4700Ω?
La resposta és que sí, ja que la placa compatible amb Arduino que fem servir a l’igual que la placa Arduino Uno, compta amb resistències pull-up internes. Això ens permet estalviar-nos tot el muntatge de resistències pull-up o pull-down.
Aquestes resistències pull-up internes es poden activar en el setup del programa en l’IDE d’Arduino.
Tenim dues opcions dins del setup:
- Mitjançant la instrucció pinMode (pin, INPUT_PULLUP); Amb ella declarem el pin com a entrada i activem la seva resistència interna pull-up (HIGH).
- Mitjançant dos instruccions;
- pinMode (pin, INPUT); // declarem el pin com a entrada
- digitalWrite (pin, HIGH); // forcem l’estat d’aquest pin a HIGH.
D’aquesta manera el muntatge quedaria així de senzill:
A l’utilitzar les resistències pull-up internes, ens estalviem haver de fer el muntatge pull-up “extern” i per tant només connectem directament al pin digital d’entrada i a GND. Al pressionar el botó deixem passar el corrent i això ens permet canviar l’estat de HIGH a LOW al pin digital d’entrada.
Programació d’un polsador amb Arduino:
Anem a implementar un senzill programa que farà que al tindre premut el polsador, mostri pel monitor sèrie la paraula “polsat” i quan no estigui polsat mostri “no polsat”.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
int polsadorPin = 4; // Variable que guarda el número del pin al que connectem el polsador. int valorPolsador = 0; // Variable on emmagatzemem la lectura de l'estat del polsador. void setup() { Serial.begin(9600); // Inicialitzem el port sèrie. pinMode(polsadorPin, INPUT_PULLUP); // Declarem la variable polsadorPin com entrada i activem la seva resistència interna Pullup. } void loop(){ valorPolsador = digitalRead(polsadorPin); // Lectura digital de polsadorPin if (valorPolsador == HIGH) { Serial.println("Polsat"); // Si detecta que polsem el polsador imprimeix pel monitor sèrie "polsat". } else { Serial.println("No polsat"); // En caso contrari imprimeix pel monitor sèrie "No polsat". } delay(1000); // Espera un segon a la fi del bucle } |
A la nostra pàgina trobareu el projecte del “Semàfor” amb el qual podràs ampliar els teus coneixements sobre l’ús i muntatge d’un polsador amb Arduino per activar la seqüència de llums del semàfor. FES UNA ULLADA!
IMPORTANT: OFERIM GRANS DESCOMPTES PER A CENTRES EDUCATIUS! SI ETS UN CENTRE EDUCATIU DEMANA PRESSUPOST PERSONALITZAT EN AQUEST ENLLAÇ
[product_page id=”238″]
Si t’ha agradat aquesta entrada al bloc comparteix-la 🙂
Salutacions de l’equipo d’InputMakers i Segueix sempre aprenent!