Ian Krase / PolyServo

Dependents:   Quadrapod

Committer:
ikrase
Date:
Sat Jul 04 07:11:33 2015 +0000
Revision:
9:a40eac6bdfae
Parent:
8:c09ae4fef420
Child:
10:7d3d0d016758
Compiles now, still need to check.

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 8:c09ae4fef420 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 8:c09ae4fef420 9 Polyservo::Polyservo(DigitalOut servo_pins[]) {
ikrase 8:c09ae4fef420 10 servos.reserve(numservos); servo_timers.reserve(numservos); //positions.reserve(numservos);
ikrase 0:6105cf98b610 11 //numservos = num_pins;
ikrase 9:a40eac6bdfae 12 servo_sets[0] = &Polyservo::servo0_set;
ikrase 9:a40eac6bdfae 13 servo_sets[1] = &Polyservo::servo1_set;
ikrase 9:a40eac6bdfae 14 servo_sets[2] = &Polyservo::servo2_set;
ikrase 9:a40eac6bdfae 15 servo_sets[3] = &Polyservo::servo3_set;
ikrase 9:a40eac6bdfae 16 servo_sets[4] = &Polyservo::servo4_set;
ikrase 9:a40eac6bdfae 17 servo_sets[5] = &Polyservo::servo5_set;
ikrase 9:a40eac6bdfae 18 servo_sets[6] = &Polyservo::servo6_set;
ikrase 9:a40eac6bdfae 19 servo_sets[7] = &Polyservo::servo7_set;
ikrase 9:a40eac6bdfae 20 servo_sets[8] = &Polyservo::servo8_set;
ikrase 9:a40eac6bdfae 21 servo_sets[9] = &Polyservo::servo9_set;
ikrase 9:a40eac6bdfae 22 servo_sets[10] = &Polyservo::servo10_set;
ikrase 9:a40eac6bdfae 23 servo_sets[11] = &Polyservo::servo11_set;
ikrase 9:a40eac6bdfae 24
ikrase 9:a40eac6bdfae 25
ikrase 0:6105cf98b610 26 for(int i = 0; i < numservos; i++){
ikrase 0:6105cf98b610 27 Timeout* t = new Timeout();
ikrase 0:6105cf98b610 28 servos.push_back(&servo_pins[i]);
ikrase 1:1135f0b1566e 29 servo_timers.push_back(t);
ikrase 8:c09ae4fef420 30 //sssstions.push_back(SERVO_DISABLED);
ikrase 8:c09ae4fef420 31 positions[i] = SERVO_DISABLED;
ikrase 1:1135f0b1566e 32 servos[i]->write(0);
ikrase 0:6105cf98b610 33
ikrase 0:6105cf98b610 34 }
ikrase 0:6105cf98b610 35
ikrase 2:f982504e6e84 36 //servos[2]->is_connected();
ikrase 2:f982504e6e84 37 //servo_timers[2]->detach();
ikrase 2:f982504e6e84 38 period_tick.attach_us(this, &Polyservo::servos_reset,PPM_PERIOD);
ikrase 0:6105cf98b610 39
ikrase 2:f982504e6e84 40 }
ikrase 2:f982504e6e84 41
ikrase 2:f982504e6e84 42 void Polyservo::servos_reset(void){
ikrase 2:f982504e6e84 43 for(int i=0; i< numservos; i++) {
ikrase 2:f982504e6e84 44 if (global_enable && positions[i] != SERVO_DISABLED){
ikrase 3:1d16a22386a8 45 servos[i]->write(1);
ikrase 8:c09ae4fef420 46 //ResetWrapper<void(*)(int), servo_set> rwrapper(i);
ikrase 8:c09ae4fef420 47 servo_timers[i]->attach_us(this, &Polyservo::servo1_set, positions[i]);
ikrase 7:f9e1e813fa24 48
ikrase 3:1d16a22386a8 49 } else {
ikrase 3:1d16a22386a8 50 servos[i]->write(0);
ikrase 2:f982504e6e84 51 }
ikrase 2:f982504e6e84 52
ikrase 2:f982504e6e84 53 }
ikrase 7:f9e1e813fa24 54 }
ikrase 8:c09ae4fef420 55 void Polyservo::servo0_set(void) { servos[0]->write(0); }
ikrase 8:c09ae4fef420 56 void Polyservo::servo1_set(void) { servos[1]->write(0); }
ikrase 8:c09ae4fef420 57 void Polyservo::servo2_set(void) { servos[2]->write(0); }
ikrase 8:c09ae4fef420 58 void Polyservo::servo3_set(void) { servos[3]->write(0); }
ikrase 8:c09ae4fef420 59 void Polyservo::servo4_set(void) { servos[4]->write(0); }
ikrase 8:c09ae4fef420 60 void Polyservo::servo5_set(void) { servos[5]->write(0); }
ikrase 8:c09ae4fef420 61 void Polyservo::servo6_set(void) { servos[6]->write(0); }
ikrase 8:c09ae4fef420 62 void Polyservo::servo7_set(void) { servos[7]->write(0); }
ikrase 8:c09ae4fef420 63 void Polyservo::servo8_set(void) { servos[8]->write(0); }
ikrase 8:c09ae4fef420 64 void Polyservo::servo9_set(void) { servos[9]->write(0); }
ikrase 8:c09ae4fef420 65 void Polyservo::servo10_set(void) { servos[10]->write(0); }
ikrase 8:c09ae4fef420 66 void Polyservo::servo11_set(void) { servos[11]->write(0); }
ikrase 8:c09ae4fef420 67 //void Polyservo::servo12_set(void) { servos[0]->write(0); }
ikrase 8:c09ae4fef420 68
ikrase 0:6105cf98b610 69
ikrase 0:6105cf98b610 70
ikrase 7:f9e1e813fa24 71
ikrase 7:f9e1e813fa24 72
ikrase 7:f9e1e813fa24 73
ikrase 7:f9e1e813fa24 74
ikrase 8:c09ae4fef420 75
ikrase 8:c09ae4fef420 76
ikrase 8:c09ae4fef420 77