
Sample code for testing PwmOut setting range
Information
Program sample for https://twitter.com/nxpfan/status/559538527306649601
main.cpp
- Committer:
- nxpfan
- Date:
- 2015-01-26
- Revision:
- 0:2033fe73a33d
File content as of revision 0:2033fe73a33d:
#include "mbed.h" PwmOut led( LED1 ); PwmOut out( p21 ); Serial pc( USBTX, USBRX ); #define PWM_CHANGE_STEPS 0.05 #define PERIOD_CHANGE_FACTOR 2.0 int main() { float period = 0.001; float pwm = 0.5; printf( "\r\n\r\nPwmOut period test\r\n" ); printf( " use arrow key to change parameters : \r\n left/right for period, up/down for PWM ratio\r\n" ); out.period( period ); out = pwm; led = pwm; printf( "period = %12g sec, pwm = %3.0f\r", period, pwm * 100.0 ); fflush( stdout ); while(1) { if ( pc.readable() ) { switch ( pc.getc() ) { case 0x1B : if ( 0x5B == pc.getc() ) // arrow key pressed switch ( pc.getc() ) { case 0x44 : // left arrow period /= PERIOD_CHANGE_FACTOR; break; case 0x43 : // right arrow period *= PERIOD_CHANGE_FACTOR; break; case 0x41 : // up arrow pwm += (pwm >= (1 - PWM_CHANGE_STEPS)) ? 0.0 : PWM_CHANGE_STEPS; break; case 0x42 : // down arrow pwm -= (pwm <= PWM_CHANGE_STEPS) ? 0.0 : PWM_CHANGE_STEPS; break; default : break; } } out.period( period ); out = pwm; led = pwm; printf( "period = %12g sec, pwm = %3.0f\r", period, pwm * 100.0 ); fflush( stdout ); } } }