Hallo
Ich habe eine Frage bezüglich einer Schaltung, die mehrere LEDs nach Druck eines push buttons zufällig auflinken lassen soll.
Als Anhang habe ich ein Bild der aktuellen Schaltung sowie die fritzing Datei (als rar gepackt) beigefügt. Die Schaltung sowie der folgende Code funktionieren, erfüllen aber nicht die Anforderungen. Da ich ein Neueinsteiger bin, sind mir die Feinheiten der python Programmierung noch nicht geläufig, ich hoffe daher auf Nachsicht. Ich verwende einen Raspi 4 Mod. B mit 2GB.
Die Schaltung:
Der Code:
Der Code wird wahrscheinlich alles andere als optimal sein, und der push button fehlt noch. Die Schaltung und der Code sollen folgendes bewerkstelligen:
Ich hoffe, das war so weit verständlich. Mir ist nicht ganz klar, wie und wo ich den push button bei der beigefügten Schaltung einbauen soll, und ob ein zusätzlicher Widerstand dafür notwendig ist. Ebenfalls bräuchte ich Hilfe beim Anpassen des Codes, um den obigen Ablauf zu gewährleisten.
Über Eure Hilfe würde ich mich sehr freuen!
Ich habe eine Frage bezüglich einer Schaltung, die mehrere LEDs nach Druck eines push buttons zufällig auflinken lassen soll.
Als Anhang habe ich ein Bild der aktuellen Schaltung sowie die fritzing Datei (als rar gepackt) beigefügt. Die Schaltung sowie der folgende Code funktionieren, erfüllen aber nicht die Anforderungen. Da ich ein Neueinsteiger bin, sind mir die Feinheiten der python Programmierung noch nicht geläufig, ich hoffe daher auf Nachsicht. Ich verwende einen Raspi 4 Mod. B mit 2GB.
Die Schaltung:
Der Code:
Python:
import RPi.GPIO as GPIO
import time
import random
# random seed und Variable
random.seed()
ledresult = 1
# Raspberry Pi LED Struktur
GPIO.setmode(GPIO.BCM)
YELLOW_LED0 = 17
YELLOW_LED1 = 18
YELLOW_LED2 = 27
GREEN_LED0 = 22
GREEN_LED1 = 23
GREEN_LED2 = 24
RED_LED0 = 25
RED_LED1 = 4
RED_LED2 = 12
GPIO.setup(YELLOW_LED0, GPIO.OUT)
GPIO.setup(YELLOW_LED1, GPIO.OUT)
GPIO.setup(YELLOW_LED2, GPIO.OUT)
GPIO.setup(GREEN_LED0, GPIO.OUT)
GPIO.setup(GREEN_LED1, GPIO.OUT)
GPIO.setup(GREEN_LED2, GPIO.OUT)
GPIO.setup(RED_LED0, GPIO.OUT)
GPIO.setup(RED_LED1, GPIO.OUT)
GPIO.setup(RED_LED2, GPIO.OUT)
# Hauptprogramm
try:
while True:
ledresult = random.randint(1,10)
if ledresult == 1:
GPIO.output(YELLOW_LED0, False)
GPIO.output(YELLOW_LED1, False)
GPIO.output(YELLOW_LED2, False)
GPIO.output(GREEN_LED0, False)
GPIO.output(GREEN_LED1, False)
GPIO.output(GREEN_LED2, False)
GPIO.output(RED_LED0, False)
GPIO.output(RED_LED1, False)
GPIO.output(RED_LED2, False)
if ledresult == 2:
GPIO.output(YELLOW_LED0, True)
GPIO.output(YELLOW_LED1, False)
GPIO.output(YELLOW_LED2, False)
GPIO.output(GREEN_LED0, False)
GPIO.output(GREEN_LED1, False)
GPIO.output(GREEN_LED2, False)
GPIO.output(RED_LED0, False)
GPIO.output(RED_LED1, False)
GPIO.output(RED_LED2, False)
if ledresult == 3:
GPIO.output(YELLOW_LED0, False)
GPIO.output(YELLOW_LED1, True)
GPIO.output(YELLOW_LED2, False)
GPIO.output(GREEN_LED0, False)
GPIO.output(GREEN_LED1, False)
GPIO.output(GREEN_LED2, False)
GPIO.output(RED_LED0, False)
GPIO.output(RED_LED1, False)
GPIO.output(RED_LED2, False)
if ledresult == 4:
GPIO.output(YELLOW_LED0, False)
GPIO.output(YELLOW_LED1, False)
GPIO.output(YELLOW_LED2, True)
GPIO.output(GREEN_LED0, False)
GPIO.output(GREEN_LED1, False)
GPIO.output(GREEN_LED2, False)
GPIO.output(RED_LED0, False)
GPIO.output(RED_LED1, False)
GPIO.output(RED_LED2, False)
if ledresult == 5:
GPIO.output(YELLOW_LED0, False)
GPIO.output(YELLOW_LED1, False)
GPIO.output(YELLOW_LED2, False)
GPIO.output(GREEN_LED0, True)
GPIO.output(GREEN_LED1, False)
GPIO.output(GREEN_LED2, False)
GPIO.output(RED_LED0, False)
GPIO.output(RED_LED1, False)
GPIO.output(RED_LED2, False)
if ledresult == 6:
GPIO.output(YELLOW_LED0, False)
GPIO.output(YELLOW_LED1, False)
GPIO.output(YELLOW_LED2, False)
GPIO.output(GREEN_LED0, False)
GPIO.output(GREEN_LED1, True)
GPIO.output(GREEN_LED2, False)
GPIO.output(RED_LED0, False)
GPIO.output(RED_LED1, False)
GPIO.output(RED_LED2, False)
if ledresult == 7:
GPIO.output(YELLOW_LED0, False)
GPIO.output(YELLOW_LED1, False)
GPIO.output(YELLOW_LED2, False)
GPIO.output(GREEN_LED0, False)
GPIO.output(GREEN_LED1, False)
GPIO.output(GREEN_LED2, True)
GPIO.output(RED_LED0, False)
GPIO.output(RED_LED1, False)
GPIO.output(RED_LED2, False)
if ledresult == 8:
GPIO.output(YELLOW_LED0, False)
GPIO.output(YELLOW_LED1, False)
GPIO.output(YELLOW_LED2, False)
GPIO.output(GREEN_LED0, False)
GPIO.output(GREEN_LED1, False)
GPIO.output(GREEN_LED2, False)
GPIO.output(RED_LED0, True)
GPIO.output(RED_LED1, False)
GPIO.output(RED_LED2, False)
if ledresult == 9:
GPIO.output(YELLOW_LED0, False)
GPIO.output(YELLOW_LED1, False)
GPIO.output(YELLOW_LED2, False)
GPIO.output(GREEN_LED0, False)
GPIO.output(GREEN_LED1, False)
GPIO.output(GREEN_LED2, False)
GPIO.output(RED_LED0, False)
GPIO.output(RED_LED1, True)
GPIO.output(RED_LED2, False)
if ledresult == 10:
GPIO.output(YELLOW_LED0, False)
GPIO.output(YELLOW_LED1, False)
GPIO.output(YELLOW_LED2, False)
GPIO.output(GREEN_LED0, False)
GPIO.output(GREEN_LED1, False)
GPIO.output(GREEN_LED2, False)
GPIO.output(RED_LED0, False)
GPIO.output(RED_LED1, False)
GPIO.output(RED_LED2, True)
time.sleep(0.1)
except KeyboardInterrupt:
print("Programm beendet")
GPIO.cleanup()
Der Code wird wahrscheinlich alles andere als optimal sein, und der push button fehlt noch. Die Schaltung und der Code sollen folgendes bewerkstelligen:
- Alle gesteckten LEDs sind beim Einschalten des Raspi ausgeschaltet
- nach Druck des push buttons werden alle 9 LED per Zufall ein- und ausgeschaltet
- dabei keine sofortige Wiederholung der selben LED (also z.B. nicht LED0 zweimal direkt hintereinander)
- das Programm läuft für eine vorher bestimmte Zeit ab, z.B. 10 Sekunden
- der Ablauf soll vom Start des Programms bis zum Ende langsamer werden, d.h. der Zeitabstand zwischen dem Ein- und Ausschalten der LEDs wird länger
- nach Ablauf des Programms bleibt die letzte LED für einige Sekunden einschaltet
- Programmende, nach dem die letzte LED ausgeschaltet ist
- Programmneustart nach Drücken des push buttons
Ich hoffe, das war so weit verständlich. Mir ist nicht ganz klar, wie und wo ich den push button bei der beigefügten Schaltung einbauen soll, und ob ein zusätzlicher Widerstand dafür notwendig ist. Ebenfalls bräuchte ich Hilfe beim Anpassen des Codes, um den obigen Ablauf zu gewährleisten.
Über Eure Hilfe würde ich mich sehr freuen!