Caută cod

De ce să folosiți rezistențe cu butoane și comutatoare cu Arduino

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.

Arduino wiring for Push button wihthout resistor

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):

  1. 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.
  2. 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.

Arduino wriring for push button and LED
Arduino wriring for push button and LED

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

Why should we use a resistor with a push button and Arduino?
Why should we use resistor with push button with Arduino?
Why should we use a resistor with a push button and Arduino?
Why should we use resistor with push button with Arduino?
2 pin tactile push button switch
2 pin tactile push button switch
Arduino wriring for push button and LED
Arduino wriring for push button and LED
Arduino wiring for Push button with resistor-2
Arduino wiring for Push button with resistor-2
Arduino wiring for Push button with resistor-1
Arduino wiring for Push button with resistor-1
Arduino wiring for Push button wihthout resistor
Arduino wiring for Push button wihthout resistor
132-Code example using a resistor
Limba: C++
/*
 * 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);
}
133-Code example using INPUT_PULLUP without a resistor
Limba: C++
/*
 * 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

Resurse și referințe

Încă nu sunt resurse.

Fișiere📁

Nu sunt disponibile fișiere.