Class Library for reading hobby servos and detecting invalid or disconnected channels
Dependents: MadPulseCntrl Emaxx_Navigation Emaxx_Navigation_Dynamic_HIL Madpulse_Speed_Control_temp ... more
ServoIn Class Library
This class library uses external interrupts with timer functions to read servos pulses on mbed input pins.
ServoIn Library usage example
#include "mbed.h" #include "ServoIn.h" DigitalOut led1(LED1); ServoIn servoIn1(p15); ServoIn servoIn2(p14); Serial pc(USBTX, USBRX); // tx, rx int main() { pc.baud(921600); //Fast baud rate while(1) { led1 = 1; wait(0.05); led1 = 0; wait(0.05); pc.printf("servo pulse: CH1=%5dus CH2=%5dus\r\n", servoIn1.read(), servoIn2.read()); } }
Diff: ServoIn.cpp
- Revision:
- 4:379f9ab5cb4b
- Parent:
- 3:19c8eaf905e9
- Child:
- 5:598ccee73ed3
--- a/ServoIn.cpp Thu May 21 18:40:06 2015 +0000 +++ b/ServoIn.cpp Thu Aug 04 15:46:31 2016 +0000 @@ -24,12 +24,15 @@ #include "mbed.h" #include "ServoIn.h" -ServoIn::ServoIn(PinName pin): _interrupt(pin){ // create the InterruptIn on the pin specified to ServoIn +ServoIn::ServoIn(PinName pin): _interrupt(pin), _pin(pin){ // create the InterruptIn on the pin specified to ServoIn _interrupt.rise(this, &ServoIn::PulseRead); // attach PulseRead function of this ServoIn instance - + _validPulseTimeout.attach(this, &ServoIn::timeoutTest, 0.015); // the member function, and interval (15ms) pulseMeasure.start(); - _pulseFlag = 0; + if(_pin) + _pulseFlag = 1; + else + _pulseFlag = 0; servoPulse = 0; servoPulseMax = 2100; servoPulseMin = 900;