Ian Krase / PolyServo

Dependents:   Quadrapod

Committer:
ikrase
Date:
Fri Jul 03 08:17:30 2015 +0000
Revision:
7:f9e1e813fa24
Parent:
6:bad5554bb890
Child:
8:c09ae4fef420
Closer to getting this working.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ikrase 0:6105cf98b610 1
ikrase 0:6105cf98b610 2 #include "PolyServo.h"
ikrase 0:6105cf98b610 3 #include "mbed.h"
ikrase 1:1135f0b1566e 4 #include "FPointer.h"
ikrase 0:6105cf98b610 5 #include <vector>
ikrase 4:32fa20b74c9c 6 //#include "SpecifiedTimeout.h"
ikrase 0:6105cf98b610 7
ikrase 0:6105cf98b610 8
ikrase 0:6105cf98b610 9 Polyservo::Polyservo(DigitalOut servo_pins[], int num_pins): numservos(num_pins) {
ikrase 1:1135f0b1566e 10 servos.reserve(numservos); servo_timers.reserve(numservos); positions.reserve(numservos);
ikrase 0:6105cf98b610 11 //numservos = num_pins;
ikrase 0:6105cf98b610 12 for(int i = 0; i < numservos; i++){
ikrase 0:6105cf98b610 13 Timeout* t = new Timeout();
ikrase 0:6105cf98b610 14 servos.push_back(&servo_pins[i]);
ikrase 1:1135f0b1566e 15 servo_timers.push_back(t);
ikrase 1:1135f0b1566e 16 positions.push_back(SERVO_DISABLED);
ikrase 1:1135f0b1566e 17 servos[i]->write(0);
ikrase 0:6105cf98b610 18
ikrase 0:6105cf98b610 19 }
ikrase 0:6105cf98b610 20
ikrase 2:f982504e6e84 21 //servos[2]->is_connected();
ikrase 2:f982504e6e84 22 //servo_timers[2]->detach();
ikrase 2:f982504e6e84 23 period_tick.attach_us(this, &Polyservo::servos_reset,PPM_PERIOD);
ikrase 0:6105cf98b610 24
ikrase 2:f982504e6e84 25 }
ikrase 2:f982504e6e84 26
ikrase 2:f982504e6e84 27 void Polyservo::servos_reset(void){
ikrase 2:f982504e6e84 28 for(int i=0; i< numservos; i++) {
ikrase 2:f982504e6e84 29 if (global_enable && positions[i] != SERVO_DISABLED){
ikrase 3:1d16a22386a8 30 servos[i]->write(1);
ikrase 7:f9e1e813fa24 31 ResetWrapper<void(*)(int), servo_set> rwrapper(i);
ikrase 7:f9e1e813fa24 32
ikrase 7:f9e1e813fa24 33 servo_timers[i]->attach_us(&(rwrapper->f), positions[i]);
ikrase 3:1d16a22386a8 34 } else {
ikrase 3:1d16a22386a8 35 servos[i]->write(0);
ikrase 2:f982504e6e84 36 }
ikrase 2:f982504e6e84 37
ikrase 2:f982504e6e84 38 }
ikrase 7:f9e1e813fa24 39 }
ikrase 7:f9e1e813fa24 40 void servo_set(int id) {
ikrase 7:f9e1e813fa24 41
ikrase 0:6105cf98b610 42
ikrase 0:6105cf98b610 43
ikrase 7:f9e1e813fa24 44 }
ikrase 7:f9e1e813fa24 45
ikrase 7:f9e1e813fa24 46
ikrase 7:f9e1e813fa24 47
ikrase 7:f9e1e813fa24 48
ikrase 7:f9e1e813fa24 49