Code zoeken

Waarom weerstanden gebruiken met drukknoppen en schakelaars met Arduino

Waarom weerstanden gebruiken met drukknoppen en schakelaars met Arduino

Deze tutorial legt uit waarom het gebruik van een weerstand met drukknoppen en schakelaars die op een Arduino zijn aangesloten cruciaal is voor een betrouwbare werking. Het begrijpen van dit concept is fundamenteel voor elk Arduino-project waarbij gebruikersinvoer betrokken is. Deze kennis voorkomt onverwacht gedrag en zorgt ervoor dat uw projecten correct functioneren. Hier zijn enkele projectideeën waarbij deze kennis essentieel is:

  • Eenvoudige aan/uit-schakelaar voor een LED
  • Interactieve gamecontroller
  • Afstandsbediening voor huishoudelijke apparaten
  • Beveiligingssysteem met drukknopactivering

Laten we de redenen achter het gebruik van weerstanden in deze circuits verkennen.

Arduino wiring for Push button wihthout resistor

Hardware/Componenten

De kerncomponenten die nodig zijn voor dit project zijn minimaal: een Arduino-bord, een drukknopschakelaar en een weerstand (groter dan 300 ohm). De waarde van de weerstand is niet kritisch; waarden zoals 1kΩ, 10kΩ of zelfs 100kΩ werken over het algemeen prima (in video op 00:41).

Bekabelingsgids

Er zijn twee primaire bekabelingsconfiguraties (in video op 00:30):

  1. Configuratie 1: Verbind de drukknop tussen de Arduino-pin en +5V. De andere kant van de drukknop is via een weerstand verbonden met de grond. Wanneer de knop wordt ingedrukt, leest de pin HOOG; wanneer losgelaten, leest deze LAAG.
  2. Configuratie 2: Verbind de drukknop tussen de Arduino-pin en de grond. De andere kant van de drukknop is via een weerstand verbonden met +5V. Wanneer de knop wordt ingedrukt, leest de pin LAAG; wanneer losgelaten, leest deze HOOG.

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

Een visueel bedradingsschema zou hier nuttig zijn.

Code-uitleg

De Arduino-code gebruikt de functie pinMode() om de pin als invoer te configureren. Het cruciale deel is het gebruik van INPUT_PULLUP (in video op 04:06, 04:23). Deze interne pull-up-weerstand elimineert de noodzaak voor een externe weerstand in bepaalde configuraties, waardoor de bedrading wordt vereenvoudigd. De functie digitalRead() leest de status van de pin, en een eenvoudige if-else-verklaring bepaalt of de knop is ingedrukt (LAAG) of niet (HOOG) (in video op 08:34).


pinMode(2, INPUT_PULLUP); // Configureert pin 2 als invoer met interne pull-up-weerstand
int pushButton = digitalRead(2); // Leest de status van pin 2
if (pushButton == LOW) {
  // Knop is ingedrukt
} else {
  // Knop is niet ingedrukt
}

Live-project/Demonstratie

De video demonstreert beide bekabelingsconfiguraties en hun respectievelijke gedragingen. Het benadrukt de problemen die kunnen ontstaan wanneer de weerstand wordt weggelaten, zoals onregelmatige metingen door ruis en capacitieve koppeling (in video op 06:18, 06:39, 07:21). De demonstratie toont duidelijk de stabiele en betrouwbare werking die wordt bereikt met de weerstand op zijn plaats (in video op 08:08).

Hoofdstukken

  • [00:00] Inleiding
  • [00:30] Bekabelingsconfiguraties
  • [04:12] Code-uitleg met INPUT_PULLUP
  • [05:36] Verwijderen van de weerstand: Praktische demonstratie
  • [08:33] Code-uitleg

Afbeeldingen

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

Dingen die je misschien nodig hebt

Hulpmiddelen en referenties

Nog geen middelen.

Bestanden📁

Geen bestanden beschikbaar.