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

Dependencies:   mbed

Committer:
benbitwonder
Date:
Sat Feb 27 20:11:32 2010 +0000
Revision:
0:2f868430865c

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
benbitwonder 0:2f868430865c 1 #include "mbed.h"
benbitwonder 0:2f868430865c 2
benbitwonder 0:2f868430865c 3 PwmOut onb_led1(LED1);
benbitwonder 0:2f868430865c 4 PwmOut onb_led2(LED2);
benbitwonder 0:2f868430865c 5 PwmOut onb_led3(LED3);
benbitwonder 0:2f868430865c 6 PwmOut onb_led4(LED4);
benbitwonder 0:2f868430865c 7
benbitwonder 0:2f868430865c 8 #define led_fade 0.10 //The multiplier for one time step of fade
benbitwonder 0:2f868430865c 9
benbitwonder 0:2f868430865c 10 int main(void) {
benbitwonder 0:2f868430865c 11 //A flag to indicate which direction we should rotate
benbitwonder 0:2f868430865c 12 bool flag = 0;
benbitwonder 0:2f868430865c 13 //the states of the outputs
benbitwonder 0:2f868430865c 14 char outstates = 1;
benbitwonder 0:2f868430865c 15
benbitwonder 0:2f868430865c 16 onb_led1.period_ms(5);
benbitwonder 0:2f868430865c 17 onb_led2.period_ms(5);
benbitwonder 0:2f868430865c 18 onb_led3.period_ms(5);
benbitwonder 0:2f868430865c 19 onb_led4.period_ms(5);
benbitwonder 0:2f868430865c 20
benbitwonder 0:2f868430865c 21 //Infinite loop
benbitwonder 0:2f868430865c 22 while(1) {
benbitwonder 0:2f868430865c 23 wait(0.25);
benbitwonder 0:2f868430865c 24 if (!flag) {
benbitwonder 0:2f868430865c 25 outstates *= 2;
benbitwonder 0:2f868430865c 26 if ((outstates>>3)&&1) flag=1;
benbitwonder 0:2f868430865c 27 } else {
benbitwonder 0:2f868430865c 28 outstates /=2;
benbitwonder 0:2f868430865c 29 if (outstates==1) flag=0;
benbitwonder 0:2f868430865c 30 }
benbitwonder 0:2f868430865c 31
benbitwonder 0:2f868430865c 32 switch(outstates){
benbitwonder 0:2f868430865c 33 case(1):{
benbitwonder 0:2f868430865c 34 onb_led1=1.0f;
benbitwonder 0:2f868430865c 35 onb_led2=led_fade*(onb_led2);
benbitwonder 0:2f868430865c 36 onb_led3=led_fade*(onb_led3);
benbitwonder 0:2f868430865c 37 onb_led4=led_fade*(onb_led4);
benbitwonder 0:2f868430865c 38 break;
benbitwonder 0:2f868430865c 39 }
benbitwonder 0:2f868430865c 40 case(2):{
benbitwonder 0:2f868430865c 41 onb_led1=led_fade*(onb_led1);
benbitwonder 0:2f868430865c 42 onb_led2=1.0f;
benbitwonder 0:2f868430865c 43 onb_led3=led_fade*(onb_led3);
benbitwonder 0:2f868430865c 44 onb_led4=led_fade*(onb_led4);
benbitwonder 0:2f868430865c 45 break;
benbitwonder 0:2f868430865c 46 }
benbitwonder 0:2f868430865c 47 case(4):{
benbitwonder 0:2f868430865c 48 onb_led1=led_fade*(onb_led1);
benbitwonder 0:2f868430865c 49 onb_led2=led_fade*(onb_led2);
benbitwonder 0:2f868430865c 50 onb_led3=1.0f;
benbitwonder 0:2f868430865c 51 onb_led4=led_fade*(onb_led4);
benbitwonder 0:2f868430865c 52 break;
benbitwonder 0:2f868430865c 53 }
benbitwonder 0:2f868430865c 54 case(8):{
benbitwonder 0:2f868430865c 55 onb_led1=led_fade*(onb_led1);
benbitwonder 0:2f868430865c 56 onb_led2=led_fade*(onb_led2);
benbitwonder 0:2f868430865c 57 onb_led3=led_fade*(onb_led3);
benbitwonder 0:2f868430865c 58 onb_led4=1.0f;
benbitwonder 0:2f868430865c 59 break;
benbitwonder 0:2f868430865c 60 }
benbitwonder 0:2f868430865c 61 }
benbitwonder 0:2f868430865c 62 }
benbitwonder 0:2f868430865c 63 }
benbitwonder 0:2f868430865c 64
benbitwonder 0:2f868430865c 65