|
42 | 42 | CHANNEL_INDEX_COLOURTAIL_CONTROL, |
43 | 43 | CHANNEL_INDEX_PWM_CONF_0, |
44 | 44 | CHANNEL_INDEX_PWM_CONF_1, |
45 | | - CHANNEL_INDEX_PWM_CONF_2) = range(5, 30) |
| 45 | + CHANNEL_INDEX_PWM_CONF_2, |
| 46 | + CHANNEL_INDEX_SERVO_PULSE_LENGTH, |
| 47 | + CHANNEL_INDEX_SERVO_CONF) = range(5, 32) |
46 | 48 |
|
47 | 49 | EXTENSION_CONF_IO = 0x01 |
48 | 50 | EXTENSION_CONF_SPI = 0x02 |
@@ -216,6 +218,16 @@ def pwm_off(self): |
216 | 218 | go_busy_off_mask = 0xff ^ (1 << 4) |
217 | 219 | self.and_mask(CHANNEL_INDEX_PWM_CONF_2, go_busy_off_mask) |
218 | 220 |
|
| 221 | + def servo_set(self, servo_index, pulse_length): |
| 222 | + pulse_length_msb = 0xff & (pulse_length >> 8) |
| 223 | + pulse_length_lsb = 0xff & pulse_length |
| 224 | + conf_msb = ((servo_index & 0xf) << 4) | 0x01 |
| 225 | + conf_lsb = ((servo_index & 0xf) << 4) | 0x00 |
| 226 | + self.set_bulk(CHANNEL_INDEX_SERVO_PULSE_LENGTH, |
| 227 | + [pulse_length_msb, conf_msb]) |
| 228 | + self.set_bulk(CHANNEL_INDEX_SERVO_PULSE_LENGTH, |
| 229 | + [pulse_length_lsb, conf_lsb]) |
| 230 | + |
219 | 231 | def clear(self): |
220 | 232 | """Clears the pixels on CodeBug. |
221 | 233 |
|
|
0 commit comments