This commit is contained in:
2024-12-28 19:14:49 +01:00
parent 5889406741
commit 1c3e3b77e8

View File

@@ -1,7 +1,8 @@
import threading import threading
import time import time
import sys
import select
from adafruit_servokit import ServoKit # type: ignore from adafruit_servokit import ServoKit # type: ignore
from pynput import keyboard
# Initialize ServoKit # Initialize ServoKit
kit = ServoKit(channels=16) kit = ServoKit(channels=16)
@@ -99,40 +100,36 @@ def group_2(servo_angles):
thread.join() thread.join()
# Main loop control # Main loop control
running = False # Control flag def is_input_available():
"""Check if input is available without blocking."""
def on_press(key): return select.select([sys.stdin], [], [], 0)[0]
global running
try:
if key.char == 'w':
running = True
except AttributeError:
pass
def on_release(key):
global running
if key == keyboard.Key.esc:
return False # Stop listener
try:
if key.char == 'w':
running = False
except AttributeError:
pass
# Main execution # Main execution
if __name__ == "__main__": if __name__ == "__main__":
print("Press 'w' to execute movements. Press 'Esc' to exit.") print("Press 'w' to execute movements. Press 'q' to quit.")
listener = keyboard.Listener(on_press=on_press, on_release=on_release)
listener.start()
while True: running = False
if running: try:
print("Executing Group 1 movements...") while True:
group_1(DEFAULT_SERVO_ANGLES) if is_input_available():
time.sleep(DELAY) input_char = sys.stdin.read(1).strip()
if input_char == 'w':
running = True
elif input_char == 'q':
print("Exiting...")
break
else:
running = False
print("Executing Group 2 movements...") if running:
group_2(DEFAULT_SERVO_ANGLES) print("Executing Group 1 movements...")
time.sleep(DELAY) group_1(DEFAULT_SERVO_ANGLES)
else: time.sleep(DELAY)
time.sleep(0.1) # Idle loop
print("Executing Group 2 movements...")
group_2(DEFAULT_SERVO_ANGLES)
time.sleep(DELAY)
else:
time.sleep(0.1) # Idle loop
except KeyboardInterrupt:
print("\nProgram terminated.")