File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 77>>> servo.angle = 30 # Turn motor to 30 degrees position.
88"""
99
10+ import time
11+ from typing import List
1012from typing import Union
1113
1214from pslab .instrument .waveform_generator import PWMGenerator
@@ -70,3 +72,21 @@ def _get_duty_cycle(self, angle):
7072 angle *= self ._max_angle_pulse - self ._min_angle_pulse # Scale
7173 angle += self ._min_angle_pulse # Offset
7274 return angle / (self ._frequency ** - 1 * MICROSECONDS )
75+
76+
77+ class RoboticArm :
78+ MAX_SERVOS = 4
79+
80+ def __init__ (self , servos : List [Servo ]) -> None :
81+ if len (servos ) > RoboticArm .MAX_SERVOS :
82+ raise ValueError (
83+ f"At most { RoboticArm .MAX_SERVOS } servos can be used, got { len (servos )} "
84+ )
85+ self .servos = servos
86+
87+ def run_schedule (self , timeline : List [List [int ]]) -> None :
88+ for i in range (len (timeline )):
89+ for j in range (len (self .servos )):
90+ angle = timeline [i ][j ]
91+ self .servos [j ].angle = angle
92+ time .sleep (1 )
You can’t perform that action at this time.
0 commit comments