The PWM output by software. Can be output to any pin. It can be used to replace the Pwmout.

Dependents:   RC_Servo

Fork of SoftPWM by syouichi imamori

SoftPWM.h

Committer:
haarkon
Date:
2018-06-05
Revision:
1:9aba3dc9cd97
Parent:
0:7918ce37626c

File content as of revision 1:9aba3dc9cd97:

#ifndef SoftPWM_H
#define SoftPWM_H
#define POSITIVE true
#define NEGATIVE false

#include "mbed.h"

class SoftPWM  
{
private:
    Timeout _timeout;
    Ticker _ticker;
    void end();
    DigitalOut pulse;
    bool positive;
    void TickerInterrapt();
    double width;
    double interval;
public:
    SoftPWM(PinName,bool mode=true); 
//    void attach_us(int);
    void start();
    void write(double);
    double read();
    void pulsewidth(double);
    void pulsewidth_ms(int);
    void pulsewidth_us(int);
    void period(double);
    void period_ms(int);
    void period_us(int);
    void stop();
    operator double()  { 
        if ( width <= 0.0 ) return 0.0;
        if ( width > 1.0 )  return 1.0;
        return width / interval;
    }
    SoftPWM& operator=(double duty)  {
        width = interval * duty;
        if ( duty <= 0.0 ) width =  0.0f;
        if ( duty > 1.0 )  width =  interval;
        return *this;
    }
                
};
#endif