Een keypad gebaseerd op cijfers kun je gebruiken om de Raspberry Pi verschillende acties uit te voeren. Je kunt bijvoorbeeld na het indrukken van de combinatie *99# een reboot forceren. In dit stappenplan sluiten we een numeriek keypad 3×4 aan op de Raspberry Pi en lezen we het indrukken van de toetsen uit met behulp van een Python script.
De methode die we hiervoor gebruiken is erg basic en we gebruiken per rij/kolom van het keypad één GPIO poort, wat natuurlijk niet erg efficient is. Een betere, maar zeker niet de eenvoudigste methode is gebruik te maken van een MCP23008 in combinatie met de I2C interface, waardoor er meer vrije GPIO’s beschikbaar blijven. Voor nu gaan we voor de eenvoudige methode en gebruiken we 7 GPIO’s.
Gebruikte componenten
• 3×4 Matrix 12 Key Membrane Switch Keypad
• 7x Dupont verbindingskabel (female/female)
Raspberry Pi 3
Raspbian Jessie (2016-05-27 kernel 4.4.13)
Aansluitschema
Het keypad kun je volgens onderstaand schema aansluiten op de GPIO interface van de Raspberry Pi. De pins van keypad zijn van links naar rechts met het keypad naar de voorzijde geplaatst.
Keypad pin | RPI | RPI pin |
---|---|---|
1 | GPIO18 | 12 |
2 | GPIO23 | 16 |
3 | GPIO24 | 18 |
4 | GPIO25 | 22 |
5 | GPIO4 | 7 |
6 | GPIO17 | 11 |
7 | GPIO22 | 15 |
Keypad 3×4 Python Script
Download met behulp van het wget
commando het Python script om de toetsen op het keypad uit te kunnen lezen:
wget https://raspberrytips.nl/files/keypad.py
Start het Python script:
python keypad.py
Nadat het Python script is gestart kun je op de toetsen van het keypad drukken, in het scherm zal de bijbehorende waarde worden weergegeven.
De toets die op het keypad wordt ingedrukt wordt in het script opgeslagen in de variable digit
na het uitvoeren van kp.getKey()
:
digit = kp.getKey()
Je kunt de variabele gebruiken om deze toe te voegen aan een nieuwe reeks en er daarna een controle op uitvoeren. In het voorbeeld script wordt alleen de waarde van de variabele digit
via het print commando op het scherm weergegeven.