![](/media/cache/profiles/cc38c8ffd23cef2e3e5c21d20c1db636.jpg.50x50_q85.png)
all publish
Diff: main.cpp
- Revision:
- 0:d04469a1b180
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Mon May 06 00:20:37 2019 +0000 @@ -0,0 +1,48 @@ +#include "mbed.h" + +Timeout timer; +DigitalOut my_led(LED1); +DigitalOut my_pwm(D10); // IO used by pwm_io function + +int on_delay = 0; +int off_delay = 0; + +void toggleOff(void); + +void toggleOn(void) { + my_pwm = 1; + timer.attach_us(toggleOff, on_delay); +} + +void toggleOff(void) { + my_pwm = 0; + timer.attach_us(toggleOn, off_delay); +} + +// p_us = signal period in micro_seconds +// dc = signal duty-cycle (0.0 to 1.0) +void pwm_io(int p_us, float dc) { + timer.detach(); + if ((p_us == 0) || (dc == 0)) { + my_pwm = 0; + return; + } + if (dc >= 1) { + my_pwm = 1; + return; + } + on_delay = (int)(p_us * dc); + off_delay = p_us - on_delay; + toggleOn(); +} + +int main() { + + pwm_io(20000, 0.25); // 20ms - 25% + + while(1) { + my_led = !my_led; + wait(0.5); + } +} + \ No newline at end of file