Practical Robotics Modular Robot Library

Dependents:   ModularRobot

Revision:
4:c2e933d53bea
Parent:
3:8762f6b2ea8d
Child:
5:6da8daaeb9f7
--- a/led.cpp	Mon Nov 28 22:41:14 2016 +0000
+++ b/led.cpp	Mon Jan 02 15:17:22 2017 +0000
@@ -8,15 +8,156 @@
 
 char red_led_states [8];
 char green_led_states [8];
+Ticker led_ticker;
+int animation_on = 0;
+int animation_mode = 0;
+int animation_state = 0;
+int animation_substate = 0;
+char increment = 1;
+
+void Led::restore_states ()
+{
+    char data[17];
+    data[0]=130; //2 + 128 (AutoInc for brightness)
+    for(int i=0; i<8; i++) {
+        data[(i+i)+1] = red_led_states[i];
+        data[(i+i)+2] = green_led_states[i];
+    }
+    if(animation_on == 1) stop_animation();
+    else {
+        if(i2c_lock==0) {
+            i2c_lock = 1;
+            primary_i2c.write(LED_ADDRESS,data,17);
+        }
+        i2c_lock = 0;
+    }
+}
+
+void Led::set_all (char red_brightness, char green_brightness)
+{
+    char data[17];
+    data[0]=130;  //2 + 128 (AutoInc for brightness)
+    for(int i=0; i<8; i++) {
+        red_led_states[i] = red_brightness;
+        green_led_states[i] = green_brightness;
+        data[(i+i)+1] = red_brightness;
+        data[(i+i)+2] = green_brightness;
+    }
+    if(animation_on == 1) stop_animation();
+    else {
+        if(i2c_lock==0) {
+            i2c_lock = 1;
+            primary_i2c.write(LED_ADDRESS,data,17);
+        }
+        i2c_lock = 0;
+    }
+}
+
+void Led::set_leds (char * red_brightness, char * green_brightness)
+{
+    char data[17];
+    data[0]=130;  //2 + 128 (AutoInc for brightness)
+    for(int i=0; i<8; i++) {
+        red_led_states[i] = red_brightness[i];
+        green_led_states[i] = green_brightness[i];
+        data[(i+i)+1] = red_brightness[i];
+        data[(i+i)+2] = green_brightness[i];
+    }
+    if(animation_on == 1) stop_animation();
+    else {
+        if(i2c_lock==0) {
+            i2c_lock = 1;
+            primary_i2c.write(LED_ADDRESS,data,17);
+        }
+        i2c_lock = 0;
+    }
+}
+
+
+void Led::set_leds (char red1, char red2, char red3, char red4, char red5, char red6, char red7, char red8, char grn1, char grn2, char grn3, char grn4, char grn5, char grn6, char grn7, char grn8)
+{
+    char data[17];
+    data[0]=130;  //2 + 128 (AutoInc for brightness)
+    red_led_states[0] = red1;
+    red_led_states[1] = red2;
+    red_led_states[2] = red3;
+    red_led_states[3] = red4;
+    red_led_states[4] = red5;
+    red_led_states[5] = red6;
+    red_led_states[6] = red7;
+    red_led_states[7] = red8;
+    green_led_states[0] = grn1;
+    green_led_states[1] = grn2;
+    green_led_states[2] = grn3;
+    green_led_states[3] = grn4;
+    green_led_states[4] = grn5;
+    green_led_states[5] = grn6;
+    green_led_states[6] = grn7;
+    green_led_states[7] = grn8;
+    for(int i=0; i<8; i++) {
+        data[(i+i)+1] = red_led_states[i];
+        data[(i+i)+2] = green_led_states[i];
+    }
+    if(animation_on == 1) stop_animation();
+    else {
+        if(i2c_lock==0) {
+            i2c_lock = 1;
+            primary_i2c.write(LED_ADDRESS,data,17);
+        }
+        i2c_lock = 0;
+    }
+}
+
+void Led::_set_leds (char red1, char red2, char red3, char red4, char red5, char red6, char red7, char red8, char grn1, char grn2, char grn3, char grn4, char grn5, char grn6, char grn7, char grn8)
+{
+    char data[17];
+    data[0]=130;  //2 + 128 (AutoInc for brightness)
+    data[1] = red1;
+    data[3] = red2;
+    data[5] = red3;
+    data[7] = red4;
+    data[9] = red5;
+    data[11] = red6;
+    data[13] = red7;
+    data[15] = red8;
+    data[2] = grn1;
+    data[4] = grn2;
+    data[6] = grn3;
+    data[8] = grn4;
+    data[10] = grn5;
+    data[12] = grn6;
+    data[14] = grn7;
+    data[16] = grn8;
+    if(i2c_lock==0) {
+        i2c_lock = 1;
+        primary_i2c.write(LED_ADDRESS,data,17);
+    }
+    i2c_lock = 0;
+
+}
 
 void Led::all_off()
 {
-    for(int i=0;i<8;i++){
-        set_green_led(i,0);
-        set_red_led(i,0);
-    }   
+    char data[17];
+    data[0]=130;  //2 + 128 (AutoInc for brightness)
+    for(int i=0; i<8; i++) {
+        red_led_states[i] = 0;
+        green_led_states[i] = 0;
+        data[(i+i)+1] = 0;
+        data[(i+i)+2] = 0;
+    }
+    if(animation_on == 1) stop_animation();
+    else {
+        if(i2c_lock==0) {
+            i2c_lock = 1;
+            primary_i2c.write(LED_ADDRESS,data,17);
+        }
+        i2c_lock = 0;
+    }
 }
 
+
+
 void Led::set_green_led (char led, char brightness)
 {
     if(led < 8) {
@@ -24,25 +165,106 @@
         char data[2];
         data[0] = 3 + led + led;
         data[1] = brightness;
-        if(i2c_lock==0){
-        i2c_lock = 1;
-        primary_i2c.write(LED_ADDRESS,data,2);
-        }i2c_lock = 0;
+        if(animation_on == 1) stop_animation();
+        else {
+            if(i2c_lock==0) {
+                i2c_lock = 1;
+                primary_i2c.write(LED_ADDRESS,data,2);
+            }
+            i2c_lock = 0;
+        }
     }
 }
 
 void Led::set_red_led (char led, char brightness)
 {
-    
     if(led < 8) {
         red_led_states [led] = brightness;
         char data[2];
         data[0] = 2 + led + led;
         data[1] = brightness;
-        if(i2c_lock==0){
+        if(animation_on == 1) stop_animation();
+        else {
+            if(i2c_lock==0) {
+                i2c_lock = 1;
+                primary_i2c.write(LED_ADDRESS,data,2);
+            }
+            i2c_lock = 0;
+        }
+    }
+}
+
+
+void Led::_set_all (char red_brightness, char green_brightness)
+{
+    char data[17];
+    data[0]=130;  //2 + 128 (AutoInc for brightness)
+    for(int i=0; i<8; i++) {
+        data[(i+i)+1] = red_brightness;
+        data[(i+i)+2] = green_brightness;
+    }
+    if(i2c_lock==0) {
         i2c_lock = 1;
-        primary_i2c.write(LED_ADDRESS,data,2);  
-        }i2c_lock = 0;
+        primary_i2c.write(LED_ADDRESS,data,17);
+    }
+    i2c_lock = 0;
+}
+
+void Led::_set_green_led (char led, char brightness)
+{
+    if(led < 8) {
+        char data[2];
+        data[0] = 3 + led + led;
+        data[1] = brightness;
+        if(i2c_lock==0) {
+            i2c_lock = 1;
+            primary_i2c.write(LED_ADDRESS,data,2);
+        }
+        i2c_lock = 0;
+    }
+}
+
+void Led::_set_red_led (char led, char brightness)
+{
+
+    if(led < 8) {
+        char data[2];
+        data[0] = 2 + led + led;
+        data[1] = brightness;
+        if(i2c_lock==0) {
+            i2c_lock = 1;
+            primary_i2c.write(LED_ADDRESS,data,2);
+        }
+        i2c_lock = 0;
+    }
+}
+
+void Led::_set_leds (char * red_brightness, char * green_brightness)
+{
+    char data[17];
+    data[0]=130;  //2 + 128 (AutoInc for brightness)
+    for(int i=0; i<8; i++) {
+        data[(i+i)+1] = red_brightness[i];
+        data[(i+i)+2] = green_brightness[i];
+    }
+    if(i2c_lock==0) {
+        i2c_lock = 1;
+        primary_i2c.write(LED_ADDRESS,data,17);
+    }
+    i2c_lock = 0;
+}
+
+void Led::set_green_led_stored_state (char led, char brightness)
+{
+    if(led < 8) {
+        green_led_states [led] = brightness;
+    }
+}
+
+void Led::set_red_led_stored_state (char led, char brightness)
+{
+    if(led < 8) {
+        red_led_states [led] = brightness;
     }
 }
 
@@ -83,38 +305,229 @@
     return okay;
 }
 
-int led_ticker_sub_state = 0;
-char led_ticker_state = 0;
-char increment = 1;
-Ticker led_ticker;
+
+
+//Animations
+
 
-void Led::start_test()
+void Led::stop_animation()
 {
-    led_ticker.attach(this,&Led::test_ticker_routine,0.02);
+    if(animation_on == 1) {
+        animation_on = 0;
+        led_ticker.detach();
+        restore_states();
+    }
 }
 
-void Led::stop_test()
+void Led::start_animation(char mode, char speed)
 {
-    led_ticker.detach();   
+    //Speed is ranged so 0 is fastest
+    int us_delay = 4000 + (speed * 1000);
+    animation_on = 1;
+    animation_mode = mode;
+    animation_state = 0;
+    animation_substate = 0;
+    increment = 1;
+    //Turn off all LEDs
+    _set_all(0,0);
+    led_ticker.attach_us(this,&Led::animation_cycle,us_delay);
 }
 
-void Led::test_ticker_routine()
+void Led::animation_cycle()
 {
-    led_ticker_sub_state += increment;
-    increment += 1;
-    if(led_ticker_sub_state > 250) {
-        led_ticker_sub_state = 0;
-             led_ticker_state ++;
-        increment = 1;
-        if (led_ticker_state == 24) led_ticker_state = 0;
+    char red_brightness;
+    char green_brightness;
+    char working_led;
+
+    switch(animation_mode) {
+        case 0:
+            // Flood-fade (boot-up animation)
+            animation_substate += increment;
+            increment += 1;
+            if(animation_substate > 250) {
+                animation_substate = 0;
+                animation_state ++;
+                increment = 1;
+                if (animation_state == 24) animation_state = 0;
+            }
+            working_led = animation_state % 8;
+            if(animation_state < 8 || animation_state > 15) _set_green_led(working_led, animation_substate );
+            else _set_green_led(working_led, 0);
+            if(animation_state > 7) _set_red_led(working_led, animation_substate );
+            else _set_red_led(working_led, 0);
+            break;
+        case 1:
+            // R-O-G Colour sweep
+            switch(animation_state) {
+                case 0:
+                    red_brightness = 255;
+                    green_brightness = animation_substate * 4;
+                    break;
+                case 1:
+                    red_brightness = 255 - (animation_substate * 4);
+                    green_brightness = 128 + (animation_substate * 4);
+                    break;
+                case 2:
+                    green_brightness = 255;
+                    red_brightness = 128 - (animation_substate * 4);
+                    break;
+                case 3:
+                    green_brightness = 255 - (animation_substate * 4);
+                    red_brightness = animation_substate * 4;
+                    break;
+                case 4:
+                    green_brightness = 128 - (animation_substate * 4);
+                    red_brightness = 128 + (animation_substate * 4);
+                    break;
+            }
+            animation_substate ++;
+            if(animation_substate == 32) {
+                animation_substate = 0;
+                animation_state ++;
+                if(animation_state == 5) animation_state = 0;
+            }
+            _set_all(red_brightness,green_brightness);
+            break;
+        case 2:
+            // Red Strobe
+            if(animation_state < 6) _set_all(animation_state * 48, 0);
+            if(animation_state == 6) _set_all(255,0);
+            if(animation_state == 12) _set_all(0,0);
+            animation_state ++;
+            if(animation_state == 18) animation_state = 0;
+            break;
+        case 3:
+            // Green Strobe
+            if(animation_state < 6) _set_all(0,animation_state * 48);
+            if(animation_state == 6) _set_all(0,255);
+            if(animation_state == 12) _set_all(0,0);
+            animation_state ++;
+            if(animation_state == 18) animation_state = 0;
+            break;
+        case 4:
+            // Orange Strobe
+            if(animation_state < 6) _set_all(animation_state * 48,animation_state * 48);
+            if(animation_state == 6) _set_all(255,255);
+            if(animation_state == 12) _set_all(0,0);
+            animation_state ++;
+            if(animation_state == 18) animation_state = 0;
+            break;
+        case 5:
+            // R:G Strobe
+            if(animation_state == 0) _set_all(0,64);
+            if(animation_state == 1) _set_all(0,128);
+            if(animation_state == 2) _set_all(0,192);
+            if(animation_state == 3) _set_all(0,255);
+            if(animation_state == 7) _set_all(32,64);
+            if(animation_state == 8) _set_all(64,0);
+            if(animation_state == 9) _set_all(128,0);
+            if(animation_state == 10) _set_all(192,0);
+            if(animation_state == 11) _set_all(255,0);
+            if(animation_state == 15) _set_all(64,32);
+            animation_state ++;
+            if(animation_state == 16) animation_state = 0;
+            break;
+        case 6:
+            // Forward red chase
+            if(animation_state ==  0) _set_leds(  0,  0,  0, 64, 64,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0);
+            if(animation_state ==  1) _set_leds(  0,  0, 64,128,128, 64,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0); 
+            if(animation_state ==  2) _set_leds(  0, 64,128,255,255,128, 64,  0,  0,  0,  0,  0,  0,  0,  0,  0);
+            if(animation_state ==  3) _set_leds( 64,128,255,255,255,255,128, 64,  0,  0,  0,  0,  0,  0,  0,  0);
+            if(animation_state ==  4) _set_leds(128,255,255,128,128,255,255,128,  0,  0,  0,  0,  0,  0,  0,  0);
+            if(animation_state ==  5) _set_leds(255,255,128, 64, 64,128,255,255,  0,  0,  0,  0,  0,  0,  0,  0);
+            if(animation_state ==  6) _set_leds(255,220, 92, 32, 32, 92,220,255,  0,  0,  0,  0,  0,  0,  0,  0);
+            if(animation_state ==  8) _set_leds(255,192, 64, 16, 16, 64,192,255,  0,  0,  0,  0,  0,  0,  0,  0);
+            if(animation_state == 10) _set_leds(255,160, 32,  8,  8, 32,160,255,  0,  0,  0,  0,  0,  0,  0,  0);
+            if(animation_state == 12) _set_leds(255,128, 16,  0,  0, 16,128,255,  0,  0,  0,  0,  0,  0,  0,  0);
+            if(animation_state == 13) _set_leds(255, 64,  4,  0,  0,  4, 64,255,  0,  0,  0,  0,  0,  0,  0,  0);
+            if(animation_state == 14) _set_leds(255,  0,  0,  0,  0,  0,  0,255,  0,  0,  0,  0,  0,  0,  0,  0);
+            animation_state ++;
+            if(animation_state == 16)animation_state = 0;
+            break;
+        case 7:
+            // Reverse red chase
+            if(animation_state ==  0) _set_leds( 64,  0,  0,  0,  0,  0,  0, 64,  0,  0,  0,  0,  0,  0,  0,  0);
+            if(animation_state ==  1) _set_leds(128, 64,  0,  0,  0,  0, 64,128,  0,  0,  0,  0,  0,  0,  0,  0); 
+            if(animation_state ==  2) _set_leds(255,128, 64,  0,  0, 64,128,255,  0,  0,  0,  0,  0,  0,  0,  0);
+            if(animation_state ==  3) _set_leds(255,255,128, 64, 64,128,255,255,  0,  0,  0,  0,  0,  0,  0,  0);
+            if(animation_state ==  4) _set_leds(128,255,255,128,128,255,255,128,  0,  0,  0,  0,  0,  0,  0,  0);
+            if(animation_state ==  5) _set_leds( 64,128,255,255,255,255,128, 64,  0,  0,  0,  0,  0,  0,  0,  0);
+            if(animation_state ==  6) _set_leds( 32, 92,220,255,255,220, 92, 32,  0,  0,  0,  0,  0,  0,  0,  0);
+            if(animation_state ==  8) _set_leds( 16, 64,192,255,255,192, 64, 16,  0,  0,  0,  0,  0,  0,  0,  0);
+            if(animation_state == 10) _set_leds(  8, 32,160,255,255,160, 32,  8,  0,  0,  0,  0,  0,  0,  0,  0);
+            if(animation_state == 12) _set_leds(  0, 16,128,255,255,128, 16,  0,  0,  0,  0,  0,  0,  0,  0,  0);
+            if(animation_state == 13) _set_leds(  0,  4, 64,255,255, 64,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0);
+            if(animation_state == 14) _set_leds(  0,  0,  0,255,255,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0);
+            animation_state ++;
+            if(animation_state == 16)animation_state = 0;
+            break;
+        case 8:
+            // Forward green chase
+            if(animation_state ==  0) _set_leds(  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 64, 64,  0,  0,  0);
+            if(animation_state ==  1) _set_leds(  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 64,128,128, 64,  0,  0); 
+            if(animation_state ==  2) _set_leds(  0,  0,  0,  0,  0,  0,  0,  0,  0, 64,128,255,255,128, 64,  0);
+            if(animation_state ==  3) _set_leds(  0,  0,  0,  0,  0,  0,  0,  0, 64,128,255,255,255,255,128, 64);
+            if(animation_state ==  4) _set_leds(  0,  0,  0,  0,  0,  0,  0,  0,128,255,255,128,128,255,255,128);
+            if(animation_state ==  5) _set_leds(  0,  0,  0,  0,  0,  0,  0,  0,255,255,128, 64, 64,128,255,255);
+            if(animation_state ==  6) _set_leds(  0,  0,  0,  0,  0,  0,  0,  0,255,220, 92, 32, 32, 92,220,255);
+            if(animation_state ==  8) _set_leds(  0,  0,  0,  0,  0,  0,  0,  0,255,192, 64, 16, 16, 64,192,255);
+            if(animation_state == 10) _set_leds(  0,  0,  0,  0,  0,  0,  0,  0,255,160, 32,  8,  8, 32,160,255);
+            if(animation_state == 12) _set_leds(  0,  0,  0,  0,  0,  0,  0,  0,255,128, 16,  0,  0, 16,128,255);
+            if(animation_state == 13) _set_leds(  0,  0,  0,  0,  0,  0,  0,  0,255, 64,  4,  0,  0,  4, 64,255);
+            if(animation_state == 14) _set_leds(  0,  0,  0,  0,  0,  0,  0,  0,255,  0,  0,  0,  0,  0,  0,255);
+            animation_state ++;
+            if(animation_state == 16)animation_state = 0;
+            break;
+         case 9:
+            // Reverse green chase
+            if(animation_state ==  0) _set_leds(  0,  0,  0,  0,  0,  0,  0,  0, 64,  0,  0,  0,  0,  0,  0, 64);
+            if(animation_state ==  1) _set_leds(  0,  0,  0,  0,  0,  0,  0,  0,128, 64,  0,  0,  0,  0, 64,128); 
+            if(animation_state ==  2) _set_leds(  0,  0,  0,  0,  0,  0,  0,  0,255,128, 64,  0,  0, 64,128,255);
+            if(animation_state ==  3) _set_leds(  0,  0,  0,  0,  0,  0,  0,  0,255,255,128, 64, 64,128,255,255);
+            if(animation_state ==  4) _set_leds(  0,  0,  0,  0,  0,  0,  0,  0,128,255,255,128,128,255,255,128);
+            if(animation_state ==  5) _set_leds(  0,  0,  0,  0,  0,  0,  0,  0, 64,128,255,255,255,255,128, 64);
+            if(animation_state ==  6) _set_leds(  0,  0,  0,  0,  0,  0,  0,  0, 32, 92,220,255,255,220, 92, 32);
+            if(animation_state ==  8) _set_leds(  0,  0,  0,  0,  0,  0,  0,  0, 16, 64,192,255,255,192, 64, 16);
+            if(animation_state == 10) _set_leds(  0,  0,  0,  0,  0,  0,  0,  0,  8, 32,160,255,255,160, 32,  8);
+            if(animation_state == 12) _set_leds(  0,  0,  0,  0,  0,  0,  0,  0,  0, 16,128,255,255,128, 16,  0);
+            if(animation_state == 13) _set_leds(  0,  0,  0,  0,  0,  0,  0,  0,  0,  4, 64,255,255, 64,  4,  0);
+            if(animation_state == 14) _set_leds(  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,255,255,  0,  0,  0);
+            animation_state ++;
+            if(animation_state == 16)animation_state = 0;
+            break;
+        case 10:
+            // Forward orange chase
+            if(animation_state ==  0) _set_leds(  0,  0,  0, 64, 64,  0,  0,  0,  0,  0,  0, 64, 64,  0,  0,  0);
+            if(animation_state ==  1) _set_leds(  0,  0, 64,128,128, 64,  0,  0,  0,  0, 64,128,128, 64,  0,  0); 
+            if(animation_state ==  2) _set_leds(  0, 64,128,255,255,128, 64,  0,  0, 64,128,255,255,128, 64,  0);
+            if(animation_state ==  3) _set_leds( 64,128,255,255,255,255,128, 64, 64,128,255,255,255,255,128, 64);
+            if(animation_state ==  4) _set_leds(128,255,255,128,128,255,255,128,128,255,255,128,128,255,255,128);
+            if(animation_state ==  5) _set_leds(255,255,128, 64, 64,128,255,255,255,255,128, 64, 64,128,255,255);
+            if(animation_state ==  6) _set_leds(255,220, 92, 32, 32, 92,220,255,255,220, 92, 32, 32, 92,220,255);
+            if(animation_state ==  8) _set_leds(255,192, 64, 16, 16, 64,192,255,255,192, 64, 16, 16, 64,192,255);
+            if(animation_state == 10) _set_leds(255,160, 32,  8,  8, 32,160,255,255,160, 32,  8,  8, 32,160,255);
+            if(animation_state == 12) _set_leds(255,128, 16,  0,  0, 16,128,255,255,128, 16,  0,  0, 16,128,255);
+            if(animation_state == 13) _set_leds(255, 64,  4,  0,  0,  4, 64,255,255, 64,  4,  0,  0,  4, 64,255);
+            if(animation_state == 14) _set_leds(255,  0,  0,  0,  0,  0,  0,255,255,  0,  0,  0,  0,  0,  0,255);
+            animation_state ++;
+            if(animation_state == 16)animation_state = 0;
+            break;
+         case 11:
+            // Reverse orange chase
+            if(animation_state ==  0) _set_leds( 64,  0,  0,  0,  0,  0,  0, 64, 64,  0,  0,  0,  0,  0,  0, 64);
+            if(animation_state ==  1) _set_leds(128, 64,  0,  0,  0,  0, 64,128,128, 64,  0,  0,  0,  0, 64,128); 
+            if(animation_state ==  2) _set_leds(255,128, 64,  0,  0, 64,128,255,255,128, 64,  0,  0, 64,128,255);
+            if(animation_state ==  3) _set_leds(255,255,128, 64, 64,128,255,255,255,255,128, 64, 64,128,255,255);
+            if(animation_state ==  4) _set_leds(128,255,255,128,128,255,255,128,128,255,255,128,128,255,255,128);
+            if(animation_state ==  5) _set_leds( 64,128,255,255,255,255,128, 64, 64,128,255,255,255,255,128, 64);
+            if(animation_state ==  6) _set_leds( 32, 92,220,255,255,220, 92, 32, 32, 92,220,255,255,220, 92, 32);
+            if(animation_state ==  8) _set_leds( 16, 64,192,255,255,192, 64, 16, 16, 64,192,255,255,192, 64, 16);
+            if(animation_state == 10) _set_leds(  8, 32,160,255,255,160, 32,  8,  8, 32,160,255,255,160, 32,  8);
+            if(animation_state == 12) _set_leds(  0, 16,128,255,255,128, 16,  0,  0, 16,128,255,255,128, 16,  0);
+            if(animation_state == 13) _set_leds(  0,  4, 64,255,255, 64,  4,  0,  0,  4, 64,255,255, 64,  4,  0);
+            if(animation_state == 14) _set_leds(  0,  0,  0,255,255,  0,  0,  0,  0,  0,  0,255,255,  0,  0,  0);
+            animation_state ++;
+            if(animation_state == 16)animation_state = 0;
+            break;
     }
-        char working_led = led_ticker_state % 8;
-
-    if(led_ticker_state < 8 || led_ticker_state > 15) set_green_led(working_led, led_ticker_sub_state );
-    else set_green_led(working_led, 0);
-    if(led_ticker_state > 7) set_red_led(working_led, led_ticker_sub_state );
-    else set_red_led(working_led, 0);
-    if(led_ticker_sub_state == 0) {
-   
-    }
-}
+}
\ No newline at end of file