Raspberry Pi - Keypad 1x4

In deze tutorial leert u hoe u een keypad 1x4 gebruikt met een Raspberry Pi. In detail leert u:

Raspberry Pi Keypad 1x4

Hardware Benodigd

1×Raspberry Pi 5
1×Toetsenbord 1x4
1×Jumperdraden
1×(Aanbevolen) Schroefklem Block Shield voor Raspberry Pi
1×(Aanbevolen) Raspberry Pi Prototyping Basisplaat & Breadboard Kit
1×(Aanbevolen) HDMI-Touchscreen-Monitor voor Raspberry Pi

Of u kunt de volgende kits kopen:

1×DIYables Sensorkit (30 sensoren/displays)
1×DIYables Sensorkit (18 sensoren/displays)
Openbaarmaking: Sommige van de links in deze sectie zijn Amazon-affiliate links. We kunnen een commissie ontvangen voor aankopen die via deze links worden gedaan, zonder extra kosten voor u. We waarderen uw steun.

Over Keypad 1x4

Een 1x4 keypad bestaat uit vier membraanknoppen die in één rij zijn geplaatst. Het wordt vaak gebruikt voor gebruikersinvoer in projecten zoals het invoeren van toegangscodes, navigatie in menu’s of bedieningsinterfaces.

Pinout

Het 1x4 keypad heeft 5 pinnen, die niet direct overeenkomen met de toetsenlabels in volgorde. Specifiek:

  • Pin 1: verbonden met toets 2
  • Pin 2: verbonden met toets 1
  • Pin 3: verbonden met toets 4
  • Pin 4: verbonden met toets 3
  • Pin 5: is de gemeenschappelijke pin die met alle toetsen verbonden is
Keypad 1x4 Pinout
image source: diyables.io

Aansluitschema

Raspberry Pi Keypad 1x4 Aansluitschema

This image is created using Fritzing. Click to enlarge image

Raspberry Pi Code

Elke toets op het 1x4 keypad werkt als een knop (button). Dat betekent dat we de digitalRead() functie kunnen gebruiken om de status van elke toets te controleren. In de praktijk, zoals bij elke knop, moeten we echter rekening houden met het effect van “bouncing” (terugkaatsen), waarbij een enkele druk per ongeluk als meerdere drukken kan worden geregistreerd. Om dit te voorkomen, moeten we elke toets ontbouncen (debounce). Dit wordt een uitdaging wanneer u probeert vier toetsen te ontbouncen zonder andere delen van de code te blokkeren. Gelukkig vereenvoudigt de ezButton-bibliotheek dit proces.

Snelle Stappen

  • Zorg dat u Raspbian of een ander Raspberry Pi-compatibel besturingssysteem op uw Pi hebt geïnstalleerd.
  • Zorg dat uw Raspberry Pi verbonden is met hetzelfde lokale netwerk als uw pc.
  • Zorg dat uw Raspberry Pi verbonden is met internet als u bibliotheken moet installeren.
  • Als dit de eerste keer is dat u een Raspberry Pi gebruikt, bekijk dan hoe u de Raspberry Pi installeert en configureert.
  • Verbind het 1x4 keypad met de Raspberry Pi (in de originele tekst stond Arduino Nano, dit lijkt een fout, dus hier juist genoemd).
  • Verbind uw pc met de Raspberry Pi via SSH met behulp van de ingebouwde SSH-client op Linux en macOS, of PuTTY op Windows. Zie hoe verbind ik mijn pc met de Raspberry Pi via SSH.
  • Controleer of u de RPi.GPIO bibliotheek geïnstalleerd hebt. Zo niet, installeer deze dan met het volgende commando:
sudo apt-get update sudo apt-get install python3-rpi.gpio
  • Maak een Python-scriptbestand aan met de naam keypad_1x4.py en voeg de volgende code toe:
# Deze Raspberry Pi code is ontwikkeld door newbiely.nl # Deze Raspberry Pi code wordt zonder enige beperking aan het publiek beschikbaar gesteld. # Voor volledige instructies en schema's, bezoek: # https://newbiely.nl/tutorials/raspberry-pi/raspberry-pi-keypad-1x4 import RPi.GPIO as GPIO import time # Define GPIO pins for the keypad buttons PIN_KEY_1 = 24 # The Raspberry Pi pin GPIO24 connected to the key 1 PIN_KEY_2 = 23 # The Raspberry Pi pin GPIO23 connected to the key 2 PIN_KEY_3 = 8 # The Raspberry Pi pin GPIO8 connected to the key 3 PIN_KEY_4 = 25 # The Raspberry Pi pin GPIO25 connected to the key 4 KEY_PINS = [PIN_KEY_1, PIN_KEY_2, PIN_KEY_3, PIN_KEY_4] DEBOUNCE_TIME = 0.1 # 100 milliseconds # Setup GPIO mode GPIO.setmode(GPIO.BCM) # Setup GPIO pins as inputs with pull-up resistors for pin in KEY_PINS: GPIO.setup(pin, GPIO.IN, pull_up_down=GPIO.PUD_UP) # Initialize previous states for each button previous_states = [GPIO.input(pin) for pin in KEY_PINS] # Function to read the state of the keypad buttons with debouncing def get_key_pressed(): pressed_key = 0 for i, pin in enumerate(KEY_PINS): current_state = GPIO.input(pin) if previous_states[i] == GPIO.HIGH and current_state == GPIO.LOW: # Detect state change from HIGH to LOW time.sleep(DEBOUNCE_TIME) # Wait for debounce time if GPIO.input(pin) == GPIO.LOW: # Ensure button is still pressed pressed_key = i + 1 break return pressed_key try: while True: key = get_key_pressed() if key: print(f"The key {key} is pressed") # Update the previous states previous_states = [GPIO.input(pin) for pin in KEY_PINS] time.sleep(0.1) # Delay for a short period to avoid excessive CPU usage except KeyboardInterrupt: # Cleanup GPIO settings before exiting GPIO.cleanup() print("Program terminated")
  • Sla het bestand op en start het Python-script door het volgende commando in de terminal uit te voeren:
python3 keypad_1x4.py
  • Druk een voor een op elke toets van het 1x4 keypad.
  • Controleer het resultaat in de Terminal.
PuTTY - Raspberry Pi
The key 1 is pressed The key 2 is pressed The key 3 is pressed The key 4 is pressed

※ ONZE BERICHTEN

  • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!