ja stimmt...
ist mein erstes Projekt und mir fehlt noch das Hintergrundwissen
Raspi, Motoren per Tastatur/Controller ansteuern
[codebox=jquery file=Unbenannt.js][/code]aber was ich nicht ganz verstehe:
warum kennt das Skript X_Button und CHANGE_INTERVAL aber nicht "speed_from_keyboard"?
Code: Alles auswählen
#!/usr/bin/python3
X_Button = 14
JOYSTICK_DEVICE_PATH = '/dev/input/js0'
CHANGE_INTERVAL = 0.1
STEERING_LEVELS = [0.0, 26.4, 37.9, 49.4, 63.2, 74.7, 87.4, 100.0]
speed_from_keyboard = 0
def run(speed_pwm, right_pwm, left_pwm, controller):
while True:
if controller.get_button(X_Button):
return
... irgendwas mit speed_from_keyboard
time.sleep(CHANGE_INTERVAL)
def main():
GPIO.setmode(GPIO.BOARD)
GPIO.setup(
[
SPEED_PIN, FORWARD_PIN, BACKWARD_PIN, STEERING_PIN, RIGHT_PIN, LEFT_PIN,
UP_PIN, DOWN_PIN, OPEN_PIN, CLOSE_PIN, READY_PIN,
],
GPIO.OUT,
initial=GPIO.LOW
)
GPIO.output(READY_PIN, GPIO.HIGH)
try:
controller = pygame.joystick.Joystick(0)
controller.init()
try:
run(speed_pwm, right_pwm, left_pwm, controller)
finally:
pygame.quit()
except KeyboardInterrupt:
pass
finally:
GPIO.cleanup()
if __name__ == "__main__":
main()
@gamble: Weil Du bei dem ”irgendwas” sicherlich irgendwo dem Namen etwas zuweist, und damit ist das ein lokaler Name der innerhalb der Funktion sichtbar ist und den gleichen Namen auf Modulebene verdeckt. Wenn Du innerhalb einer Funktion etwas zuweist, dann willst Du das ja aber sowieso nicht auf Modulebene zuweisen, denn das wäre dann ja eine globale Variable und damit Böse™.
`X_Button` sollte konventionell `X_BUTTON` heissen. Sonst denkt am Ende noch jemand es sei der Name einer Klasse. Auch wenn in *den* Namen normalerweise keine Unterstriche vorkommen.
`X_Button` sollte konventionell `X_BUTTON` heissen. Sonst denkt am Ende noch jemand es sei der Name einer Klasse. Auch wenn in *den* Namen normalerweise keine Unterstriche vorkommen.