Search Code

Prečo používať rezistory s tlačidlami a prepínačmi pri Arduine

Prečo používať rezistory s tlačidlami a prepínačmi pri Arduine

Tento návod vysvetľuje, prečo je použitie rezistora s tlačidlami a prepínačmi pripojenými k Arduinu kľúčové pre spoľahlivú prevádzku. Pochopenie tohto konceptu je základom pre každý projekt Arduino zahŕňajúci vstup od používateľa. Tieto znalosti predchádzajú neočakávanému správaniu a zabezpečujú, že vaše projekty fungujú správne. Tu je niekoľko nápadov na projekty, kde sú tieto znalosti nevyhnutné:

  • Jednoduchý vypínač/zapínač pre LED
  • Interaktívny herný ovládač
  • Diaľkové ovládanie domácich spotrebičov
  • Bezpečnostný systém s aktiváciou tlačidlom

Poďme preskúmať dôvody použitia rezistorov v týchto obvodoch.

Arduino wiring for Push button wihthout resistor

Hardvér/Komponenty

Základné komponenty potrebné pre tento projekt sú minimálne: doska Arduino, tlačidlový spínač a rezistor (väčší ako 300 ohmov). Hodnota rezistora nie je kritická; hodnoty ako 1kΩ, 10kΩ alebo dokonca 100kΩ budú vo všeobecnosti fungovať dobre (vo videu o 00:41).

Sprievodca zapojením

Existujú dve hlavné konfigurácie zapojenia (vo videu o 00:30):

  1. Konfigurácia 1: Pripojte tlačidlo medzi pin Arduina a +5V. Druhá strana tlačidla je pripojená k zemi cez rezistor. Keď je tlačidlo stlačené, pin číta HIGH; keď je uvoľnené, číta LOW.
  2. Konfigurácia 2: Pripojte tlačidlo medzi pin Arduina a zem. Druhá strana tlačidla je pripojená k +5V cez rezistor. Keď je tlačidlo stlačené, pin číta LOW; keď je uvoľnené, číta HIGH.

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

Vizuálna schéma zapojenia by tu bola užitočná.

Vysvetlenie kódu

Kód Arduina využíva funkciu pinMode() na konfiguráciu pinu ako vstupu. Kľúčovou časťou je použitie INPUT_PULLUP (vo videu o 04:06, 04:23). Tento interný pull-up rezistor eliminuje potrebu externého rezistora v určitých konfiguráciách, čím zjednodušuje zapojenie. Funkcia digitalRead() číta stav pinu a jednoduchý príkaz if-else určuje, či je tlačidlo stlačené (LOW) alebo nie (HIGH) (vo videu o 08:34).


pinMode(2, INPUT_PULLUP); // Konfiguruje pin 2 ako vstup s interným pull-up rezistorom
int pushButton = digitalRead(2); // Číta stav pinu 2
if (pushButton == LOW) {
  // Tlačidlo je stlačené
} else {
  // Tlačidlo nie je stlačené
}

Živý projekt/Demonštrácia

Video demonštruje obe konfigurácie zapojenia a ich príslušné správanie. Zdôrazňuje problémy, ktoré môžu nastať pri vynechaní rezistora, ako sú nepravidelné hodnoty spôsobené šumom a kapacitnou väzbou (vo videu o 06:18, 06:39, 07:21). Demonštrácia jasne ukazuje stabilnú a spoľahlivú prevádzku dosiahnutú s rezistorom na mieste (vo videu o 08:08).

Kapitoly

  • [00:00] Úvod
  • [00:30] Konfigurácie zapojenia
  • [04:12] Vysvetlenie kódu pomocou INPUT_PULLUP
  • [05:36] Odstránenie rezistora: Praktická demonštrácia
  • [08:33] Vysvetlenie kódu

Images

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
Language: 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
Language: 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);
}

Things you might need

Resources & references

No resources yet.

Files📁

No files available.