Jeder Import gehört in eine eigene Zeile. 10 Importe in einer Zeile sind definitiv nicht lesbar.
Deshalb wird wohl auch time 2x importiert; os, sys, tkinter, operator, random, spidev, datetime und locale werden importiert, aber nicht benutzt.
Variablennamen schreibt man generell komplett klein. Man speichert nicht die Stringrepresentation einer Zahl in einer eigenen Variable, sondern konvertiert bei der Ausgabe. Dazu benutzt man Format-Strings.
Bei with braucht man kein close. Du hast viermal den identischen Code zum Schreiben in eine Datei.
Am Ende des Programms muß man verlässlich GPIO.cleanup aufrufen.
Code: Alles auswählen
from RPi import GPIO
import time
def write_clicks(left_player, right_player):
with open("/home/pi/clicks.txt", 'w') as file:
text = f"{left_player}:{right_player}"
file.write(text)
print(text)
def initialize():
GPIO.setmode(GPIO.BCM)
GPIO.setup(18,GPIO.IN,pull_up_down=GPIO.PUD_UP)
GPIO.setup(17,GPIO.IN,pull_up_down=GPIO.PUD_UP)
GPIO.setup(27,GPIO.IN,pull_up_down=GPIO.PUD_UP)
def main():
try:
initialize()
left_player = right_player = 0
while True:
move = GPIO.input(17)
if move == 0:
right_player += 1
write_clicks(left_player, right_player)
time.sleep(0.5)
move = GPIO.input(18)
if move == 0:
left_player += 1
write_clicks(left_player, right_player)
time.sleep(0.5)
move = GPIO.input(27)
if move == 0:
left_player = right_player = 0
write_clicks(left_player, right_player)
time.sleep(0.5)
finally:
GPIO.cleanup()
if __name__ == "__main__":
main()
Und wo ist nun Dein konkretes Problem? Was funktioniert nicht so, wie Du es willst?