Madpulse ROS Code

Dependencies:   mbed ServoOut BNO055_fusion ros_lib_kinetic MadPulseIMU ServoIn

RC/RC_Channel.h

Committer:
jdawkins
Date:
2019-10-10
Revision:
8:c07db2a00c8e
Parent:
5:c24490c61022

File content as of revision 8:c07db2a00c8e:

#ifndef RC_CHANNEL_H
#define RC_CHANNEL_H

#include "mbed.h"

class RC_Channel
{
    public:
        RC_Channel(PinName mypin, int index); // NO p19/p20!!!!, they don't support InterruptIn
        int read(); // read the last measured data
       
    private:
        int index; // to know which channel of the RC an instance has (only for calibrations savings)
        int time; // last measurement data
        float scale; // calibration values
        float offset;
        
        InterruptIn myinterrupt; // interrupt on the pin to react when signal falls or rises
        void rise(); // start the time measurement when signal rises
        void fall(); // stop the time mesurement and save the value when signal falls
        Timer timer; // timer to measure the up time of the signal and if the signal timed out
        
        Ticker timeoutchecker; // Ticker to see if signal broke down
        void timeoutcheck(); // to check for timeout, checked every second
        
        // Calibration value saving
        void saveCalibrationValue(float * value, char * fileextension);
        void loadCalibrationValue(float * value, char * fileextension);
};

#endif