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.
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
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
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:
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
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);
}
Kul !!! Najlepša hvala, sestavljam CNC in paradoksalno je, da mi je bilo najtežje nastaviti gumbe.
Ž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?
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č
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.
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.