
Sample code for testing PwmOut setting range
Information
Program sample for https://twitter.com/nxpfan/status/559538527306649601
main.cpp@0:2033fe73a33d, 2015-01-26 (annotated)
- Committer:
- nxpfan
- Date:
- Mon Jan 26 02:27:03 2015 +0000
- Revision:
- 0:2033fe73a33d
sample code for testing PwmOut setting range
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
nxpfan | 0:2033fe73a33d | 1 | #include "mbed.h" |
nxpfan | 0:2033fe73a33d | 2 | |
nxpfan | 0:2033fe73a33d | 3 | PwmOut led( LED1 ); |
nxpfan | 0:2033fe73a33d | 4 | PwmOut out( p21 ); |
nxpfan | 0:2033fe73a33d | 5 | Serial pc( USBTX, USBRX ); |
nxpfan | 0:2033fe73a33d | 6 | |
nxpfan | 0:2033fe73a33d | 7 | #define PWM_CHANGE_STEPS 0.05 |
nxpfan | 0:2033fe73a33d | 8 | #define PERIOD_CHANGE_FACTOR 2.0 |
nxpfan | 0:2033fe73a33d | 9 | |
nxpfan | 0:2033fe73a33d | 10 | int main() |
nxpfan | 0:2033fe73a33d | 11 | { |
nxpfan | 0:2033fe73a33d | 12 | float period = 0.001; |
nxpfan | 0:2033fe73a33d | 13 | float pwm = 0.5; |
nxpfan | 0:2033fe73a33d | 14 | |
nxpfan | 0:2033fe73a33d | 15 | printf( "\r\n\r\nPwmOut period test\r\n" ); |
nxpfan | 0:2033fe73a33d | 16 | printf( " use arrow key to change parameters : \r\n left/right for period, up/down for PWM ratio\r\n" ); |
nxpfan | 0:2033fe73a33d | 17 | |
nxpfan | 0:2033fe73a33d | 18 | out.period( period ); |
nxpfan | 0:2033fe73a33d | 19 | out = pwm; |
nxpfan | 0:2033fe73a33d | 20 | led = pwm; |
nxpfan | 0:2033fe73a33d | 21 | |
nxpfan | 0:2033fe73a33d | 22 | printf( "period = %12g sec, pwm = %3.0f\r", period, pwm * 100.0 ); |
nxpfan | 0:2033fe73a33d | 23 | fflush( stdout ); |
nxpfan | 0:2033fe73a33d | 24 | |
nxpfan | 0:2033fe73a33d | 25 | while(1) { |
nxpfan | 0:2033fe73a33d | 26 | if ( pc.readable() ) { |
nxpfan | 0:2033fe73a33d | 27 | switch ( pc.getc() ) { |
nxpfan | 0:2033fe73a33d | 28 | case 0x1B : |
nxpfan | 0:2033fe73a33d | 29 | if ( 0x5B == pc.getc() ) |
nxpfan | 0:2033fe73a33d | 30 | // arrow key pressed |
nxpfan | 0:2033fe73a33d | 31 | switch ( pc.getc() ) { |
nxpfan | 0:2033fe73a33d | 32 | case 0x44 : // left arrow |
nxpfan | 0:2033fe73a33d | 33 | period /= PERIOD_CHANGE_FACTOR; |
nxpfan | 0:2033fe73a33d | 34 | break; |
nxpfan | 0:2033fe73a33d | 35 | case 0x43 : // right arrow |
nxpfan | 0:2033fe73a33d | 36 | period *= PERIOD_CHANGE_FACTOR; |
nxpfan | 0:2033fe73a33d | 37 | break; |
nxpfan | 0:2033fe73a33d | 38 | case 0x41 : // up arrow |
nxpfan | 0:2033fe73a33d | 39 | pwm += (pwm >= (1 - PWM_CHANGE_STEPS)) ? 0.0 : PWM_CHANGE_STEPS; |
nxpfan | 0:2033fe73a33d | 40 | break; |
nxpfan | 0:2033fe73a33d | 41 | case 0x42 : // down arrow |
nxpfan | 0:2033fe73a33d | 42 | pwm -= (pwm <= PWM_CHANGE_STEPS) ? 0.0 : PWM_CHANGE_STEPS; |
nxpfan | 0:2033fe73a33d | 43 | break; |
nxpfan | 0:2033fe73a33d | 44 | default : |
nxpfan | 0:2033fe73a33d | 45 | break; |
nxpfan | 0:2033fe73a33d | 46 | } |
nxpfan | 0:2033fe73a33d | 47 | } |
nxpfan | 0:2033fe73a33d | 48 | out.period( period ); |
nxpfan | 0:2033fe73a33d | 49 | out = pwm; |
nxpfan | 0:2033fe73a33d | 50 | led = pwm; |
nxpfan | 0:2033fe73a33d | 51 | |
nxpfan | 0:2033fe73a33d | 52 | printf( "period = %12g sec, pwm = %3.0f\r", period, pwm * 100.0 ); |
nxpfan | 0:2033fe73a33d | 53 | fflush( stdout ); |
nxpfan | 0:2033fe73a33d | 54 | } |
nxpfan | 0:2033fe73a33d | 55 | } |
nxpfan | 0:2033fe73a33d | 56 | } |
nxpfan | 0:2033fe73a33d | 57 |