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.
Dependencies: mbed
main.cpp@0:7af46b533435, 2015-06-28 (annotated)
- Committer:
- vjwramasamy
- Date:
- Sun Jun 28 16:40:20 2015 +0000
- Revision:
- 0:7af46b533435
another
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| vjwramasamy | 0:7af46b533435 | 1 | #include "mbed.h" |
| vjwramasamy | 0:7af46b533435 | 2 | |
| vjwramasamy | 0:7af46b533435 | 3 | Timeout timer; |
| vjwramasamy | 0:7af46b533435 | 4 | DigitalOut my_led(LED1); |
| vjwramasamy | 0:7af46b533435 | 5 | DigitalOut my_pwm(D10); // IO used by pwm_io function |
| vjwramasamy | 0:7af46b533435 | 6 | |
| vjwramasamy | 0:7af46b533435 | 7 | int on_delay = 0; |
| vjwramasamy | 0:7af46b533435 | 8 | int off_delay = 0; |
| vjwramasamy | 0:7af46b533435 | 9 | |
| vjwramasamy | 0:7af46b533435 | 10 | void toggleOff(void); |
| vjwramasamy | 0:7af46b533435 | 11 | |
| vjwramasamy | 0:7af46b533435 | 12 | void toggleOn(void) { |
| vjwramasamy | 0:7af46b533435 | 13 | my_pwm = 1; |
| vjwramasamy | 0:7af46b533435 | 14 | timer.attach_us(toggleOff, on_delay); |
| vjwramasamy | 0:7af46b533435 | 15 | } |
| vjwramasamy | 0:7af46b533435 | 16 | |
| vjwramasamy | 0:7af46b533435 | 17 | void toggleOff(void) { |
| vjwramasamy | 0:7af46b533435 | 18 | my_pwm = 0; |
| vjwramasamy | 0:7af46b533435 | 19 | timer.attach_us(toggleOn, off_delay); |
| vjwramasamy | 0:7af46b533435 | 20 | } |
| vjwramasamy | 0:7af46b533435 | 21 | |
| vjwramasamy | 0:7af46b533435 | 22 | // p_us = signal period in micro_seconds |
| vjwramasamy | 0:7af46b533435 | 23 | // dc = signal duty-cycle (0.0 to 1.0) |
| vjwramasamy | 0:7af46b533435 | 24 | void pwm_io(int p_us, float dc) { |
| vjwramasamy | 0:7af46b533435 | 25 | timer.detach(); |
| vjwramasamy | 0:7af46b533435 | 26 | if ((p_us == 0) || (dc == 0)) { |
| vjwramasamy | 0:7af46b533435 | 27 | my_pwm = 0; |
| vjwramasamy | 0:7af46b533435 | 28 | return; |
| vjwramasamy | 0:7af46b533435 | 29 | } |
| vjwramasamy | 0:7af46b533435 | 30 | if (dc >= 1) { |
| vjwramasamy | 0:7af46b533435 | 31 | my_pwm = 1; |
| vjwramasamy | 0:7af46b533435 | 32 | return; |
| vjwramasamy | 0:7af46b533435 | 33 | } |
| vjwramasamy | 0:7af46b533435 | 34 | on_delay = (int)(p_us * dc); |
| vjwramasamy | 0:7af46b533435 | 35 | off_delay = p_us - on_delay; |
| vjwramasamy | 0:7af46b533435 | 36 | toggleOn(); |
| vjwramasamy | 0:7af46b533435 | 37 | } |
| vjwramasamy | 0:7af46b533435 | 38 | |
| vjwramasamy | 0:7af46b533435 | 39 | int main() { |
| vjwramasamy | 0:7af46b533435 | 40 | |
| vjwramasamy | 0:7af46b533435 | 41 | pwm_io(20000, 0.25); // 20ms - 25% |
| vjwramasamy | 0:7af46b533435 | 42 | |
| vjwramasamy | 0:7af46b533435 | 43 | while(1) { |
| vjwramasamy | 0:7af46b533435 | 44 | my_led = !my_led; |
| vjwramasamy | 0:7af46b533435 | 45 | wait(0.5); |
| vjwramasamy | 0:7af46b533435 | 46 | } |
| vjwramasamy | 0:7af46b533435 | 47 | } |
| vjwramasamy | 0:7af46b533435 | 48 |