a
This commit is contained in:
63
walk2.py
63
walk2.py
@@ -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.")
|
||||||
|
|||||||
Reference in New Issue
Block a user