WelcomeHere.ro
NIVEL: UȘOR

Tutorial Detaliat: Citirea unui Buton cu Arduino

Deschide poarta către interactivitate. Învață cum să conectezi un buton și să citești starea acestuia (apăsat sau eliberat) pentru a controla un LED.

Componente Necesare

  • 1x Placă Arduino
  • 1x Buton (push-button cu 4 picioare)
  • 1x Rezistor de 10kΩ (kilo-Ohm) - acesta este rezistorul PULL-DOWN
  • Fire de legătură (jumper wires)
  • 1x Breadboard

Teoria Esențială: Starea "Plutitoare" și Rezistorii Pull-down

Când un pin digital Arduino este setat ca `INPUT`, el se comportă ca un "ochi" care încearcă să vadă dacă este conectat la 5V (pe care îl raportează ca **HIGH**) sau la GND (pe care îl raportează ca **LOW**).

Problema: Ce se întâmplă când butonul nu este apăsat?

Dacă am conecta pinul direct la buton și butonul la 5V, când apăsăm, pinul ar citi HIGH. Dar când nu apăsăm, pinul nu este conectat la **nimic**. Această stare se numește **"plutitoare" (floating)**. Pinul se comportă ca o antenă și poate citi valori aleatorii (HIGH sau LOW) din cauza zgomotului electric din cameră. Acest lucru face programul nostru complet imprevizibil.

Soluția: Rezistorul Pull-down.**

Pentru a rezolva asta, folosim un rezistor **pull-down** (de valoare mare, ex. 10kΩ). Acesta conectează pinul de intrare la GND (0V) printr-o cale de rezistență. Astfel, când butonul este eliberat, pinul "vede" o cale sigură către GND și citește mereu **LOW**. Când butonul este apăsat, el creează o conexiune directă (cu rezistență mică) la 5V, care este mult mai "puternică" decât calea prin rezistorul de 10kΩ, iar pinul citește corect **HIGH**.

Vrei să aprofundezi? Citește articolul nostru detaliat: Rezistori Pull-up vs. Pull-down.

Asamblarea Circuitului

Vom conecta butonul la pinul digital 2 și vom folosi LED-ul încorporat pe pinul 13 ca feedback vizual.

Schema Fritzing (Breadboard):

Schema Fritzing pentru circuitul cu buton pull-down

Fotografie Circuit Real:

Fotografie a circuitului cu buton asamblat pe breadboard
  1. Conectează un fir de la 5V al plăcii Arduino la o linie roșie (+) de pe breadboard.
  2. Conectează un fir de la GND al plăcii Arduino la o linie albastră (-) de pe breadboard.
  3. Înfige butonul pe breadboard, peste șanțul din mijloc.
  4. Conectează un picior al butonului la linia roșie (+5V).
  5. Conectează piciorul opus (pe diagonală) la pinul digital 2 al plăcii Arduino.
  6. Pe același rând cu pinul 2, conectează un picior al rezistorului de 10kΩ.
  7. Conectează celălalt picior al rezistorului la linia albastră (GND).

Codul Sursă Explicat

Acest cod citește starea butonului de la pinul 2 și o stochează într-o variabilă. Apoi, folosește acea variabilă pentru a aprinde sau stinge LED-ul încorporat (pinul 13).

Button_Control.ino

// Definim pinii pe care îi vom folosi
const int buttonPin = 2; // Pinul la care este conectat butonul
const int ledPin = 13;   // LED-ul incorporat

// Variabila pentru a stoca starea butonului
int buttonState = 0;

void setup() {
  // Initializam LED-ul ca iesire
  pinMode(ledPin, OUTPUT);
  // Initializam butonul ca intrare
  pinMode(buttonPin, INPUT);
}

void loop() {
  // 1. Citim starea pinului butonului
  // digitalRead() va returna HIGH (1) dacă e apăsat (conectat la 5V)
  // sau LOW (0) dacă e eliberat (conectat la GND prin rezistor)
  buttonState = digitalRead(buttonPin);

  // 2. Verificam daca butonul este apasat
  // HIGH inseamna ca este apasat
  if (buttonState == HIGH) {
    // Aprindem LED-ul
    digitalWrite(ledPin, HIGH);
  } else {
    // Altfel (dacă nu e apăsat), stingem LED-ul
    digitalWrite(ledPin, LOW);
  }
}

Depanare (Troubleshooting)

  • LED-ul stă mereu aprins sau clipește haotic: Aceasta este o problemă clasică de pin "plutitor". Verifică dacă ai conectat corect rezistorul de 10kΩ între pinul 2 și GND.
  • LED-ul nu reacționează deloc: Verifică dacă ai conectat butonul la 5V. Asigură-te că folosești pinii corecți pe buton (de obicei, picioarele opuse pe diagonală sunt cele care se conectează).

Provocări și Pași Următori

  • Modifică codul astfel încât LED-ul să stea aprins în mod normal și să se stingă doar când ții butonul apăsat.
  • Folosește butonul pentru a face LED-ul să clipească (să ruleze codul "Blink") doar cât timp ții butonul apasat.