Nupp: kuidas seda lihtsat elementi Arduinoga kasutada

nuppu

Un surunupp on nupp, mis võimaldab teil elektroonilist signaali katkestada või saata. Selle lihtsa elemendi abil koos teiste elementidega saate luua projekte paljude rakenduste jaoks. Seda tüüpi nuppude kasutamine on Arduino projektide puhul väga levinud. Kombineerides neid nuppe, saate luua mõnevõrra keerukama klaviatuuri, kuigi nende kasutusalade jaoks on juba programmeeritavad klaviatuurid ...

Muide, te ei tohiks segi ajada surunuppu lülitiga. Need on täiesti erinevad asjad. Erinevus seisneb selles, et lüliti või lüliti aktiveeritakse või deaktiveeritakse iga sellele vajutatava vajutusega. Kusjuures surunupp jääb ainult ühte olekusse, kui sellele avaldatakse survet. Olen kommenteerinud, et see võib saata või katkestada, sest seepärast on kahte põhilist tüüpi nuppe.

surunupu sümbol

Seal on EI või tavaliselt avatud nupud ja NC või tavaliselt suletud nupud. See kõlab ka teile releedelt. Ja jah, see on täpselt sama operatsioon. Kui teil on NC, laseb see voolu oma terminalidest läbi ja katkestab ainult siis, kui te seda vajutate. Teiselt poolt ei lase NA voolu läbida, kui sellele survet ei avaldata, ja laseb sellel läbi minna ainult siis, kui seda vajutate.

Seda teades on peaaegu kõik, mida peate nupu kohta teadma ühenduse loomiseks ja Arduino abil programmeerimiseks. Tõde on see, et see on nii lihtne element, et seda tüüpi nuppude kohta pole palju rohkem öelda.

Nupu integreerimine Arduinoga

ring Arduinoga

La nupu ühendamine Arduinoga suhtlemiseks muutmine ei saa olla lihtsam. Näiteks on diagramm, mida näete nendel ridadel. See oleks kõik, mida katsetamiseks alustada. Kuid muidugi saate selle skeemiga vähe teha. Peaksite pisut fantaasiat panema, et otsustada, mida see nupp kontrollib. Tegelikult, kui loete sageli veebisaiti hwlibre.es, olete juba näinud mõnda artiklit, kus oleme kasutanud nuppe ...

Selle ühendamise viisid

üles-alla tõmmata

Üks asi, mida peaksite teadma, on põrkumisvastane ja kuidas neid nuppe ühendada. Kõigepealt läheme nende ühendamise viisile, mida juba teate, et see võib olla tõmmatavate ja alla tõmmatavate takistitega:

  • Üles tõmbama- Selle takisti konfiguratsiooni korral saab nuppu vajutades mikrokontroller või Arduino sellel tihvtil nulli näha või lugeda. See tähendab, et see tõlgendab seda LOW signaalina.
  • Tõmba alla: Sel juhul on vastupidi, võite lugeda või vastu võtta 1 või HIGH signaali ühendatud tihvti kaudu.

Ärge segage seda NC või NA-ga, mis on midagi muud, nagu oleme varem näinud. See ei sõltu teistest ...

Põrgavastane

Nuppudel on a tagasilöögi efekt kui seda vajutada. See tähendab, et kui seda vajutatakse või vabastatakse, on signaali kõikumine, mis läbib selle kontakte ja võib põhjustada selle ülemineku HIGT-olekust LOW-i või vastupidi, ilma et see tegelikult sooviks. See võib Arduinole avaldada soovimatut mõju ja panna teda tegema kummalisi asju, näiteks aktiveerima elemendi, kui tahtsime selle tõesti nupuga välja lülitada jne. Seda seetõttu, et Arduino tõlgendab põrkeid nii, nagu oleks seda rohkem kui üks kord vajutatud ...

See negatiivne mõju sellel on lahendus. Selleks tuleb põrgavastases vooluringis (riistvaraline meetod) või tarkvaras (lähtekoodi muutmine) rakendada väike kondensaator, olenemata sellest, kas on kasutatud üles- või allatõmbamise konfiguratsiooni või kui see on NC või NO. Kõigil neil juhtudel tuleb nende tagasilöökide vältimiseks lahendus rakendada.

Näiteks tõmmake üles ja alla tõmmake vooluahelad põrkumisvastane kondensaator nad näeksid välja umbes sellised:

tagasilööja

Kuigi tarkvara meetod Seda võis näha sellest koodilõigust:

if (digitalRead (nupp) == MADAL) // Kontrollige, kas nuppu on vajutatud
{
vajutatud = 1; // Muutuja muudab väärtust
}
if (digitalRead (vajutusnupp) == KÕRGE && vajutatud == 1)
{
// Sooritage soovitud toiming
vajutatud = 0; // Muutuja naaseb oma algsele väärtusele
}

Lihtne projekti näide

nupuvajutusvastane põrge ja Arduino

Kui oleme õppinud nupu ja tagasilöögivastase ahela ühendamise viiside teema, näeme praktilist näidet LED-i juhtimiseks vajutage nuppu. Skeem on sama lihtne, kui näete.

Kui see on õigesti ühendatud, on järgmine asi kirjutamine Arduino IDE-s olev kood paneeli programmeerimiseks ja nuppudega katsetamiseks. Lihtne näide meie vooluahela juhtimiseks oleks järgmine:

// Nupu juhtimiseks visandi näide
int tihvt = 2;
int olek;
pulseeriv int = 0;
kehtetu seadistamine ()

{
pinMode (2, INPUT); // Impulsi lugemiseks selle tihvti sisestamise abil

pinMode (13, OUTPUT); // LED-i jaoks

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

{
kui (digitalRead (2) == KÕRGE)

{

tihvt = 2;

antiBounce (); // Kõne põrgatamisvastasele funktsioonile

}
}
// Tarkvara põrkumisvastane funktsioon
tühine põrkumisvastane ()

{
while (digitalRead (pin) == MADAL);
olek = digitalRead (13);
digitalWrite (olek 13 ,!);
while (digitalRead (pin) == KÕRGE);

}


5 kommentaari, jätke oma

Jäta oma kommentaar

Sinu e-postiaadressi ei avaldata. Kohustuslikud väljad on tähistatud *

*

*

  1. Andmete eest vastutab: Miguel Ángel Gatón
  2. Andmete eesmärk: Rämpsposti kontrollimine, kommentaaride haldamine.
  3. Seadustamine: teie nõusolek
  4. Andmete edastamine: andmeid ei edastata kolmandatele isikutele, välja arvatud juriidilise kohustuse alusel.
  5. Andmete salvestamine: andmebaas, mida haldab Occentus Networks (EL)
  6. Õigused: igal ajal saate oma teavet piirata, taastada ja kustutada.

      Marcelo Castillo kohatäide DIJO

    Lahe !!! Suur aitäh teile, olen ehitanud CNC-d ja paradoksaalselt on nuppe olnud minu jaoks kõige raskem häälestada.

      Liliana DIJO

    Tere! Konsulteerin algajana seoses GND-ga ... .. must juhe ei tohiks väljuda negatiivsest joonest, mis asub joonisel 2 näidatud joonest kõrgemal?

      John DIJO

    Suurepärane seletus .. paar aastat tagasi tegin autosüüteprojekti ja tõsi on see, et ma ei suutnud kunagi õiget klahvivajutust teha. Süüte eest .. proovin seda meetodit. Tänan teid väga selle suure abi eest

      omar romero rincon DIJO

    Tere, teen projekti kolme nupu ja 5 lediga järgmise järjestusega.
    1 nupp saadab signaali 2 ledile, mida olen kutsunud 1 ja 2.
    teine ​​nupp saadab signaali 3 LED-ile, mida nimetatakse 2,3 ja 4.
    minu kolmas nupp saadab signaali veel kolmele ledile, mida nimetatakse 3 ja 3,4.

    Mul on see jada õnnestunud, mul on ainult üks probleem, et 2 nuppu vajutades saadab LED-ile vale signaali mis peaks põlema jääma, põhjustades selle katkendliku vilkumise, olen seda kontrollinud viivituse seadmisega (2 sekundit , mida ma vajan, et LEDid põlema jääksid ja siis välja lülituksid.. Minu küsimus on, et kuidas saaksin oma programmi millis funktsiooni panna, ma ei saa aru kuidas millis töötab, tahan teada, kas saate mind aidata tuues näite 3 nupu kohta, milles igas neist kasutatakse millisid, vajan millisid, et saaksin nuppe igal ajal vajutada, ilma et arduinot viivitataks.

         Isaac DIJO

      Tere Omar,
      Soovitan teil vaadata meie Arduino õpetust:
      https://www.hwlibre.com/programacion-en-arduino/
      Ja näete ka meie artiklit Millis():
      https://www.hwlibre.com/millis-arduino/
      Tervitus.