Polsador: com utilitzar aquest simple element amb Arduino

polsador

Un polsador és un botó que permet interrompre o enviar un senyal electrònic. Amb aquest element tan simple combinat amb altres elements es poden crear projectes per a multitud d'aplicacions. L'ús d'aquest tipus de polsadors és molt comú quan es tracta de projectes amb Arduino. I combinant diversos d'aquests botons es pot crear un teclat una mica més complex, tot i que ja hi ha teclats programables per a aquests usos ...

Per cert, no has de confondre el polsador amb un interruptor. Són coses totalment diferents. La diferència és que l'interruptor o commutador s'activa o desactiva amb cada pulsació que es fa sobre ell. Mentre que el polsador només romandrà enun estat mentre s'està exercint pressió sobre ell. He comentat que pot enviar o interrompre, això es degut a que hi ha dos tipus fonamentals de polsadors.

símbol polsador

existeixen els polsadors NA o normalment oberts i els NC o normalment tancats. Això et sonarà també dels relés. I sí, és exactament el mateix funcionament. Quan tens un NC deixarà passar corrent per les seves terminals i s'interromp només mentre ho estàs fent clic. En canvi, el NA no deixa passar corrent quan no s'exerceix pressió sobre ell i només la deixarà passar quan el premis.

Sabent això, és gairebé tot el que has de saber d'un polsador per començar ja la seva connexió i programació fent ús d'Arduino. La veritat que és un element tan simple que no hi ha massa més a dir d'aquest tipus de polsadors.

Integració de l'polsador amb Arduino

circuit amb Arduino

La connexió d'un polsador per fer-ho interactuar amb Arduino no pot ser més simple. Un exemple és l'esquema que pots veure sobre aquestes línies. Això seria tot el necessari per començar a experimentar. Però clar, amb aquest esquema poc pots fer. Faltaria que posis una mica d'imaginació per decidir què és el que va a controlar aquest polsador. De fet, si llegeixes freqüentment hwlibre.es ja hauràs vist alguns articles on hem usat polsadors ...

Formes de connectar

pull-up i pull-down

Una cosa que sí que hauries de conèixer és el tema de l'antirebote i la forma de connectar aquests polsadors. Primer anem a la forma de connectar, que ja saps que pot ser amb les resistències pull-up i pull-down:

  • Aixecar: Amb aquesta configuració de resistències, quan es pressiona el polsador, el microcontrolador o Arduino pot veure o llegir un zero en aquest pin. És a dir, ho interpreta com un senyal LOW.
  • Tirar cap avall: En aquest cas és el contrari, podrà llegir o rebre un senyal a 1 o HIGH pel pin connectat.

No ho confonguis amb el NC o NA, que és una altra cosa diferent com ja hem vist anteriorment. Això és independent a l'altre ...

Anti-Rebot

Els polsadors tenen un efecte rebot quan es premen. És a dir, quan es pressiona o solta es produeix una fluctuació en el senyal que passa pels seus contactes i podria fer que es passi d'un estat HIGT a LOW o viceversa sense que realment vulguem que passi això. Això pot produir un efecte indesitjat en Arduino i que faci coses estranyes, com activar un element quan realment el que volíem és apagar-lo amb el polsador, etc. Això es deu al fet que Arduino interpreta els rebots com si s'hagués premut més d'una vegada ...

Aquest efecte negatiu té solució. Per això cal implementar un petit condensador en el circuit antirrebote (mètode per hardware) o per programari (modificant el codi font), tant si s'ha fet servir una configuració pull-up com pull-down o si és NC o NA. En tots aquests casos cal implementar la solució per evitar aquests rebots.

Per exemple, els circuits pull-up i pull-down amb el condensador antirebot quedarien alguna cosa així:

antirebot

Mentre que el mètode mitjançant programari podria veure en aquest snippet de codi:

if (digitalRead (polsador) == LOW) // Comprova si el polsador està premut
{
pressionat = 1; // La variable canvia de valor
}
if (digitalRead (polsador) == HIGH && pressionat == 1)
{
// Realitza l'acció desitjada
pressionat = 0; // La variable torna al seu valor original
}

Exemple de projecte simple

antirebote amb polsador i Arduino

Un cop après el tema de les formes de connectar el nostre polsador i de l'circuit antirrebote, anem a veure un exemple pràctic per controlar un LED amb el polsador. L'esquema és igualment simple com pots veure.

Un cop connectat de forma correcta, el següent és escriure el codi en Arduino IDE per programar la teva placa i començar a experimentar amb els polsadors. Un exemple senzill de codi per controlar el nostre circuit seria el següent:

// Exemple de sketch per controlar el polsador
int pin = 2;
int estat;
int polsant = 0;
configuració nul·la ()

{
pinMode (2, INPUT); // Per llegir la pulsació es farà cons aquest pin entrada

pinMode (13, OUTPUT); // Per al LED

Serial.begin (9600);
}
bucle buit ()

{
if (digitalRead (2) == HIGH)

{

pin = 2;

antiRebote (); // Crida a la funció antirrebote

}
}
// Funció antirrebote per programari
void antiRebote ()

{
while (digitalRead (pin) == LOW);
estat = digitalRead (13);
digitalWrite (13,! estat);
while (digitalRead (pin) == HIGH);

}


5 comentaris, deixa el teu

Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.

  1.   Marcelo Castell va dir

    Genial !!! Moltes gràcies, he estat construint un CNC i paradoxalment els botons han estat el que més m'ha costat afinar.

  2.   Liliana va dir

    Hola! Consulto com novençana, en la connexió amb el GND ... ..el cable negre no hauria de sortir de la línia negativa, que està situada sobre de la que es visualitza en l'esquema 2?

  3.   Joan va dir

    Excel·lent explicación..hace un parell d'anys vaig fer un projecte d'encesa d'un automòbil i la veritat mai vaig poder fer un clic correcta Per l'encesa ..voy a provar amb aquest mètode .Li agraeixo molt per aquesta gran ajuda

  4.   omar romaní racó va dir

    Hola, estic fent un projecte amb tres botons i 5 leds amb la següent seqüència.
    1 push botton envia un senyal a 2 leds, que he trucat 1 i 2.
    el segon pushbotton mana semal a 3 leds, anomenats 2,3 i 4.
    el meu tercer pushbotton mana senyal a altres 3 leds, anomenades 3,4 i 5.

    he aconseguit fer aquesta seqüència, només tinc un problema, en pressionar 2 botons, mana un senyal fals a led que hauria de romandre arrestat fent que aquest parpellegi de forma intermitent, ho he controlat posant-li un delay (de 2 segons, que és el que necessito perquè els leds es mantinguin arrestats i posteriorment s'apagui, llavors el meu dubte és com puc ficar la funcio millis al meu programa, no entenc com funciona millis, vull saber si em poden ajudar fent un exemple per a 3 botons usant millis en cadascun d'ells , necessito millis per poder preuar en qualsevol moment els botons sense que es retardi arduí.

    1.    Isaac va dir

      Hola Omar,
      Et recomano veure el nostre tutorial d'Arduino:
      https://www.hwlibre.com/programacion-en-arduino/
      I també pots veure el nostre article sobre millis():
      https://www.hwlibre.com/millis-arduino/
      Una salutació.