a
This commit is contained in:
102
walk.py
Normal file
102
walk.py
Normal file
@@ -0,0 +1,102 @@
|
||||
import threading
|
||||
import time
|
||||
from adafruit_servokit import ServoKit
|
||||
|
||||
# Initialize ServoKit
|
||||
kit = ServoKit(channels=16)
|
||||
|
||||
# Constants for delay
|
||||
DELAY = 1
|
||||
|
||||
# Angle configuration for each servo
|
||||
SERVO_ANGLES = {
|
||||
0: (0, 180, 90),
|
||||
1: (0, 180, 90),
|
||||
2: (0, 180, 90),
|
||||
3: (0, 180, 90),
|
||||
4: (0, 180, 90),
|
||||
5: (0, 180, 90),
|
||||
6: (0, 180, 90),
|
||||
7: (0, 130, 65),
|
||||
8: (0, 180, 90),
|
||||
9: (180, 0, 90),
|
||||
10: (130, 0, 65),
|
||||
11: (180, 0, 90)
|
||||
}
|
||||
|
||||
# Movement functions
|
||||
def move_leg(servo1, servo2):
|
||||
"""Moves a pair of servos synchronously and prints their positions."""
|
||||
front1, back1, neutral1 = SERVO_ANGLES[servo1]
|
||||
front2, back2, neutral2 = SERVO_ANGLES[servo2]
|
||||
|
||||
kit.servo[servo1].angle = front1
|
||||
kit.servo[servo2].angle = front2
|
||||
print(f"Servos {servo1} and {servo2} set to FRONT angles: {front1}, {front2}")
|
||||
time.sleep(DELAY)
|
||||
|
||||
kit.servo[servo1].angle = back1
|
||||
print(f"Servo {servo1} set to BACK angle: {back1}")
|
||||
time.sleep(DELAY)
|
||||
|
||||
kit.servo[servo2].angle = back2
|
||||
print(f"Servo {servo2} set to BACK angle: {back2}")
|
||||
time.sleep(DELAY)
|
||||
|
||||
kit.servo[servo1].angle = neutral1
|
||||
print(f"Servo {servo1} set to NEUTRAL angle: {neutral1}")
|
||||
|
||||
kit.servo[servo2].angle = neutral2
|
||||
print(f"Servo {servo2} set to NEUTRAL angle: {neutral2}")
|
||||
|
||||
def left_leg_0():
|
||||
move_leg(0, 6)
|
||||
|
||||
def left_leg_1():
|
||||
move_leg(1, 7)
|
||||
|
||||
def left_leg_2():
|
||||
move_leg(2, 8)
|
||||
|
||||
def right_leg_3():
|
||||
move_leg(3, 9)
|
||||
|
||||
def right_leg_4():
|
||||
move_leg(4, 10)
|
||||
|
||||
def right_leg_5():
|
||||
move_leg(5, 11)
|
||||
|
||||
# List of leg movements
|
||||
def group_1():
|
||||
threads = [
|
||||
threading.Thread(target=left_leg_0),
|
||||
threading.Thread(target=left_leg_2),
|
||||
threading.Thread(target=right_leg_4),
|
||||
]
|
||||
for thread in threads:
|
||||
thread.start()
|
||||
for thread in threads:
|
||||
thread.join()
|
||||
|
||||
def group_2():
|
||||
threads = [
|
||||
threading.Thread(target=left_leg_1),
|
||||
threading.Thread(target=right_leg_3),
|
||||
threading.Thread(target=right_leg_5),
|
||||
]
|
||||
for thread in threads:
|
||||
thread.start()
|
||||
for thread in threads:
|
||||
thread.join()
|
||||
|
||||
# Main loop
|
||||
if __name__ == "__main__":
|
||||
while True:
|
||||
print("Executing Group 1 movements...")
|
||||
group_1()
|
||||
time.sleep(DELAY)
|
||||
|
||||
print("Executing Group 2 movements...")
|
||||
group_2()
|
||||
time.sleep(DELAY)
|
||||
Reference in New Issue
Block a user