Keypad mit LED verbinden
Verfasst: Sonntag 19. April 2020, 18:50
Hallo, ich habe einen Raspberry Pi 3B+ und möchte das Programmieren mit Python lernen. Dafür habe ich ein Starterbuch von "Jugend programmiert". Ein paar einfache Projekte sind mir mit Scratch und Python schon gelungen, aber bei einem neuen Projekt habe ich ein Problem: Ich habe ein Keypad (wie eine Telefontastatur) und ein LED-Auswahlsystem schon programmiert. Bei dem LED-Programm kann man wählen, welches der drei LED's man aufleuchten lassen möchte. Beim Keypad habe ich nur eingestellt, dass die gedrückten Zahlen auch ausgegeben werden.
Ich bin mittlerweile an dem Punkt, dass mein Programm fragt, welches LED eingeschaltet werden soll, aber ich kann die Zahl nicht mit dem Keypad eingeben. Es funktioniert erst wieder, wenn die Zahl auf der Tastatur eingegeben und bestätigt wurde. Jedoch soll man das Keypad zur Eingabe nutzen können. Ich schätze, dass die Position/Mischung der beiden Programme das Problem ist. Ich hoffe jemand von euch weiß da weiter.
Der Code für die LED's ist:
import RPi.GPIO as gpio
import time
gpio.setmode(gpio.BCM)
gpio.setup(18, gpio.OUT)
gpio.setup(20, gpio.OUT)
gpio.setup(4, gpio.OUT)
farbe = input("1, 2 oder 3?")
if farbe == "1":
gpio.output(20, gpio.HIGH)
time.sleep(2)
gpio.output(20, gpio.LOW)
if farbe == "3":
gpio.output(18, gpio.HIGH)
time.sleep(2)
gpio.output(18, gpio.LOW)
if farbe == "2":
gpio.output(4, gpio.HIGH)
time.sleep(2)
gpio.output(4, gpio.LOW)
gpio.cleanup()
Der Code für das Keypad ist:
import RPi.GPIO as gpio
import time
gpio.setmode(gpio.BCM)
matrix = [ ["1", "2", "3", "A"],
["4", "5", "6", "B"],
["7", "8", "9", "C"],
["*", "0", "#", "D"] ]
spalte = [19, 17, 27, 22]
zeile = [26, 13, 6, 5]
for j in range(4):
gpio.setup(spalte[j], gpio.OUT)
gpio.output(spalte[j], 1)
gpio.setup(zeile[j], gpio.IN,
pull_up_down=gpio.PUD_UP)
def keypad():
while True:
for j in range(4):
gpio.output(spalte[j], 0)
for i in range(4):
if gpio.input(zeile) == 0:
benutzerEingabe = matrix[j]
while gpio.input(zeile) == 0:
pass
return benutzerEingabe
gpio.output(spalte[j], 1)
return False
try:
while True:
print(keypad())
time.sleep(0.2)
except KeyboardInterrupt:
gpio.cleanup()
Ich bin mittlerweile an dem Punkt, dass mein Programm fragt, welches LED eingeschaltet werden soll, aber ich kann die Zahl nicht mit dem Keypad eingeben. Es funktioniert erst wieder, wenn die Zahl auf der Tastatur eingegeben und bestätigt wurde. Jedoch soll man das Keypad zur Eingabe nutzen können. Ich schätze, dass die Position/Mischung der beiden Programme das Problem ist. Ich hoffe jemand von euch weiß da weiter.
Der Code für die LED's ist:
import RPi.GPIO as gpio
import time
gpio.setmode(gpio.BCM)
gpio.setup(18, gpio.OUT)
gpio.setup(20, gpio.OUT)
gpio.setup(4, gpio.OUT)
farbe = input("1, 2 oder 3?")
if farbe == "1":
gpio.output(20, gpio.HIGH)
time.sleep(2)
gpio.output(20, gpio.LOW)
if farbe == "3":
gpio.output(18, gpio.HIGH)
time.sleep(2)
gpio.output(18, gpio.LOW)
if farbe == "2":
gpio.output(4, gpio.HIGH)
time.sleep(2)
gpio.output(4, gpio.LOW)
gpio.cleanup()
Der Code für das Keypad ist:
import RPi.GPIO as gpio
import time
gpio.setmode(gpio.BCM)
matrix = [ ["1", "2", "3", "A"],
["4", "5", "6", "B"],
["7", "8", "9", "C"],
["*", "0", "#", "D"] ]
spalte = [19, 17, 27, 22]
zeile = [26, 13, 6, 5]
for j in range(4):
gpio.setup(spalte[j], gpio.OUT)
gpio.output(spalte[j], 1)
gpio.setup(zeile[j], gpio.IN,
pull_up_down=gpio.PUD_UP)
def keypad():
while True:
for j in range(4):
gpio.output(spalte[j], 0)
for i in range(4):
if gpio.input(zeile) == 0:
benutzerEingabe = matrix[j]
while gpio.input(zeile) == 0:
pass
return benutzerEingabe
gpio.output(spalte[j], 1)
return False
try:
while True:
print(keypad())
time.sleep(0.2)
except KeyboardInterrupt:
gpio.cleanup()