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

Dependencies:   mbed

Revision:
0:2f868430865c
diff -r 000000000000 -r 2f868430865c main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Sat Feb 27 20:11:32 2010 +0000
@@ -0,0 +1,65 @@
+#include "mbed.h"
+
+PwmOut onb_led1(LED1);
+PwmOut onb_led2(LED2);
+PwmOut onb_led3(LED3);
+PwmOut onb_led4(LED4);
+
+#define led_fade 0.10 //The multiplier for one time step of fade
+
+int main(void) {
+    //A flag to indicate which direction we should rotate
+    bool flag = 0;
+    //the states of the outputs
+    char outstates = 1;
+    
+    onb_led1.period_ms(5);
+    onb_led2.period_ms(5);
+    onb_led3.period_ms(5);
+    onb_led4.period_ms(5);
+    
+    //Infinite loop
+    while(1) {
+        wait(0.25);
+        if (!flag) {
+            outstates *= 2;
+            if ((outstates>>3)&&1) flag=1;
+        } else {
+            outstates /=2;
+            if (outstates==1) flag=0;
+        }
+        
+        switch(outstates){
+            case(1):{
+                onb_led1=1.0f;
+                onb_led2=led_fade*(onb_led2);
+        	    onb_led3=led_fade*(onb_led3);
+        	    onb_led4=led_fade*(onb_led4);
+                break;
+            }  
+        	case(2):{
+	            onb_led1=led_fade*(onb_led1);
+        	    onb_led2=1.0f;
+        	    onb_led3=led_fade*(onb_led3);
+        	    onb_led4=led_fade*(onb_led4);
+        	    break;
+        	}
+        	case(4):{
+        	    onb_led1=led_fade*(onb_led1);
+        	    onb_led2=led_fade*(onb_led2);
+        	    onb_led3=1.0f;
+        	    onb_led4=led_fade*(onb_led4);
+        	    break;
+        	}
+        	case(8):{
+        	    onb_led1=led_fade*(onb_led1);
+        	    onb_led2=led_fade*(onb_led2);
+        	    onb_led3=led_fade*(onb_led3);
+        	    onb_led4=1.0f;
+        	    break;
+        	}
+        }
+    }
+}
+        
+    
\ No newline at end of file