66
77// DO NOT PUSH ANY KEY WHILE DOWNLOADING!!!
88
9- #define F_CPU 16000000UL
9+ #define F_CPU 16000000
1010
1111#include < avr/io.h>
1212#include < avr/interrupt.h>
@@ -43,18 +43,11 @@ int main(void) {
4343 I2C_init_slave (my_address);
4444
4545 // boot led start
46- pixel[0 ] = (rgb_color){15 ,15 ,15 };
47- led_strip_write (pixel, LED_COUNT);
48- _delay_ms (1000 );
49-
50- for (unsigned char i=1 ; i<LED_COUNT; i++) {
46+ for (unsigned char i=0 ; i<LED_COUNT; i++) {
5147 pixel[i] = (rgb_color){15 ,15 ,15 };
52- pixel[i-1 ] = (rgb_color){0 ,0 ,0 };
5348 led_strip_write (pixel, LED_COUNT);
54- _delay_ms (1000 );
49+ _delay_ms (100 );
5550 }
56- pixel[LED_COUNT-1 ] = (rgb_color){0 ,0 ,0 };
57- led_strip_write (pixel, LED_COUNT);
5851 // boot led end
5952
6053 TWCR |= 0x80 ; // clear TWINT
@@ -66,15 +59,32 @@ int main(void) {
6659 I2C_writing_data[0 ] = key_state;
6760 power_state = I2C_general_data[0 ] & 0x80 ;
6861
69- if (power_state) { // LED on
70- for (unsigned char i=0 ; i<LED_COUNT; i++) {
71- pixel[i] = (rgb_color){15 ,15 ,15 };
72- }
73- } else { // LED off
62+ if (power_state) {
63+ if (I2C_general_data[1 ]) {// I2C_general_data[1] != 0
64+ rgb_color col_temp[6 ];
65+ // 0xRG, 0xBW
66+
67+ for (unsigned char i=0 ; i<6 ; i++) {
68+ col_temp[i].red = I2C_general_data[3 *i + 1 ];
69+ col_temp[i].green = I2C_general_data[3 *i + 2 ];
70+ col_temp[i].blue = I2C_general_data[3 *i + 3 ];
71+ }
72+
73+ for (unsigned char i=0 ; i<5 ; i++) {
74+ pixel[i] = col_temp[i+1 ];
75+ }
76+
77+ } else {
78+ for (unsigned char i=0 ; i<LED_COUNT; i++) {
79+ pixel[i] = (rgb_color){15 ,15 ,15 };
80+ }
81+ }
82+ } else {
7483 for (unsigned char i=0 ; i<LED_COUNT; i++) {
7584 pixel[i] = (rgb_color){0 ,0 ,0 };
7685 }
7786 }
87+
7888 cli ();
7989 led_strip_write (pixel, LED_COUNT);
8090 sei ();
0 commit comments