Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
PolyServo.cpp@9:a40eac6bdfae, 2015-07-04 (annotated)
- 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?
| User | Revision | Line number | New 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 |