Deze tutorial maakt deel uit van: Toetsenborden
Alle video's met toetsenbordbediening staan hier vermeld.
Arduino-code en video voor een vier-toetsen toetsenbord
In deze tutorial leren we hoe we een vierknoppen-toetsenbord kunnen gebruiken met een Arduino. Dit project is vooral nuttig voor toepassingen waarbij je meerdere knoppen nodig hebt maar het aantal gebruikte draden wilt minimaliseren. Door het toetsenbord op een specifieke manier aan te sluiten, kunnen we een functionele opstelling bereiken met slechts vijf draden in plaats van acht.

Het vierknoppen-toetsenbord vereenvoudigt het bedradingsproces, omdat het een gemeenschappelijke verbinding heeft die het totale aantal benodigde draden vermindert. Elke toets is verbonden met de Arduino via aangewezen pinnen, wat zorgt voor eenvoudige interactie en bediening. Deze handleiding behandelt de bedrading, code en het verwachte gedrag van het toetsenbord, zodat je het project succesvol kunt nabootsen (in video op 02:30).
Hardware uitgelegd
De belangrijkste componenten van dit project zijn een vierknoppen-toetsenbord en een Arduino-bord. Het toetsenbord bevat vier knoppen, en elke knop is verbonden met de Arduino via twee draden—één gemeenschappelijke draad en één speciale draad voor elke knop. Deze opstelling zorgt voor eenvoudige verbindingen terwijl rommel wordt geminimaliseerd.
De Arduino interpreteert de knopdrukken met behulp van digitale ingangen, vertrouwend op interne pull-up-weerstanden om stabiele metingen te garanderen. Wanneer een knop wordt ingedrukt, verbindt deze de overeenkomstige pin met de grond, waardoor de Arduino de verandering in toestand kan detecteren.
Datasheet-details
| Fabrikant | Generiek |
|---|---|
| Onderdeelnummer | 4-Toetsen Toetsenbord |
| Logica/IO-spanning | 5 V |
| Voedingsspanning | 5 V |
| Aantal toetsen | 4 |
| Gemeenschappelijk pinnetype | Actief-laag |
| Knopweerstand | 1 kΩ (typ.) |
| Behuizing | Flexibele PCB |
| Opmerkingen / varianten | Beschikbaar in meerdere lay-outs |
- Elke knop vereist twee verbindingen: één voor de knop en één voor de gemeenschappelijke grond.
- Het gebruik van interne pull-up-weerstanden vereenvoudigt de bedrading en vermindert het aantal componenten.
- Zorg ervoor dat de gemeenschappelijke pin is verbonden met de grond voor een correcte werking.
- Debounce knopdrukken in software om valse metingen te voorkomen.
- Test de knopfunctie met een eenvoudige seriële uitvoer voor feedback.
Bedradingsinstructies

Om het vierknoppen-toetsenbord op de Arduino aan te sluiten, volg je deze stappen:
- Verbind de eerste toetsdraad met pin
2op de Arduino. - Verbind de tweede toetsdraad met pin
3. - Verbind de derde toetsdraad met pin
4. - Verbind de vierde toetsdraad met pin
5. - Verbind de gemeenschappelijke draad van het toetsenbord met de grondpin op de Arduino.
Zorg ervoor dat elke draad stevig is verbonden om losse verbindingen te voorkomen. Als je problemen ondervindt, controleer dan elke verbinding opnieuw tegen de pin-toewijzingen die in de video worden getoond (in video op 04:15).
Codevoorbeelden en uitleg
Het volgende codefragment initialiseert de pinnen voor het toetsenbord en stelt ze in als ingangen:
#define key1 2 //verbind draad 1 met pin 2
#define key2 3 //verbind draad 2 met pin 3
#define key3 4 //verbind draad 3 met pin 4
#define key4 5 //verbind draad 4 met pin 5
void setup() {
Serial.begin(9600);
pinMode(key1, INPUT_PULLUP); // stel pin in als ingang
pinMode(key2, INPUT_PULLUP); // stel pin in als ingang
pinMode(key3, INPUT_PULLUP); // stel pin in als ingang
pinMode(key4, INPUT_PULLUP); // stel pin in als ingang
}
In de bovenstaande code wordt elke toets gedefinieerd met een overeenkomstig pinnummer. De INPUT_PULLUP-modus zorgt ervoor dat de pinnen hoog lezen wanneer ze niet worden ingedrukt, wat de detectie van knopdrukken vereenvoudigt.
De loop-functie leest de toestand van elke toets en print het bijbehorende bericht wanneer deze wordt ingedrukt:
void loop() {
int key1S = digitalRead(key1); // lees of key1 is ingedrukt
int key2S = digitalRead(key2); // lees of key2 is ingedrukt
int key3S = digitalRead(key3); // lees of key3 is ingedrukt
int key4S = digitalRead(key4); // lees of key4 is ingedrukt
if(!key1S) {
Serial.println("toets 1 is ingedrukt");
}
if(!key2S) {
Serial.println("toets 2 is ingedrukt");
}
// Extra code voor key3 en key4...
delay(100);
}
Dit codegedeelte controleert de toestand van elke toets en print een bericht naar de seriële monitor wanneer een toets wordt ingedrukt. De delay(100) zorgt voor een debounce-effect, zodat meerdere drukken niet snel achter elkaar worden geregistreerd.
Demonstratie / Wat te verwachten
Na het succesvol bedraden en uploaden van de code naar je Arduino, kun je verwachten dat de seriële monitor berichten weergeeft die aangeven welke toets is ingedrukt. Het indrukken van toets één zal "toets 1 is ingedrukt" uitvoeren, enzovoort voor de andere toetsen. Als de berichten niet verschijnen, controleer dan je bedrading en zorg ervoor dat de gemeenschappelijke draad is verbonden met de grond.
Wees voorzichtig met omgekeerde verbindingen, omdat dit tot onverwacht gedrag kan leiden. Zorg ervoor dat de gebruikte pinnen overeenkomen met die in je code zijn gedefinieerd (in video op 06:45).
Videotijdstempels
- 00:00 - Introductie
- 02:30 - Bedrading uitleg
- 04:15 - Pin-toewijzingen
- 06:45 - Testen van het toetsenbord
Deze tutorial maakt deel uit van: Toetsenborden
- Gebruik van 4x3-toetsenbord met Arduino
- Arduino-code en video: 4x4-matrix zwarte keypad
- Build a Simple Electronic Lock with Keypad and LCD Using Arduino
- Controlling an 8-channel relay with a 4x3 keypad
- Hoe gebruik je een 4x4 Soft Keypad met Arduino
- How to Use a 5x4 20-Key Keypad with Arduino to Detect Strings
- Lesson 67: Controlling an 8-Channel Relay with a Keypad Using Arduino
- 1602 LCD-toetsenbordschild: Basiscode
++
/*
* This is the Arduino code for a 4-key keypad.
* Watch the video for details and demo: https://youtu.be/BiOh_Z2N7kk
*
* Written by Ahmad Shamshiri for the Robojax Video channel,
get code, wiring diagram and resources at www.Robojax.com/RJT37
* Date: December 28, 2017, in Ajax, Ontario, Canada
* Permission granted to share this code, given that this
* note is kept with the code.
* Disclaimer: This code is "AS IS" and for educational purposes only.
* This code has been downloaded from https://robojax.com
// Recorded December 28, 2017 for Robojax.com
#define key1 2 //connect wire 1 to pin 2
#define key2 3 //connect wire 2 to pin 3
#define key3 4 //connect wire 3 to pin 4
#define key4 5 //connect wire 4 to pin 5
void setup() {
Serial.begin(9600);
pinMode(key1, INPUT_PULLUP);// set pin as input
pinMode(key2, INPUT_PULLUP);// set pin as input
pinMode(key3, INPUT_PULLUP);// set pin as input
pinMode(key4, INPUT_PULLUP);// set pin as input
}
void loop() {
int key1S = digitalRead(key1);// read if key1 is pressed
int key2S = digitalRead(key2);// read if key2 is pressed
int key3S = digitalRead(key3);// read if key3 is pressed
int key4S = digitalRead(key4);// read if key4 is pressed
// Code written for Robojax.com video tutorial
if(!key1S){
Serial.println("key 1 is pressed");
}
if(!key2S){
Serial.println("key 2 is pressed");
}
if(!key3S){
Serial.println("key 3 is pressed");
}
if(!key4S){
Serial.println("key 4 is pressed");
}
delay(100);
}
Dingen die je misschien nodig hebt
-
Amazon
-
AliExpressBuy soft keypad from AliExpresss.click.aliexpress.com
Hulpmiddelen en referenties
Nog geen middelen.