Gumb: kako uporabiti ta preprost element z Arduino

gumb

Un tipka je gumb, ki vam omogoča prekinitev ali pošiljanje elektronskega signala. S tem preprostim elementom v kombinaciji z drugimi elementi lahko ustvarite projekte za številne aplikacije. Uporaba te tipke je zelo pogosta, kadar gre za projekte z Arduino. In s kombinacijo več teh gumbov lahko ustvarite nekoliko bolj zapleteno tipkovnico, čeprav že obstajajo programabilne tipkovnice za te namene ...

Mimogrede gumba ne smete zamenjati s stikalom. So popolnoma različne stvari. Razlika je v tem, da se stikalo ali stikalo aktivira ali deaktivira z vsakim pritiskom nanj. Medtem ko bo gumb pritisnjen le v enem stanju, medtem ko se nanj pritiska. Pripomnil sem, da lahko pošlje ali prekine, ker obstajata dve osnovni vrsti gumbov.

simbol tipke

Obstajajo NO ali normalno odprti gumbi in NC ali normalno zaprti gumbi. To se vam bo slišalo tudi iz relejev. In ja, gre za popolnoma enako operacijo. Ko imate NC, bo tok skozi njegove terminale prehajal in se prekine le, ko ga pritisnete. Po drugi strani NA ne pusti, da tok teče, ko nanj ne izvajamo pritiska, in ga bo pustil mimo, ko ga pritisnete.

Ker vemo, je skoraj vse, kar morate vedeti o gumbu za povezavo in programiranje z uporabo Arduina. Resnica je, da gre za tako preprost element, da o tej vrsti tipk ni kaj dosti povedati.

Integracija gumba z Arduinom

vezje z Arduino

La priklop gumba za interakcijo z Arduinom ne more biti enostavneje. Primer je diagram, ki ga vidite v teh vrsticah. To bi bilo vse, da začnemo eksperimentirati. Seveda pa s to shemo lahko naredite malo. Morali bi dati malo domišljije, da se odločite, kaj bo ta gumb nadzoroval. Če pogosto berete hwlibre.es, ste že videli nekaj člankov, v katerih smo uporabili gumbe ...

Načini, kako jo povezati

pull-up in pull-down

Ena stvar, ki bi jo morali vedeti, je vprašanje odskoka in kako povezati te gumbe. Najprej gremo na način njihovega povezovanja, kar že veste, da je mogoče z vlečnimi in spuščenimi upori:

  • Dvigni- S to konfiguracijo upora lahko mikrokontroler ali Arduino ob pritisku na tipko vidi ali prebere ničlo na tem zatiču. To pomeni, da ga razlaga kot LOW signal.
  • Potegnite navzdol: V tem primeru je ravno nasprotno, prek povezanega zatiča lahko berete ali sprejemate signal 1 ali HIGH.

Ne zamenjajte ga z NC ali NA, kar je nekaj drugega, kot smo videli že prej. To je neodvisno od drugih ...

Proti odboju

Tipke imajo a učinek odbijanja ko pritisnete. To pomeni, da ko pritisnete ali sprostite, signal niha skozi njegove kontakte in lahko povzroči, da preide iz VISOKEGA stanja v NIZKO ali obratno, ne da bi si zares želel, da se to zgodi. To lahko povzroči neželen učinek na Arduino in naredi nenavadne stvari, na primer aktiviranje elementa, ko smo ga resnično želeli izklopiti s tipko itd. To je zato, ker Arduino odbijanje interpretira, kot da bi bil pritisnjen več kot enkrat ...

Ta negativni učinek ima rešitev. Za to je treba v vezje za preprečevanje odboja (strojna metoda) ali programsko opremo (spreminjanje izvorne kode) vgraditi majhen kondenzator, ne glede na to, ali je bila uporabljena vlečna ali spuščena konfiguracija ali če je NC ali NO. V vseh teh primerih je treba uporabiti rešitev, da se izognemo tem odbojem.

Na primer vlečna in spustna vezja z kondenzator proti odbijanju izgledali bi nekako takole:

rebounder

Medtem ko programska metoda To je razvidno iz tega delčka kode:

if (digitalRead (button) == LOW) // Preverite, ali je gumb pritisnjen
{
pritisnjeno = 1; // Spremenljivka spremeni vrednost
}
če je (digitalRead (gumb) == HIGH && pritisnjeno == 1)
{
// Izvedite želeno dejanje
pritisnjeno = 0; // Spremenljivka se vrne na prvotno vrednost
}

Preprost primer projekta

anti-bounce s tipko in Arduino

Ko se naučimo teme o načinu povezovanja našega gumba in protipovratnega vezja, bomo videli praktičen primer s tipko upravljajte LED. Shema je enako preprosta, kot lahko vidite.

Ko ste pravilno povezani, je naslednja stvar pisanje kodo v Arduino IDE za programiranje plošče in začetek eksperimentiranja z gumbi. Preprost primer kode za nadzor našega vezja bi bil naslednji:

// Primer skice za nadzor gumba
int pin = 2;
int stanje;
utripajoč int = 0;
void setup ()

{
pinMode (2, INPUT); // Za branje impulza z vnosom tega zatiča

pinMode (13, IZHOD); // za LED

Serial.begin (9600);
}
void loop ()

{
if (digitalRead (2) == HIGH)

{

zatič = 2;

antiBounce (); // Klic funkcije preprečevanja odbijanja

}
}
// Programska funkcija za preprečevanje odbijanja
void anti-bounce ()

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

}


5 komentarja, pustite svojega

Pustite svoj komentar

Vaš e-naslov ne bo objavljen. Obvezna polja so označena z *

*

*

  1. Za podatke odgovoren: Miguel Ángel Gatón
  2. Namen podatkov: Nadzor neželene pošte, upravljanje komentarjev.
  3. Legitimacija: Vaše soglasje
  4. Sporočanje podatkov: Podatki se ne bodo posredovali tretjim osebam, razen po zakonski obveznosti.
  5. Shranjevanje podatkov: Zbirka podatkov, ki jo gosti Occentus Networks (EU)
  6. Pravice: Kadar koli lahko omejite, obnovite in izbrišete svoje podatke.

      Marcelo Castillo nadomestna slika je dejal

    Kul !!! Najlepša hvala, sestavljam CNC in paradoksalno je, da mi je bilo najtežje nastaviti gumbe.

      Liliana je dejal

    Živjo! Kot novinec se posvetujem v zvezi z GND ... ..črna črta ne sme izhajati iz negativne črte, ki se nahaja nad tisto, prikazano na diagramu 2?

      John je dejal

    Odlična razlaga .. Pred nekaj leti sem naredil projekt za vžig avtomobila in resnica je, da nikoli nisem mogel pravilno pritisniti tipke. Za vžig .. poskusil bom s to metodo. Najlepša hvala za to veliko pomoč

      omar romero rincon je dejal

    Pozdravljeni, delam projekt s tremi gumbi in 5 LED diodami z naslednjim zaporedjem.
    1 gumb pošlje signal 2 LED diodama, ki sem ju poklical 1 in 2.
    drugi gumb pošlje signal 3 LED diodama, imenovanim 2,3 in 4.
    moj tretji gumb pošlje signal drugim 3 LED diodam, imenovanim 3,4, 5 in XNUMX.

    To zaporedje mi je uspelo narediti, imam samo eno težavo, ob pritisku na 2 gumba pošlje napačen signal LED diodi, ki naj ostane prižgana, zaradi česar občasno utripa, nadzoroval sem jo z zakasnitvijo (2 sekundi, kar potrebujem, da svetleče diode ostanejo prižgane in se nato ugasnejo. potem je moje vprašanje, kako lahko vstavim funkcijo millis v svoj program, ne razumem, kako deluje millis, zanima me, če mi lahko pomagate z Če naredim primer za 3 gumbe z uporabo milisa v vsakem od njih, potrebujem millis, da lahko kadar koli pritisnem gumbe, ne da bi odložil arduino.

         Isaac je dejal

      Pozdravljeni Omar,
      Priporočam, da si ogledate našo vadnico za Arduino:
      https://www.hwlibre.com/programacion-en-arduino/
      Ogledate si lahko tudi naš članek o millisu ():
      https://www.hwlibre.com/millis-arduino/
      Pozdrav.