De ce să folosiți rezistențe cu butoane și comutatoare cu Arduino
Acest tutorial explică de ce utilizarea unui rezistor cu butoane și comutatoare conectate la un Arduino este crucială pentru o funcționare fiabilă. Înțelegerea acestui concept este fundamentală pentru orice proiect Arduino care implică intrare de la utilizator. Aceste cunoștințe previn comportamente neașteptate și asigură că proiectele tale funcționează corect. Iată câteva idei de proiecte unde aceste cunoștințe sunt esențiale:
- Comutator simplu pornit/oprit pentru un LED
- Controller interactiv pentru jocuri
- Telecomandă pentru electrocasnice
- Sistem de securitate cu activare prin buton
Haideți să explorăm motivele din spatele utilizării rezistoarelor în aceste circuite.

Hardware/Componente
Componentele de bază necesare pentru acest proiect sunt minime: o placă Arduino, un buton și un rezistor (mai mare de 300 ohmi). Valoarea rezistorului nu este critică; valori precum 1kΩ, 10kΩ sau chiar 100kΩ vor funcționa în general bine (în video la 00:41).
Ghid de Cablare
Există două configurații principale de cablare (în video la 00:30):
- Configurația 1: Conectați butonul între pinul Arduino și +5V. Cealaltă parte a butonului este conectată la masă printr-un rezistor. Când butonul este apăsat, pinul citește HIGH; când este eliberat, citește LOW.
- Configurația 2: Conectați butonul între pinul Arduino și masă. Cealaltă parte a butonului este conectată la +5V printr-un rezistor. Când butonul este apăsat, pinul citește LOW; când este eliberat, citește HIGH.

O diagramă vizuală de cablare ar fi benefică aici.
Explicația Codului
Codul Arduino utilizează funcția pinMode() pentru a configura pinul ca intrare. Partea crucială este utilizarea INPUT_PULLUP (în video la 04:06, 04:23). Acest rezistor intern de pull-up elimină necesitatea unui rezistor extern în anumite configurații, simplificând cablarea. Funcția digitalRead() citește starea pinului, iar o simplă declarație if-else determină dacă butonul este apăsat (LOW) sau nu (HIGH) (în video la 08:34).
pinMode(2, INPUT_PULLUP); // Configurează pinul 2 ca intrare cu rezistor intern de pull-up
int pushButton = digitalRead(2); // Citește starea pinului 2
if (pushButton == LOW) {
// Butonul este apăsat
} else {
// Butonul nu este apăsat
}
Proiect/Demonstrație Live
Videoclipul demonstrează ambele configurații de cablare și comportamentele lor respective. Evidențiază problemele care pot apărea când rezistorul este omis, cum ar fi citiri neregulate din cauza zgomotului și cuplajului capacitiv (în video la 06:18, 06:39, 07:21). Demonstrația arată clar funcționarea stabilă și fiabilă obținută cu rezistorul în loc (în video la 08:08).
Capitole
- [00:00] Introducere
- [00:30] Configurații de Cablare
- [04:12] Explicația Codului folosind INPUT_PULLUP
- [05:36] Eliminarea Rezistorului: Demonstrație Practică
- [08:33] Explicația Codului
Imagini
/*
* This is an Arduino Sketch for a tutorial video
* explaining why a resistor is needed to be used with a push button
* with Arduino.
*
* Written by Ahmad Shamshiri on July 17, 2018 at 23:11 in Ajax, Ontario, Canada
* For Robojax.com
* Watch the instruction video for this code: https://youtu.be/TTqoKcpIWkQ
* This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.
*/
void setup() {
// Robojax.com push button tutorial
pinMode(3,INPUT_PULLUP);
Serial.begin(9600);
Serial.println("Robojax Push Button Tutorial");
}
void loop() {
// Robojax.com push button tutorial
int pushButton = digitalRead(3);
if(pushButton == LOW)
{
Serial.println("Pin 3 LOW");
}else{
Serial.println("Pin 3 HIGH");
}
delay(500);
}
/*
* This is an Arduino Sketch for a Tutorial video
* explaining why a resistor is needed to be used with a push button
* with an Arduino to connect the pin to Ground (GND)
*
* Written by Ahmad Shamshiri on July 18, 2018 at 17:36 in Ajax, Ontario, Canada
* For Robojax.com
* Watch the instruction video for this code: https://youtu.be/TTqoKcpIWkQ
* This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.
*/
void setup() {
// Robojax.com push button tutorial
pinMode(2,INPUT_PULLUP);
Serial.begin(9600);
Serial.println("Robojax Push Button Tutorial");
}
void loop() {
// Robojax.com push button tutorial
int pushButton = digitalRead(2);
if(pushButton == LOW)
{
Serial.println("Button is pushed.");
}else{
Serial.println("Button is NOT pushed.");
}
delay(500);
}
Lucruri de care ai putea avea nevoie
-
Amazon
Resurse și referințe
Încă nu sunt resurse.
Fișiere📁
Nu sunt disponibile fișiere.
