Arduino – Ziua 4 – Input / Output Butoane şi leduri

Încă o zi frumoasă pentru a ne juca cu Arduino. Aşadar, ce vom face astăzi?

Dacă până acum ne-am jucat cu leduri care reprezintă partea de OUTPUT a micro-controllerului nostru, acum a sosit momentul să încercăm şi partea de INPUT. Aşadar hai să vedem ce putem face pentru a exemplifica partea de INPUT.

Pentru început să facem o chestie simplă. Să ne jucăm cu un buton. În kitul pentru începători am primit şi un buton.

Şi dacă avem un buton şi avem şi un led, atunci hai să facem în aşa fel încât, în momentul în care butonul este apăsat, ledul să se aprindă. Bineînţeles se va găsi cineva care o să spună că am putea să legăm totul într-un circuit şi nu am avea nevoie de un întreg micro-controller pentru asta. Dar noi ne vom juca aşa, doar ca să arătăm ca putem. Aşadar, hai să conectăm butonul şi ledul la micro-controller. Cum facem asta?

Butonul

Pentru a conecta butonul la Arduino vom avea nevoie de trei fire. Unul (VCC) va fi conectat la pinul de 5 volţi, un altul va fi împământarea (GND), iar al treilea va fi conectat la unul dintre pinii INPUT/OUTPUT. Eu l-am conectat la pinul 7.

Ledul

Ledul îl vom conecta cu două fire. Unul (IN) va fi conectat la pinul 13 şi celălalt (GND) la împământare (Arduino are disponibili 3 pini de împământare).

Etapa de setup()

Acum hai să trecem la programare. Deschidem IDE-ul pornind de la un sketch gol. În partea de setup() pur şi simplu îi spunem micro-controllerului că va avea de monitorizat/controlat doi pini: pinul 7 – al butonului – şi pinul 13 – al ledului.

void setup() {
  //aici face setarile initiale

  // Prin pinul 7 (butonul) Arduino va primi din exterior informatii
  pinMode(7,INPUT);

  // Prin pinul 13 (ledul) Arduino va trimite in exterior informatii
  pinMode(13, OUTPUT);
}

Etapa de loop()

În etapa de loop() trebuie să cerem micro-controllerului să monitorizeze pinul 7 astfel încât, când de la acesta primeşte voltaj (când butonul este apăsat – ON), 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: Este “stareButon” egal cu 1 (ON)? Dacă răspunsul este da, atunci trimite voltaj către pinul 13. Dacă răspunsul este nu, atunci nu trimite voltaj către pinul 13.

void loop() {
  // transferam variabilei stareButon valoarea de la pinul 7
  int stareButon = digitalRead(7);

  // este stareButon egal cu 1? atunci aprinde ledul
  if(stareButon==1)
  {
    digitalWrite(13,HIGH);
  }
  // altfel, stinge ledul
  else
  {
    digitalWrite(13,LOW);
  } 
}

Super. Dar hai să explicăm mai pe îndelete codul din loop().

După cum vedem, am definit o variabilă de tip integer (număr întreg), numită stareButon, care variabilă a preluat de la pinul şapte informaţie cu privire la voltaj. La fel de bine puteam să păstrăm valoarea pinului într-o variabilă booleană (valoare adevărat/fals):

void loop() {
  // transferam variabilei stareButon valoarea de la pinul 7
  bool stareButon = digitalRead(7);
  // este stareButon egal cu true? atunci aprinde ledul
  if(stareButon==true)
  {
    digitalWrite(13,HIGH);
  }
  // altfel, stinge ledul
  else
  {
    digitalWrite(13,LOW);
  }
}

Grozav. Acum, când apăsăm pe buton, ledul se aprinde, iar când dăm drumul butonului, ledul se stinge.

Lasă un răspuns

Your email address will not be published. Required fields are marked *

No spam? * Time limit is exhausted. Please reload CAPTCHA.