A second version of the Larsen scanner, this time using the mbed's PwmOut library.

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 onb_led1(LED1);
00004 PwmOut onb_led2(LED2);
00005 PwmOut onb_led3(LED3);
00006 PwmOut onb_led4(LED4);
00007 
00008 #define led_fade 0.10 //The multiplier for one time step of fade
00009 
00010 int main(void) {
00011     //A flag to indicate which direction we should rotate
00012     bool flag = 0;
00013     //the states of the outputs
00014     char outstates = 1;
00015     
00016     onb_led1.period_ms(5);
00017     onb_led2.period_ms(5);
00018     onb_led3.period_ms(5);
00019     onb_led4.period_ms(5);
00020     
00021     //Infinite loop
00022     while(1) {
00023         wait(0.25);
00024         if (!flag) {
00025             outstates *= 2;
00026             if ((outstates>>3)&&1) flag=1;
00027         } else {
00028             outstates /=2;
00029             if (outstates==1) flag=0;
00030         }
00031         
00032         switch(outstates){
00033             case(1):{
00034                 onb_led1=1.0f;
00035                 onb_led2=led_fade*(onb_led2);
00036                 onb_led3=led_fade*(onb_led3);
00037                 onb_led4=led_fade*(onb_led4);
00038                 break;
00039             }  
00040             case(2):{
00041                 onb_led1=led_fade*(onb_led1);
00042                 onb_led2=1.0f;
00043                 onb_led3=led_fade*(onb_led3);
00044                 onb_led4=led_fade*(onb_led4);
00045                 break;
00046             }
00047             case(4):{
00048                 onb_led1=led_fade*(onb_led1);
00049                 onb_led2=led_fade*(onb_led2);
00050                 onb_led3=1.0f;
00051                 onb_led4=led_fade*(onb_led4);
00052                 break;
00053             }
00054             case(8):{
00055                 onb_led1=led_fade*(onb_led1);
00056                 onb_led2=led_fade*(onb_led2);
00057                 onb_led3=led_fade*(onb_led3);
00058                 onb_led4=1.0f;
00059                 break;
00060             }
00061         }
00062     }
00063 }
00064         
00065