Sample code for testing PwmOut setting range

Dependencies:   mbed

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?

UserRevisionLine numberNew 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