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.

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

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
/*
* 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);
}
Dingen die je misschien nodig hebt
-
Amazon
Hulpmiddelen en referenties
Nog geen middelen.
Bestanden📁
Geen bestanden beschikbaar.
