Martin Deng / Mbed 2 deprecated mbed_shapedriver

Dependencies:   mbed

Revision:
7:2db895370298
Parent:
6:baece3338bfe
Child:
9:2f23704d4a47
--- a/main.cpp	Fri May 01 06:46:08 2015 +0000
+++ b/main.cpp	Fri May 01 16:17:52 2015 +0000
@@ -172,14 +172,28 @@
     return (int)rint(h);
 }
 
+bool init = false;
+void switch_mode(){
+    display_mode ++;
+    if(display_mode == 4)
+        display_mode = 1;
+        
+    init = true;
+}
+
 void animate(){
     
     if(display_mode == 1)
     {
-        set_hfunc(&wave_height);
+        if(init){
+            freq_disp = 0;
+            freq = 4;
+            init = false;   
+            set_hfunc(&wave_height); 
+        }
         
         for(int i = 3; i < WIDTH; i++){
-            draw_circle(i, 4);    
+            draw_circle(0, 0, i, 4, false);    
         } 
         
         freq_disp += 0.1;
@@ -208,56 +222,28 @@
     } 
     else if(display_mode == 3)
     {
-        int g = 4;
-        static bool init = false;
-        static int towers[4][4];
-        
-        if(!init){
-            set_hfunc(NULL);  
-            srand(time(NULL));
+        static float radius = 1;
         
-            for(int i = 0; i < g; i++){
-                for(int j = 0; j < g; j++){
-                    towers[i][j] = rand() % HEIGHT;    
-                }  
-            }   
-            init = true;
-        }
-
-        int f = WIDTH / g;
-
-        for(int i = -g; i < g; i++){
-            for(int j = -g; j < g; j++){
-                int h = towers[i + g][j + g];
-                
-                draw_line(i*f, j*f, 0, i*f, j*f + f, 0);  
-                draw_line(i*f, j*f + f, 0, i*f + f, j*f + f, 0);  
-                draw_line(i*f + f, j*f + f, 0, i*f + f, j*f, 0); 
-                draw_line(i*f + f, j*f, 0, i*f, j*f, 0); 
-        
-                draw_line(i*f, j*f, 0, i*f, j*f, h);  
-                draw_line(i*f + f, j*f, 0, i*f + f, j*f, h);  
-                draw_line(i*f, j*f + f, 0, i*f, j*f + f, h);  
-                draw_line(i*f + f, j*f + f, 0, i*f + f, j*f + f, h);  
-                
-                draw_line(i*f, j*f, h, i*f, j*f + f, h);  
-                draw_line(i*f, j*f + f, h, i*f + f, j*f + f, h);  
-                draw_line(i*f + f, j*f + f, h, i*f + f, j*f, h); 
-                draw_line(i*f + f, j*f, h, i*f, j*f, h); 
-            }  
-        }
+        radius ++;
+        if(radius == 16)
+            radius = 0;
+            
+        draw_circle(0, 0, radius, 4, true);
           
     } else if(display_mode == 4){
-        freq = 1.5;
-        set_hfunc(&wave_height);
+        if(init){
+            freq_disp = 0.0;
+            freq = 2.0;
+            set_hfunc(&wave_height);
+            init = false;    
+        }
         
-        
-        freq_disp += 0.05;
+        freq_disp += 0.1;
         if(freq_disp >= 1.0){
             freq_disp = 0.0;    
         }
         
-        for(int i = -12; i < 13; i += 1){
+        for(int i = -16; i < 16; i += 2){
             draw_line(i, 16, 0, i, -16, 0);
             //draw_line(16, i, 0, -16, i, 0);
         }
@@ -271,13 +257,16 @@
     animate_i = true;
 }
 
+Ticker switch_ticker;
+
 int main (void)
 {
     display_mode = 4;
         
     InterruptIn hall_pin(p25);
     hall_pin.fall(&rotate_sense);
-    animate_ticker.attach(&animate_int, 3.0);
+    animate_ticker.attach(&animate_int, 1.0);
+    switch_ticker.attach(&switch_mode, 15.0);
     
     uint8_t channel = 2;