Hey,
Ich habe mich letzten meinem ersten komplett eigenen Projekt gewidmet, dies ist die Automatisation eines Tischkickers. Jedoch habe ich nun ein Problem, ich möchte mir die Tore Anzeigen lassen, mit der Hilfe eines Raspberry Pi 4b. Nachdem der Pico (der zuständig ist für die funktionierende Torerkennung) dem Pi ein Signal, über eine Kabelverbindung, geschickt hat.
Ich habe jetzt schon mehrere Programme ausprobiert, jedoch zählt der Pi in keinem die Tore.
Zudem habe schon überprüft, ob ich die richtigen Pins richtig angeschlossen habe, ob diese auch beim Pi auch GPIO.Pins sind, genauso habe ich die GNDs des Pis und des Pico miteinander verbunden und auch ob der Pico überhaupt etwas ausgibt.
Den Quellcode habe ich angehangen.
import pygame
import RPi.GPIO as GPIO
# GPIO-Pins für Tor A und Tor B konfigurieren
TOR_A_PIN = 12
TOR_B_PIN = 16
# Spiellimit festlegen
SPIEL_LIMIT = 10
# Globale Zählervariablen
tor_a_zähler = 0
tor_b_zähler = 0
# GPIO initialisieren
GPIO.setmode(GPIO.BCM)
GPIO.setup(TOR_A_PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(TOR_B_PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP)
# Event-Handler für Tor A
def tor_a_geändert(channel):
global tor_a_zähler
if GPIO.event_detected(TOR_A_PIN):
tor_a_zähler += 1
print("Tor A! Punktestand: A={} B={}".format(tor_a_zähler, tor_b_zähler))
# Event-Handler für Tor B
def tor_b_geändert(channel):
global tor_b_zähler
if GPIO.event_detected(TOR_B_PIN):
tor_b_zähler += 1
print("Tor B! Punktestand: A={} B={}".format(tor_a_zähler, tor_b_zähler))
# Pygame initialisieren
pygame.init()
display = pygame.display.set_mode((320, 480))
clock = pygame.time.Clock()
font = pygame.font.Font(None, 36)
# Hauptschleife
spiel_counter = 0
spiel_beendet = False
while not spiel_beendet:
# Debug
print("Anfangszustand Tor A: ", GPIO.input(TOR_A_PIN))
print("Anfangszustand Tor B: ", GPIO.input(TOR_B_PIN))
# Event-Handling
for event in pygame.event.get():
if event.type == pygame.QUIT:
spiel_beendet = True
# Spielschleife
if spiel_counter < SPIEL_LIMIT:
# Anzeige aktualisieren
display.fill((0, 0, 0))
text_a = font.render("Tor A: {}".format(tor_a_zähler), True, (255, 255, 255))
text_b = font.render("Tor B: {}".format(tor_b_zähler), True, (255, 255, 255))
display.blit(text_a, (50, 200))
display.blit(text_b, (50, 250))
pygame.display.flip()
clock.tick(60)
#GPIO.add_event_detect(TOR_A_PIN, GPIO.RISING, callback=tor_a_geändert)
#GPIO.add_event_detect(TOR_B_PIN, GPIO.RISING, callback=tor_b_geändert)
# Event-Handler aufrufen, falls eine Änderung an den Pins stattgefunden hat
if GPIO.event_detected(TOR_A_PIN):
tor_a_geändert(TOR_A_PIN)
if GPIO.event_detected(TOR_B_PIN):
tor_b_geändert(TOR_B_PIN)
else:
spiel_beendet = True
# GPIO bereinigen und Pygame beenden
GPIO.cleanup()
pygame.quit()
Display More
Hat jemand einen Lösungsvorschlag, der mein Projekt retten kann?
Mit freundlichen Grüßen
MITHELD