Sample code for testing PwmOut setting range

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

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