
Sample code for testing PwmOut setting range
Embed:
(wiki syntax)
Show/hide line numbers
main.cpp
00001 #include "mbed.h" 00002 00003 PwmOut led( LED1 ); 00004 PwmOut out( p21 ); 00005 Serial pc( USBTX, USBRX ); 00006 00007 #define PWM_CHANGE_STEPS 0.05 00008 #define PERIOD_CHANGE_FACTOR 2.0 00009 00010 int main() 00011 { 00012 float period = 0.001; 00013 float pwm = 0.5; 00014 00015 printf( "\r\n\r\nPwmOut period test\r\n" ); 00016 printf( " use arrow key to change parameters : \r\n left/right for period, up/down for PWM ratio\r\n" ); 00017 00018 out.period( period ); 00019 out = pwm; 00020 led = pwm; 00021 00022 printf( "period = %12g sec, pwm = %3.0f\r", period, pwm * 100.0 ); 00023 fflush( stdout ); 00024 00025 while(1) { 00026 if ( pc.readable() ) { 00027 switch ( pc.getc() ) { 00028 case 0x1B : 00029 if ( 0x5B == pc.getc() ) 00030 // arrow key pressed 00031 switch ( pc.getc() ) { 00032 case 0x44 : // left arrow 00033 period /= PERIOD_CHANGE_FACTOR; 00034 break; 00035 case 0x43 : // right arrow 00036 period *= PERIOD_CHANGE_FACTOR; 00037 break; 00038 case 0x41 : // up arrow 00039 pwm += (pwm >= (1 - PWM_CHANGE_STEPS)) ? 0.0 : PWM_CHANGE_STEPS; 00040 break; 00041 case 0x42 : // down arrow 00042 pwm -= (pwm <= PWM_CHANGE_STEPS) ? 0.0 : PWM_CHANGE_STEPS; 00043 break; 00044 default : 00045 break; 00046 } 00047 } 00048 out.period( period ); 00049 out = pwm; 00050 led = pwm; 00051 00052 printf( "period = %12g sec, pwm = %3.0f\r", period, pwm * 100.0 ); 00053 fflush( stdout ); 00054 } 00055 } 00056 } 00057
Generated on Fri Jul 15 2022 02:26:04 by
