Drukknop: hoe om hierdie eenvoudige element met Arduino te gebruik

knoppie

Un drukknop is 'n knoppie waarmee u 'n elektroniese sein kan onderbreek of stuur. Met hierdie eenvoudige element, gekombineer met ander elemente, kan u projekte vir verskillende toepassings skep. Die gebruik van hierdie tipe drukknoppies is baie algemeen as dit kom by projekte met Arduino. En deur verskeie van hierdie knoppies te kombineer, kan u 'n ietwat ingewikkelder sleutelbord skep, hoewel daar reeds programmeerbare sleutelborde vir hierdie gebruike bestaan ​​...

Terloops, u moet die drukknop nie met 'n skakelaar verwar nie. Dit is heeltemal verskillende dinge. Die verskil is dat die skakelaar of skakelaar geaktiveer of gedeaktiveer word met elke druk wat daarop gemaak word. Terwyl die drukknop slegs in een toestand sal bly terwyl daar druk op uitgeoefen word. Ek het opgemerk dat dit kan stuur of onderbreek, dit is omdat daar twee fundamentele soorte knoppies is.

drukknoppie-simbool

Daar is die GEEN of normaalweg drukknoppies oop nie en NC of normaalweg drukknoppies. Dit sal ook vir u van die aflosse klink. En ja, dit is presies dieselfde bewerking. As u 'n NC het, sal dit stroom deur sy terminale laat gaan en dit onderbreek net terwyl u daarop druk. Aan die ander kant laat die NV nie stroom verbygaan as daar nie druk op uitgeoefen word nie en sal dit slegs laat verbygaan as jy daarop druk.

Wetende dat, is amper alles wat u moet weet oor 'n drukknop om u verbinding en programmering met Arduino te begin. Die waarheid is dat dit so 'n eenvoudige element is dat daar nie veel meer oor hierdie tipe drukknoppies te sê is nie.

Drukknop-integrasie met Arduino

stroombaan met Arduino

La verbind 'n drukknop om dit met Arduino te laat kommunikeer, kan nie eenvoudiger wees nie. 'N Voorbeeld is die diagram wat u op hierdie lyne kan sien. Dit is al wat nodig is om te begin eksperimenteer. Maar met daardie skema kan u natuurlik min doen. Dit sal vir u nodig wees om 'n bietjie verbeelding te gee om te besluit wat die knoppie gaan beheer. Trouens, as u hwlibre.es gereeld lees, het u al 'n paar artikels gesien waar ons drukknoppies gebruik het ...

Maniere om dit te verbind

optrek en aftrek

Een ding wat u moet weet is die kwessie van anti-weiering en hoe om hierdie drukknoppies aan te sluit. Eerstens gaan ons na die manier om dit aan te sluit, wat u reeds weet met die optrek- en aftrekweerstand:

  • Optrek- Met hierdie weerstand kan die mikrobeheerder of Arduino 'n nul op die pen sien of lees as die drukknop ingedruk word. Dit interpreteer dit as 'n lae sein.
  • Aftrek: In hierdie geval is dit die teenoorgestelde; u kan 'n 1 of HOG sein lees of ontvang deur die gekoppelde pen.

Moenie dit met die NC of NA verwar nie, wat iets anders is, soos ons voorheen gesien het. Dit is onafhanklik van die ander ...

Anti-weiering

Die drukknoppies het 'n rebound-effek as dit gedruk word. Dit wil sê, wanneer dit ingedruk of losgelaat word, is daar 'n skommeling in die sein wat deur sy kontakte beweeg en kan veroorsaak dat dit van 'n HIGT-toestand na LAAG gaan of andersom sonder om regtig te wil hê dat dit moet gebeur. Dit kan 'n ongewenste uitwerking op die Arduino hê en vreemde dinge laat doen, soos om 'n element te aktiveer wanneer ons dit regtig wou afskakel met die drukknop, ens. Dit is omdat die Arduino die weiering interpreteer asof dit meer as een keer gedruk is ...

Daardie negatiewe effek dit het 'n oplossing. Hiervoor moet 'n klein kondensator in die anti-weieringskring (hardewaremetode) of sagteware (wat die bronkode wysig) geïmplementeer word, hetsy 'n uittrek- of aftrek-konfigurasie is gebruik of as dit NC of NO is. In al hierdie gevalle moet die oplossing geïmplementeer word om hierdie terugslae te vermy.

Trek- en aftrekbane met die anti-weiering kondensator hulle sal so lyk:

rebounder

Terwyl sagteware metode Dit kan gesien word in hierdie kode:

if (digitalRead (knoppie) == LOW) // Kyk of die knoppie ingedruk word
{
ingedruk = 1; // Die veranderlike verander die waarde
}
as (digitalRead (knoppie) == HOOG && ingedruk == 1)
{
// Voer die gewenste aksie uit
ingedruk = 0; // Die veranderlike keer terug na sy oorspronklike waarde
}

Eenvoudige projekvoorbeeld

weerkaats met drukknop en Arduino

Nadat ons die onderwerp geleer het van die maniere om ons drukknop en die anti-rebound-stroombaan te verbind, gaan ons 'n praktiese voorbeeld sien om beheer 'n LED met die drukknop. Die skema is net so eenvoudig soos u kan sien.

Sodra dit korrek gekoppel is, is die volgende ding om te skryf die kode in Arduino IDE om u paneel te programmeer en met die knoppies te eksperimenteer. 'N Eenvoudige kode-voorbeeld om ons stroombaan te beheer, is die volgende:

// Voorbeeld van skets om die knoppie te beheer
int pen = 2;
int-staat;
polsende int = 0;
nietige opstelling ()

{
pinMode (2, INPUT); // Om die pols te lees deur die peninvoer te lewer

pinMode (13, OUTPUT); // Vir die LED

Serial.begin (9600);
}
nietige lus ()

{
as (digitalRead (2) == HOOG)

{

pen = 2;

antiBounce (); // Bel na die anti-weiering-funksie

}
}
// Sagteware anti-weiering funksie
nietig anti-weiering ()

{
terwyl (digitalRead (pin) == LOW);
toestand = digitalRead (13);
digitalWrite (13 ,! staat);
terwyl (digitalRead (pin) == HIGH);

}


Die inhoud van die artikel voldoen aan ons beginsels van redaksionele etiek. Klik op om 'n fout te rapporteer hier.

5 kommentaar, los joune

Laat u kommentaar

Jou e-posadres sal nie gepubliseer word nie. Verpligte velde gemerk met *

*

*

  1. Verantwoordelik vir die data: Miguel Ángel Gatón
  2. Doel van die data: Beheer SPAM, bestuur van kommentaar.
  3. Wettiging: U toestemming
  4. Kommunikasie van die data: Die data sal nie aan derde partye oorgedra word nie, behalwe deur wettige verpligtinge.
  5. Datastoor: databasis aangebied deur Occentus Networks (EU)
  6. Regte: U kan u inligting te alle tye beperk, herstel en verwyder.

  1.   Marcelo Castillo plekhouer beeld dijo

    Koel!!! Baie dankie, ek het 'n CNC gebou en paradoksaal genoeg was die knoppies vir my die moeilikste om in te stel.

  2.   Liliana dijo

    Hi! Ek raadpleeg as 'n beginner in verband met die GND ... .. moet die swart draad nie uit die negatiewe lyn kom nie, wat bo die punt in diagram 2 is?

  3.   John dijo

    Uitstekende verduideliking .. 'n paar jaar gelede het ek 'n motorontstekingsprojek gedoen en die waarheid is dat ek nooit 'n korrekte toetsaanslag kon maak nie. Vir die ontsteking .. Ek gaan hierdie metode probeer.

  4.   omar romero rincon dijo

    Hallo, ek doen 'n projek met drie knoppies en 5 LED's met die volgende volgorde.
    1 drukknoppie stuur 'n sein na 2 LED's, wat ek 1 en 2 genoem het.
    die tweede drukknop stuur sein na 3 LED's, genoem 2,3 en 4.
    my derde drukknop stuur 'n sein na nog 3 LED's, genoem 3,4, 5 en XNUMX.

    Ek het dit reggekry om daardie volgorde te doen, ek het net een probleem, wanneer ek 2 knoppies druk, stuur dit 'n vals sein na die LED wat moet aanbly wat veroorsaak dat dit kort-kort flikker, ek het dit beheer deur 'n vertraging (van 2 sekondes) , wat is wat ek nodig het sodat die leds aan bly en dan afskakel.dan is my vraag hoe kan ek die millis funksie in my program sit, ek verstaan ​​nie hoe millis werk nie, ek wil weet of jy my kan help deur 'n voorbeeld vir 3 knoppies te maak deur millis in elk van hulle te gebruik, het ek millis nodig om die knoppies te eniger tyd te kan druk sonder om die arduino te vertraag.

    1.    Isak dijo

      Hallo Omar,
      Ek beveel aan dat u ons Arduino-tutoriaal sien:
      https://www.hwlibre.com/programacion-en-arduino/
      En jy kan ook ons ​​artikel oor millis sien ():
      https://www.hwlibre.com/millis-arduino/
      'N groet.