top of page
Writer's picturechiperaris

Folosirea unui buton (pushbutton) cu Arduino

Updated: Feb 22, 2020

Ce este un buton (pushbutton)?


Butonul ( cunoscut si sub denumirea de rezistor pull-up ) este o componenta care conecteaza ( sau intrerupe ) un circuit electric.Este o componenta strict mecanica,fiind formata dintr-un arc si conectorii de carbon corespunzatori pinilor;la presare face conexiunea intre conectorii de carbon ai butonului ( si implicit intre pini ),totul fiind invelit intr-o carcasa de plastic:


Montajul


Un buton are 4 pini:oricare 2 pot fi folositi pentru alimentare ( 5V si GND ). Inainte de unul dintre ei vom conecta un fir la oricare pin digital al Arduino. De asemenea,vom adauga un rezistor (orice valoare mica) pentru egalizarea tensiunii:


Alt pin digital va fi folosit impreuna cu un pin GND pentru conexiunile LED-ului ( la fel ca in lectia precedenta):




Programul


Programul de mai jos va aprinde LED-ul cat timp este apasat butonul.LED-ul se va stinge cand este eliberat butonul:

void setup() {

pinMode(7,INPUT); // initializare pin 7 pentru citire

pinMode(8, OUTPUT); // initializare pin 8 pentru transmisie

}

void loop() {

bool stareButon = digitalRead(7); /* creare variabila logica "stareButon" egala cu citirea pinului 7

if(stareButon==1) // daca stareButon=1

{

digitalWrite(8,HIGH); // transmisie semnal HIGH prin pinul 8

}

else // altfel

{

digitalWrite(8,LOW); // transmisie semnal LOW prin pinul 8

}

}


Sa analizam programul.

In sectiunea setup folosim atributul INPUT pentru a initializa un pin pentru citire. În sectiunea loop cerem microcontrollerului să monitorizeze pinul 7 astfel încât, când de la acesta primeşte voltaj (când butonul este apăsat – 1), să trimită voltaj către led. Dacă pentru a trimite voltaj ne-am folosit de digitalWrite(), pentru citit ne vom folosi de digitalRead(). În acest fel vom citi starea pinului 7 şi îl vom transfera unei variabile.

După ce am transferat variabilei “stareButon” starea pinului, vom întreba,folosind functia if (sintaxa:if(conditie){ actiune } else { actiune }): Este “stareButon” egal cu 1 (Apasat)? Dacă răspunsul este da, atunci trimite semnal către pinul 8. Dacă răspunsul este nu, atunci nu trimite semnal către pinul 6.

După cum vedem, am definit o variabilă de tip integer (număr întreg), numită stareButon, care a preluat de la pinul şapte informaţie cu privire la voltaj.


Acest program va mentine LED-ul aprins pana cand este apasat butonul si invers:


int contorApasare = 0; // creare contor initializat cu 0


void setup(){

pinMode(8,OUTPUT); // initializare pin 8 pentru transmisie

pinMode(7,INPUT); // initializare pin 7 pentru citire

}


void loop(){

int stareButon = digitalRead(7); // creare variabila intreaga "stareButon" egala cu citirea pinului 7

if(stareButon == 0) // daca stareButon=0

{

contorApasare++; // creste variabila contor cu cate o etapa

delay(250); // Asteapta 250 ms pe etapa

}

if(contorApasare == 1) // daca contorul a numarat o apasare

{

digitalWrite(8,HIGH); // trimite semnal HIGH prin pinul 8

}

else // altfel(daca nu este apsat butonul)

{

digitalWrite(8,LOW); // trimite semnal LOW prin pinul 8(LED-ul ramane stins)

contorApasare = 0; //resetare contor la 0

}

}


Cu ajutorul functiilor if si contorului,am creat un asa-zis flip-flop,care mentine starea unui obiect pana cand un alt stimul detectat( in acest caz o citire a pinului 7 ).




432 views0 comments

Recent Posts

See All

Comments


bottom of page