Trykknap: hvordan man bruger dette enkle element med Arduino

knap

Un trykknap er en knap, der giver dig mulighed for at afbryde eller sende et elektronisk signal. Med dette enkle element kombineret med andre elementer kan du oprette projekter til en lang række applikationer. Brugen af ​​denne type trykknapper er meget almindelig, når det kommer til Arduino-projekter. Og ved at kombinere flere af disse knapper kan du oprette et noget mere komplekst tastatur, selvom der allerede er programmerbare tastaturer til disse anvendelser ...

Af den måde, du skal ikke forveksle trykknappen med en kontakt. De er helt forskellige ting. Forskellen er, at kontakten eller kontakten aktiveres eller deaktiveres med hvert tryk, der foretages på den. Mens trykknappen kun forbliver i en tilstand, mens der udøves tryk på den. Jeg har kommenteret, at det kan sende eller afbryde, det er fordi der er to grundlæggende typer knapper.

trykknap-symbol

Der er NO eller normalt åbne trykknapper og NC eller normalt lukkede trykknapper. Dette lyder også for dig fra relæerne. Og ja, det er nøjagtigt den samme operation. Når du har en NC, vil den lade strøm passere gennem sine terminaler, og den afbryder kun, mens du trykker på den. På den anden side lader NA ikke strøm passere, når der ikke udøves tryk på det, og vil kun lade det passere, når du trykker på det.

At vide det, er næsten alt hvad du behøver at vide om en trykknap for at starte din forbindelse og programmering ved hjælp af Arduino. Sandheden er, at det er et så simpelt element, at der ikke er meget mere at sige om denne type trykknapper.

Push Button-integration med Arduino

kredsløb med Arduino

La tilslutning af en trykknap at få det til at interagere med Arduino kunne ikke være enklere. Et eksempel er det diagram, som du kan se på disse linjer. Det ville være alt, hvad der kræves for at begynde at eksperimentere. Men med den ordning kan du selvfølgelig ikke gøre meget. Du bliver nødt til at lægge lidt fantasi for at bestemme, hvad den knap skal kontrollere. Faktisk, hvis du ofte læser hwlibre.es, har du allerede set nogle artikler, hvor vi har brugt trykknapper ...

Måder at forbinde det med

pull-up og pull-down

En ting, som du bør vide, er spørgsmålet om anti-bounce og hvordan man forbinder disse trykknapper. Først går vi til vejen for at forbinde dem, som du allerede ved kan være med pull-up og pull-down modstandene:

  • Træk op- Med denne modstandskonfiguration kan mikrokontroller eller Arduino, når der trykkes på trykknappen, se eller læse et nul på den pin. Det vil sige, det fortolker det som et LAVT signal.
  • Træk ned: I dette tilfælde er det modsatte, du kan læse eller modtage et 1 eller HIGH signal gennem den tilsluttede pin.

Forveksl det ikke med NC eller NA, hvilket er noget andet, som vi har set tidligere. Dette er uafhængigt af det andet ...

Anti-Bounce

Trykknapperne har en afvisningseffekt når den trykkes. Når det trykkes eller frigives, er der en udsving i signalet, der passerer gennem dets kontakter og kan få det til at gå fra en HIGT-tilstand til LAV eller omvendt uden virkelig at ønske, at det skal ske. Det kan producere en uønsket effekt på Arduino og få den til at gøre mærkelige ting, som at aktivere et element, når vi virkelig ville slå det fra med trykknappen osv. Det er fordi Arduino fortolker hoppene, som om den var blevet presset mere end en gang ...

Den negative effekt det har en løsning. Til dette skal en lille kondensator implementeres i anti-bounce-kredsløbet (hardwaremetoden) eller softwaren (ændring af kildekoden), uanset om der er brugt en pull-up- eller pull-down-konfiguration, eller hvis den er NC eller NO. I alle disse tilfælde skal løsningen implementeres for at undgå disse rebounds.

For eksempel pull-up og pull-down kredsløb med anti-bounce kondensator de ville se sådan ud:

rebounder

Mens softwaremetode Det kunne ses i dette kodestykke:

hvis (digitalRead (knap) == LAV) // Kontroller, om der trykkes på knappen
{
presset = 1; // Variablen ændrer værdi
}
hvis (digitalRead (trykknap) == HIGH && presset == 1)
{
// Udfør den ønskede handling
presset = 0; // Variablen vender tilbage til sin oprindelige værdi
}

Enkelt projekteksempel

anti-bounce med trykknap og Arduino

Når vi først har lært emnet om måder at forbinde vores trykknap og anti-rebound kredsløbet på, vil vi se et praktisk eksempel på styr en LED med trykknappen. Ordningen er lige så enkel som du kan se.

Når den er tilsluttet korrekt, er den næste ting at skrive koden i Arduino IDE for at programmere dit panel og begynde at eksperimentere med knapperne. Et simpelt kodeeksempel til styring af vores kredsløb ville være følgende:

// Eksempel på skitse til kontrol af knappen
int pin = 2;
int-tilstand;
pulserende int = 0;
ugyldig opsætning ()

{
pinMode (2, INPUT); // At læse pulsen ved at angive den pin-input

pinMode (13, OUTPUT); // For LED

Serial.begin (9600);
}
ugyldig sløjfe ()

{
hvis (digitalRead (2) == HIGH)

{

pin = 2;

antiBounce (); // Opkald til anti-bounce-funktionen

}
}
// Anti-bounce-funktion til software
ugyldig anti-bounce ()

{
mens (digitalRead (pin) == LOW);
tilstand = digitalRead (13);
digitalWrite (13 ,! tilstand);
mens (digitalRead (pin) == HIGH);

}


5 kommentarer, lad dine

Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.

  1.   Billede af Marcelo Castillo sagde han

    Fedt nok!!! Mange tak, jeg har bygget en CNC og paradoksalt nok har knapperne været den sværeste ting for mig at indstille.

  2.   Liliana sagde han

    Hej! Jeg konsulterer som en novice, i forbindelse med GND ... .. den sorte ledning skal ikke komme ud af den negative linje, som er placeret over den, der er vist i diagram 2?

  3.   John sagde han

    Fremragende forklaring .. for et par år siden lavede jeg et biltændingsprojekt, og sandheden er, at jeg aldrig kunne lave et korrekt tastetryk. Til tændingen .. Jeg vil prøve denne metode. Jeg takker dig meget for denne store hjælp

  4.   omar romero rincon sagde han

    Hej, jeg laver et projekt med tre knapper og 5 LED'er med følgende sekvens.
    1 trykknap sender et signal til 2 lysdioder, som jeg har kaldt 1 og 2.
    den anden trykknap sender signal til 3 lysdioder, kaldet 2,3 og 4.
    min tredje trykknap sender et signal til yderligere 3 lysdioder, kaldet 3,4, 5 og XNUMX.

    Jeg har formået at lave den sekvens, jeg har kun et problem, når du trykker på 2 knapper, sender den et falsk signal til LED'en, der skal blive ved med at få den til at blinke med mellemrum, jeg har kontrolleret det ved at sætte en forsinkelse (på 2 sekunder, hvilket er det jeg skal bruge for at lysdioderne forbliver tændte og så slukker så er mit spørgsmål hvordan kan jeg sætte millis funktionen ind i mit program, jeg forstår ikke hvordan millis virker jeg vil vide om du kan hjælpe mig ved at laver et eksempel på 3 knapper ved at bruge millis i hver af dem, jeg har brug for millis for at kunne trykke på knapperne til enhver tid uden at forsinke arduinoen.

    1.    Isaac sagde han

      Hola Omar,
      Jeg anbefaler, at du ser vores Arduino-tutorial:
      https://www.hwlibre.com/programacion-en-arduino/
      Og du kan også se vores artikel om millis ():
      https://www.hwlibre.com/millis-arduino/
      En hilsen.