Buton: cum să utilizați acest element simplu cu Arduino

buton

Un butonul este un buton care vă permite să întrerupeți sau să trimiteți un semnal electronic. Cu acest element simplu combinat cu alte elemente puteți crea proiecte pentru o multitudine de aplicații. Utilizarea acestui tip de butoane este foarte frecventă atunci când vine vorba de proiecte cu Arduino. Și combinând mai multe dintre aceste butoane puteți crea o tastatură ceva mai complexă, deși există deja tastaturi programabile pentru aceste utilizări ...

Apropo nu trebuie să confundați butonul cu un comutator. Sunt lucruri total diferite. Diferența constă în faptul că comutatorul sau comutatorul este activat sau dezactivat la fiecare apăsare care se face pe el. În timp ce butonul de apăsare va rămâne într-o singură stare în timp ce se exercită presiune asupra acestuia. Am comentat că poate trimite sau întrerupe, asta pentru că există două tipuri fundamentale de butoane.

simbolul butonului

Exista NU sau butoane deschise în mod normal și butoane NC sau în mod normal închise. Acest lucru vă va suna și din relee. Și da, este exact aceeași operație. Când aveți un NC, acesta va lăsa curentul să treacă prin terminalele sale și se întrerupe doar în timp ce îl apăsați. Pe de altă parte, NA nu lasă curentul să treacă atunci când nu se exercită presiune asupra acestuia și îl va lăsa să treacă numai când îl apăsați.

Știind că, este aproape tot ce trebuie să știți despre un buton pentru a începe conexiunea și programarea folosind Arduino. Adevărul este că este un element atât de simplu încât nu mai sunt multe de spus despre acest tip de butoane.

Integrarea butoanelor cu Arduino

circuit cu Arduino

La conectarea unui buton a face să interacționeze cu Arduino nu ar putea fi mai simplu. Un exemplu este diagrama pe care o puteți vedea pe aceste linii. Asta ar fi tot ce trebuie pentru a începe experimentarea. Dar, desigur, cu schema respectivă nu poți face nimic. Ar trebui să puneți puțină imaginație pentru a decide ce va controla butonul respectiv. De fapt, dacă citiți frecvent hwlibre.es, veți vedea deja câteva articole în care am folosit butoane ...

Modalități de conectare

pull-up și pull-down

Un lucru pe care ar trebui să-l știți este problema anti-respingere și cum să conectați aceste butoane. Mai întâi mergem la modul de a le conecta, ceea ce știți deja că poate fi cu rezistențele pull-up și pull-down:

  • Trage- Cu această setare a rezistorului, când butonul este apăsat, microcontrolerul sau Arduino pot vedea sau citi un zero pe acel pin. Adică îl interpretează ca un semnal LOW.
  • Trage în jos: În acest caz este opusul, puteți citi sau primi un semnal 1 sau HIGH prin pinul conectat.

Nu-l confundați cu NC sau NA, ceea ce este altceva diferit așa cum am văzut anterior. Acest lucru este independent de celălalt ...

Anti-Bounce

Butoanele au o efect de revenire când este apăsat. Adică, atunci când este apăsat sau eliberat, există o fluctuație a semnalului care trece prin contactele sale și ar putea determina trecerea de la o stare HIGT la LOW sau invers, fără a dori cu adevărat să se întâmple asta. Acest lucru poate produce un efect nedorit asupra Arduino și îl poate face să facă lucruri ciudate, cum ar fi activarea unui element atunci când am vrut cu adevărat să îl oprim cu butonul, etc. Asta pentru că Arduino interpretează reboturile ca și când ar fi fost apăsat de mai multe ori ...

Acel efect negativ are o soluție. Pentru aceasta, un condensator mic trebuie implementat în circuitul anti-respingere (metoda hardware) sau software-ul (modificarea codului sursă), indiferent dacă a fost utilizată o configurație pull-up sau pull-down sau dacă este NC sau NO. În toate aceste cazuri, soluția trebuie implementată pentru a evita aceste recuperări.

De exemplu, circuite pull-up și pull-down cu condensator anti-saritura ar arăta cam așa:

rebounder

În timp ce metoda software Poate fi văzut în acest fragment de cod:

if (digitalRead (button) == LOW) // Verificați dacă butonul este apăsat
{
apăsat = 1; // Variabila schimbă valoarea
}
if (digitalRead (buton) == HIGH && apăsat == 1)
{
// Efectuați acțiunea dorită
apăsat = 0; // Variabila revine la valoarea inițială
}

Exemplu simplu de proiect

anti-saritura cu buton si Arduino

Odată ce am învățat tema modalităților de conectare a butonului nostru și a circuitului anti-rebound, vom vedea un exemplu practic pentru comandați un LED cu butonul. Schema este la fel de simplă după cum puteți vedea.

Odată conectat corect, următorul lucru este să scrieți codul din IDE Arduino pentru a vă programa panoul și a începe să experimentați cu butoanele. Un exemplu simplu de cod pentru a ne controla circuitul ar fi următorul:

// Exemplu de schiță pentru a controla butonul
pin int = 2;
int state;
pulsatoriu int = 0;
configurare nulă ()

{
pinMode (2, INPUT); // Pentru a citi pulsul făcând acea intrare pin

pinMode (13, OUTPUT); // Pentru LED

Serial.begin (9600);
}
bucla nulă ()

{
if (digitalRead (2) == HIGH)

{

pin = 2;

antiBounce (); // Apelați la funcția anti-respingere

}
}
// Funcția software anti-respingere
nul anti-rebot ()

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

}


5 comentarii, lasă-le pe ale tale

Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: Miguel Ángel Gatón
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.

  1.   Imagine de substituție Marcelo Castillo el a spus

    Misto!!! Mulțumesc foarte mult, am construit un CNC și, în mod paradoxal, butoanele au fost cel mai greu pentru mine de acordat.

  2.   Liliana el a spus

    Salut! Mă consult ca novice, în legătură cu GND ... .. firul negru nu ar trebui să iasă din linia negativă, care este situată deasupra celei prezentate în diagrama 2?

  3.   Ioan el a spus

    Explicație excelentă .. acum câțiva ani am făcut un proiect de aprindere a mașinii și adevărul este că nu aș putea face niciodată o apăsare corectă a tastei. Pentru aprindere .. Voi încerca această metodă. Vă mulțumesc foarte mult pentru acest ajutor

  4.   omar romero rincon el a spus

    Bună, fac un proiect cu trei butoane și 5 LED-uri cu următoarea secvență.
    1 buton trimite un semnal la 2 LED-uri, pe care le-am numit 1 si 2.
    al doilea buton trimite semnal la 3 LED-uri, numite 2,3 și 4.
    Al treilea buton trimite un semnal către alte 3 LED-uri, numite 3,4, 5 și XNUMX.

    Am reusit sa fac acea secventa, am o singura problema, la apasarea a 2 butoane trimite un semnal fals la LED care ar trebui sa ramana aprins facand sa clipeasca intermitent, l-am controlat punand o intarziere (de 2 secunde, care este ceea ce am nevoie pentru ca LED-urile să rămână aprinse și apoi să se stingă.atunci întrebarea mea este cum pot pune funcția millis în programul meu, nu înțeleg cum funcționează millis, vreau să știu dacă mă poți ajuta prin făcând un exemplu pentru 3 butoane folosind millis în fiecare dintre ele, am nevoie de millis pentru a putea apăsa butoanele în orice moment fără a întârzia arduino.

    1.    Isaac el a spus

      Salut Omar,
      Vă recomand să vedeți tutorialul nostru Arduino:
      https://www.hwlibre.com/programacion-en-arduino/
      Și puteți vedea, de asemenea, articolul nostru despre millis ():
      https://www.hwlibre.com/millis-arduino/
      Un salut.