uint8_t cube_expand_1(cube *data, uint8_t *index, uint8_t *tmp, uint8_t *time) { uint8_t i = 0; uint8_t model = 0x80; cube_clear(data); model = 0x80; model >>= *tmp; model |= 0x80; for(i = 1; i < *tmp; i++) { data->layer_d[0].row[i] = model; data->layer_d[*tmp].row[i] = model; data->layer_d[i].row[0] = model; data->layer_d[i].row[*tmp] = model; } model = 0xFF; model -= ((1 << (7-*tmp)) - 1); data->layer_d[*tmp].row[0] = model; data->layer_d[*tmp].row[*tmp] = model; data->layer_d[0].row[0] = model; data->layer_d[0].row[*tmp] = model; return cube_animation_control(index, tmp, 15, 7); }
uint8_t cube_expand_3(cube *data, uint8_t *index, uint8_t *tmp, uint8_t *time) { uint8_t i = 0; uint8_t model = 0x80; cube_clear(data); model = 0x01; model <<= *tmp; model |= 0x01; for(i = (*tmp) - 1; (int8_t)i > 0; i--) { data->layer_d[0].row[7 - i] = model; data->layer_d[*tmp].row[7 - i] = model; data->layer_d[i].row[7] = model; data->layer_d[i].row[7 - *tmp] = model; } //model = 0xFF; model = ((1 << (*tmp + 1)) - 1); data->layer_d[*tmp].row[7] = model; data->layer_d[*tmp].row[7 - *tmp] = model; data->layer_d[0].row[7] = model; data->layer_d[0].row[7 - *tmp] = model; return cube_animation_control(index, tmp, 15, 7); }
uint8_t cube_layer_shift_left_right(cube *data, uint8_t *index, uint8_t *tmp, uint8_t *time) { uint8_t model = 0xFF; uint8_t i; cube_clear(data); for(i = 0; i < 8; i++) { data->layer_d[i].row[*tmp] = model; } return cube_animation_control(index, tmp, 15, 7); }
uint8_t cube_explosion(cube *data, uint8_t *index, uint8_t *tmp, uint8_t *time) { uint8_t i, j; cube_clear(data); for(i = 0; i < 8; i++) { for(j = 0; j < 8; j++) { data->layer_d[i].row[j] = rand(); } } return 1; }
uint8_t cube_layer_shift_front_back(cube *data, uint8_t *index, uint8_t *tmp, uint8_t *time) { uint8_t model = 0x01; uint8_t i, j; cube_clear(data); model <<= *tmp; for(j = 0; j < 8; j++) { for(i = 0; i < 8; i++) { data->layer_d[i].row[j] = model; } } return cube_animation_control(index, tmp, 15, 7); }
uint8_t cube_rocket_explode(cube *data, uint8_t *index, uint8_t *tmp, uint8_t *time) { cube_clear(data); switch(*index) { case 0: data->layer_d[*index].row[3] = 0x10; break; case 1: case 2: case 3: case 4: case 5: case 6: case 7: data->layer_d[*index - 1].row[3] = 0x10; data->layer_d[*index].row[3] = 0x10; break; case 8: case 9: case 10: case 11: case 12: case 13: case 14: case 15: clube_layer_rand(data, index); //change time break; default: //maybe reset not planed yet. break; } return cube_animation_control(index, tmp, 16, 7); }
int main(void) { init(); _delay_ms(100); _delay_ms(100); cube_clear(); /* never forget this */ while ( 1 ){ cube_string_belt(" fornax led cube demo"); cube_explosion(); cube_string_to_front("leyanda.de"); cube_belt_wipe(); cube_walking(); cube_block_wipe(); cube_fixed_string(); cube_block_wipe(); cube_2_auto(); cube_wipe(); cube_stripes(); cube_belt_wipe(); cube_waves(); cube_explosion(); outline_shrink(); cube_explosion(); cube_string("42"); cubes_4(); cube_belt_wipe(); cube_outline(); cube_explosion(); cube_stars(); cube_explosion(); cube_sonic(); cube_belt_wipe(); } /* * this might be used for a random assortment * of the effects, add them to the switch statement */ /* #define EFFECTS uint8_t prog[EFFECT]; uint8_t j = 0; while ( j < EFFECTS ) { uint8_t k = 0; uint8_t number = rand()%EFFECTS; uint8_t isunique = 1; for ( k = 0; k < j; k++ ){ if ( prog[k] == number ) isunique = 0; } if (isunique == 1) { prog[k] = number; j++; } } for (uint8_t i = 0; i < EFFECTS; i++ ) { switch (prog[i]) { default: break; } } */ }
int main(void) { init(); _delay_ms(100); _delay_ms(100); start_animation(); _delay_ms(100); _delay_ms(100); _delay_ms(100); _delay_ms(100); _delay_ms(100); _delay_ms(100); _delay_ms(100); _delay_ms(100); cube_clear(); /* never forget this */ while ( 1 ) { uart_puts("hallo welt"); //usbPoll(); // Wird per Timer aufgerufen... if ( container.doAnimation != 0 ) { switch ( container.doAnimation ) { case 1 : ; cube_clear(); break; case 2 : ; cube_full(); break; // Equalizer case 20 : ; // euqalizer1 steuerung für mehrere ringe gleichzeitig cube_clear(); // aktuelles frame löschen switch ( container.eqValue ) { case 10: ; equalizer_10(); case 9: ; equalizer_9(); case 8: ; equalizer_8(); case 7: ; equalizer_7(); case 6: ; equalizer_6(); case 5: ; equalizer_5(); case 4: ; equalizer_4(); case 3: ; equalizer_3(); case 2: ; equalizer_2(); case 1: ; equalizer_1(); case 0: ; equalizer_0(); } break; case 21 : ; // euqalizer2 steuerung für mehrere ringe gleichzeitig cube_clear(); // aktuelles frame löschen switch ( container.eqValue ) { case 10: ; equalizer_10(); break; case 9: ; equalizer_9(); break; case 8: ; equalizer_8(); break; case 7: ; equalizer_7(); break; case 6: ; equalizer_6(); break; case 5: ; equalizer_5(); break; case 4: ; equalizer_4(); break; case 3: ; equalizer_3(); break; case 2: ; equalizer_2(); break; case 1: ; equalizer_1(); break; case 0: ; equalizer_0(); break; } break; case 30 : ; playAnimation = true; playAnimationen(maske1, aendrung1,frames1); break; case 31 : ; playAnimation = true; playAnimationen(maske2, aendrung2,frames2); break; case 32 : ; playAnimation = true; playAnimationen(maske3, aendrung3,frames3); break; case 33 : ; playAnimation = true; playAnimationen(maske4, aendrung4,frames4); break; case 34 : ; playAnimation = true; playAnimationen(maske5, aendrung5,frames5); break; case 35 : ; playAnimation = true; playAnimationen(maske6, aendrung6,frames6); break; case 36 : ; playAnimation = true; playAnimationen(maske7, aendrung7,frames7); break; case 37 : ; playAnimation = true; playAnimationen(maske8, aendrung8,frames8); break; case 38 : ; equalizer_8(); break; case 39 : ; equalizer_9(); break; case 40 : ; equalizer_10(); break; // Laufschrift zeigen case 198 : ; showTime = true; break; // Laufschrift zeigen case 199 : ; boolPlayFloatingText = true; playFloatingText(); break; // Startanimation zeigen case 200 : ; start_animation(); break; case 255 : ; // Reset durchführen wdt_enable(0); while(1); break; } container.doAnimation = 0; } } }