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@7:f9e1e813fa24, 2015-07-03 (annotated)
- 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?
| 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 | 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 |