changeset 75:d89650206f92

use microseconds for servo control
author Radomir Dopieralski <sheep-devel@sheep.art.pl>
date Thu, 11 Sep 2014 18:17:21 +0200
parents 5221e4f69437
children a16884812b83
files kubik.py servo.py
diffstat 2 files changed, 5 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/kubik.py	Wed Sep 10 21:50:01 2014 +0200
+++ b/kubik.py	Thu Sep 11 18:17:21 2014 +0200
@@ -26,21 +26,13 @@
 
     def __init__(self, serial):
         self.legs = (
-            Leg(Servo(serial, 11, reverse=True),
-                Servo(serial, 4, reverse=False),
-                Servo(serial, 0, reverse=False),
+            Leg(Servo(serial, 11), Servo(serial, 4), Servo(serial, 0),
                 (-1, -1)),
-            Leg(Servo(serial, 8, reverse=True),
-                Servo(serial, 7, reverse=True),
-                Servo(serial, 3, reverse=True),
+            Leg(Servo(serial, 8), Servo(serial, 7), Servo(serial, 3),
                 (-1, 1)),
-            Leg(Servo(serial, 9, reverse=False),
-                Servo(serial, 6, reverse=False),
-                Servo(serial, 2, reverse=False),
+            Leg(Servo(serial, 9), Servo(serial, 6), Servo(serial, 2),
                 (1, 1)),
-            Leg(Servo(serial, 10, reverse=False),
-                Servo(serial, 5, reverse=True),
-                Servo(serial, 1, reverse=True),
+            Leg(Servo(serial, 10), Servo(serial, 5), Servo(serial, 1),
                 (1, -1)),
         )
         super(Robot, self).__init__()
--- a/servo.py	Wed Sep 10 21:50:01 2014 +0200
+++ b/servo.py	Thu Sep 11 18:17:21 2014 +0200
@@ -28,8 +28,6 @@
         self.serial = serial
 
     def update(self):
-        angle = self.calculate_angle()
-        command = '\xff%c%c' % (self.index, int(angle))
         freq = self.calculate_freq()
         command = '\xfd%c%s' % (self.index, _word(freq))
         self.serial.write(command)
@@ -38,7 +36,7 @@
     def update_all(cls, servos):
         serial = servos[0].serial
         servos = sorted(servos, key=lambda servo: servo.index)
-        command = '\xfe%s' % ''.join(chr(int(servo.calculate_angle()))
+        command = '\xfc%s' % ''.join(_word(servo.calculate_freq())
                                      for servo in servos)
         serial.write(command)