Les 98-2: Hoe je een LED aan- en uitzet met een drukknop en Arduino
Dit project laat je zien hoe je een LED met een drukknop bestuurt met een Arduino. In plaats van de LED vanzelf te laten knipperen, bepaal jij wanneer hij gaat branden: houd de knop ingedrukt en de LED gaat aan, laat los en hij gaat uit. Het is de logische volgende stap na een simpele knipper-sketch, omdat het twee ideeën introduceert die in bijna elk Arduino-project dat je ooit zult bouwen voorkomen — een digitale ingang uitlezen, en die ingang gebruiken om een beslissing in code te nemen.
De echte waarde hier is leren hoe een microcontroller de fysieke wereld waarneemt. Een drukknop is het eenvoudigste menselijke invoerapparaat dat er bestaat, maar hetzelfde patroon — een ingang uitlezen, een voorwaarde testen, een uitgang aansturen — is precies hoe je een eindschakelaar op een 3D-printer zou uitlezen, een deur die opent in een beveiligingssysteem zou detecteren, of een motor vanaf een bedieningspaneel zou starten. Zodra je dit ene circuit begrijpt, kun je de LED vervangen door bijna alles.
Hier zijn enkele praktische dingen die je met dezelfde techniek kunt bouwen:
- Een deurbel of oproepknop met momentcontact die een lamp laat branden zolang erop gedrukt wordt.
- Een "dodemansschakelaar" die een relais (en alles wat het van stroom voorziet) alleen bekrachtigd houdt zolang de knop ingedrukt wordt.
- Een handmatige testknop voor een machine, waarbij een indicator-LED bevestigt dat de invoer wordt geregistreerd.
- Een startknop voor een motorregelaar of pomp, waarbij de LED als statuslampje fungeert.
- Een eenvoudige spelbuzzer waarbij de eerste speler die drukt wint en de LED de winnaar aankondigt.
- Een kalibratie- of "leer"-knop op een sensorproject die oplicht zolang de modus actief is.
Hardware en componenten
De onderdelenlijst is bewust klein, en daarom is dit een uitstekend eerste invoerproject:
- Een Arduino-bord — Uno, Nano, Mega of een compatibel bord.
- Eén LED, either 5 mm of 3 mm, in elke kleur.
- Eén weerstand voor de LED, ergens tussen 200 Ω en 1000 Ω.
- Eén drukknopschakelaar met momentcontact.
- Een breadboard en wat DuPont-jumperdraden.
Als je je afvraagt waarom er überhaupt een weerstand nodig is, loopt het transcript door de berekening (in video op 03:49). Een typische LED verliest ongeveer 2 V over zichzelf en wil ongeveer 10 mA stroom. Bij een voeding van 5 V moet de resterende 3 V door de weerstand worden opgenomen, dus de wet van Ohm geeft R = 3 V / 0,01 A = 300 Ω. Alles van 300 Ω tot ongeveer 1000 Ω werkt — hoe hoger de waarde, hoe dimmer de LED, maar hoe veiliger en efficiënter het is. De stroom is niet kritisch; je ruilt eenvoudig helderheid in voor een lagere stroomopname.
Bedradingsgids
Het circuit is hetzelfde LED-circuit dat je voor een knipper-sketch zou gebruiken, met een drukknop toegevoegd. De anode van de LED (het langere pootje) wordt via de weerstand verbonden met Arduino-pin 3, en de kathode (het kortere pootje, gemarkeerd door de platte kant van de plastic rand) gaat naar aarde. De drukknop wordt tussen pin 2 en aarde aangesloten.
Een detail dat het waard is om te weten: de drukknop heeft vier pootjes, maar ze zijn intern gepaard. Twee van de pootjes zijn permanent met elkaar verbonden, en de andere twee zijn permanent met elkaar verbonden — door op de knop te drukken worden de twee paren overbrugd. Als je een multimeter hebt, gebruik dan de continuïteitsmodus (piep) om te vinden welke pootjes al verbonden zijn wanneer de knop niet is ingedrukt; die twee zijn het paar dat je niet moet gebruiken. Kies één pootje uit elk van de twee onafhankelijke paren (in video op 07:50).
Hoe de code werkt
De sketch is kort, en bijna alles ervan is configuratie die je kunt aanpassen. De drie regels bovenaan zijn degene die je daadwerkelijk zult aanraken:
const int pushButtonPin = 2;//define a pin number for push button
const int LEDPin = 3;//define a pin that is connected to LED
const int delayLED = 0;//how long the LED should stay ON
pushButtonPin is de digitale pin waarop de knop is aangesloten. Verander dit als je de knop naar een andere pin verplaatst — vergeet niet de fysieke draad overeenkomstig te verplaatsen.
LEDPin is de pin die de LED aanstuurt. Elke digitale pin voldoet, maar houd er rekening mee dat pins 0 en 1 door de seriële verbinding worden gebruikt, dus kun je die het beste vermijden.
delayLED is de meest interessante instelling. Het bepaalt hoe lang de LED aan blijft nadat je de knop loslaat, gemeten in milliseconden. Als je het op 0 zet, gaat de LED onmiddellijk uit zodra je je vinger optilt. Als je het op 1000 zet, blijft de LED een volle seconde branden na het loslaten, en 5000 houdt hem vijf seconden aan (in video op 16:31). Dit enkele getal verandert volledig hoe het project aanvoelt, en het is een goede manier om te zien hoe een variabele in code zich direct vertaalt naar waarneembaar gedrag.
Twee andere dingen in de setup zijn het vermelden waard. Ten eerste is de knop-pin geconfigureerd met INPUT_PULLUP in plaats van gewoon INPUT:
pinMode(pushButtonPin, INPUT_PULLUP);//define a pin for push button switch
Dit activeert de interne pull-up weerstand van de Arduino, die de pin op een stabiel HIGH-niveau houdt wanneer de knop niet is ingedrukt. Zonder dit zou een zwevende input-pin elektrische ruis opvangen en willekeurige waarden geven, en zou je een externe weerstand nodig hebben om dit op te lossen. Met de interne pull-up ingeschakeld blijft de bedrading eenvoudig: één kant van de knop naar de pin, de andere kant naar ground. Wanneer je de knop indrukt, wordt de pin naar ground getrokken en leest LOW (in video op 14:08).
Ten tweede wordt de seriële monitor gestart op 9600 baud zodat je de statusveranderingen kunt volgen terwijl ze gebeuren:
Serial.begin(9600);//initialize the serial monitor
Serial.println("Robojax LED with push button");//print this text on Serial Monitor
In de hoofdlus is de logica een simpele if/else. De code leest de knop-pin en vergelijkt deze met LOW. Als de knop is ingedrukt, gaat de LED-pin HIGH, wordt het bericht "LED ON" afgedrukt, en wacht de sketch delayLED milliseconden. Als de knop niet is ingedrukt, gaat de LED-pin LOW en gaat de LED uit. Omdat loop() steeds opnieuw wordt uitgevoerd, gebeurt deze controle duizenden keren per seconde, waardoor de reactie direct aanvoelt.
Live demonstratie
Met delayLED ingesteld op 1000 licht de LED op bij het indrukken van de knop en blijft een seconde branden nadat je hem loslaat. Verlaag de waarde naar 5000 en de LED blijft vijf seconden branden — lang genoeg om bij de knop weg te lopen en hem nog steeds te zien branden. Zet het op 0 en de LED volgt je vinger precies: indrukken, aan; loslaten, uit (in video op 17:02).
Zodra de code is geüpload, kun je de Arduino loskoppelen van USB en hem voeden met een batterij of een 5 V-adapter. Het board heeft geen computer nodig om te werken — het programma is opgeslagen in het geheugen en start automatisch elke keer dat het wordt ingeschakeld (in video op 12:27).
Als je liever wilt dat de LED aan blijft na één keer indrukken en uitgaat bij de volgende keer indrukken, is dat een ander gedrag dat togglen wordt genoemd, en dat wordt behandeld in Les 98-3: Hoe je een toggle-LED aan/uit zet met een drukknop en Arduino. De bedrading van de drukknop is identiek, dus je kunt dit exacte circuit hergebruiken.
Gerelateerde projecten uit deze video
- Les 98-1: Hoe je een LED aan en uit zet met Arduino
- Les 98-3: Hoe je een toggle-LED aan/uit zet met een drukknop en Arduino
- Les 98-4: Een LED laten faden met Arduino: helderheidsregeling
- Les 98-5: Licht faden wanneer een knop wordt ingedrukt met Arduino
- Les 98-6: Seesaw LED-spel met Arduino
- Les 98-7: Looplicht met Arduino en 5 LED's
- Les 98-8: Looplicht met drukknop en LED's met Arduino
- Les 98-9: LED-spanningsniveaumeter met Arduino of looplicht met potentiometer
- Les 98-10: Arduino verkeerslicht
Hoofdstukken
- [00:00] Overzicht van de 10 projecten in deze video
- [01:00] Inleiding tot de stapsgewijze Arduino-cursus
- [02:29] Wat een LED is: symbool, anode, kathode en fysieke vorm
- [03:49] De LED-weerstand berekenen met de wet van Ohm
- [07:32] De LED en drukknop op het breadboard bedraden
- [08:50] De code uitleggen: pins, setup en de hoofdlus
- [12:43] Hoe een drukknopschakelaar werkt
- [13:22] De drukknop bedraden naar pin 2 en ground
- [13:43] Code-uitleg: INPUT_PULLUP en de knop uitlezen
- [16:14] Demonstratie: delayLED wijzigen van 1 s naar 5 s naar 0
- [19:52] Praktische toepassingen van een drukknop-toggle
Afbeeldingen
This code has not been parsed yet. Please return to the admin panel to parse it.
Dingen die je misschien nodig hebt
-
AmazonSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Amazon
-
Amazon
-
Amazon
Hulpmiddelen en referenties
-
DocumentatieDocumentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
-
Extern
-
Extern
-
Extern
Bestanden📁
Arduino-bibliotheken (zip)
-
SunFounder's 3-in-1 Smart Car leerpakket broncode
3in1-kit-main-v2.zip12.80 MB
Gebruikershandleiding
-
SunFounder 3-in-1 Arduino Smart Car montagehandleidingDit document toont stap voor stap de montage van de SunFounder 3-in-1 Arduino Smart Car
SunFounder_car_assembly_manual.pdf1.20 MB