#include #include #include #include #include "lib/light_ws2812.h" #include "lib/pm.h" #include "lib/mma8653.h" #include "lib/timers.h" #include "lib/button.h" #define STRIPLEN (6*9) struct cRGB led[STRIPLEN]; int brightness = 9; volatile int stop = 0; void update() { ws2812_setleds(led, STRIPLEN); } void axl_test() { int ret; int c = 0; struct axl_result measurements; int dir_x; int dir_y; int ledno; int intens; memset(led, 0, STRIPLEN * 3); pm_axl_on(); _delay_ms(50); ret = mma8653_init(); if (ret) { led[8].b = 0x10; update(); while(1); } while(!stop) { if (pm_ac_connected()) { led[10].g = 0; led[10].b = 10; pm_led_off(); } else { led[10].g = 10; led[10].b = 0; _delay_ms(25); pm_led_on(); } if (pm_charging()) { led[11].r = 10; } else { led[11].r = 0; } c++; #define THRES 10 ret = mma8653_get_measurements(&measurements); dir_x = 0; if (measurements.x > THRES) dir_x = -1; else if (measurements.x < -THRES) dir_x = 1; dir_y = 0; if (measurements.y > THRES) dir_y = 1; else if (measurements.y < -THRES) dir_y = -1; if (dir_y == -1) ledno = dir_x + 1; else if (dir_y == 0) ledno = 3 + 1 -dir_x; else if (dir_y == 1) ledno = dir_x + 6 + 1; intens = abs(measurements.x + measurements.y); intens = intens >> 2; if (intens < 1) intens = 1; if (measurements.z > 0) led[ledno].b = intens; else led[ledno].r = intens; if (ret) led[ret].r = 0x10; /*if (ret) { led[8].g = 0; led[8].r = c & 1; } else { led[8].r = 0; led[8].g = c & 1; }*/ update(); //_delay_ms(50); memset(led, 0, 9 * 3); //update(); _delay_ms(50); } } void old_main() { memset(led, 0, STRIPLEN * 3); while (!stop) { led[0].r = brightness; led[2].b = 0; update(); _delay_ms(250); led[1].g = brightness; led[0].r = 0; update(); _delay_ms(250); led[1].g = 0; led[2].b = brightness; update(); _delay_ms(250); for (int i=0; i