int main() { HTpinsetup(); HTsetup(); // HTcommand(HTsetbright + (2<<1) ); HTleds[0]=2; HTleds[1]=6; for (byte i=0;i<15;i++) HTleds[i]=0b11010101<<(i%2); HTsendscreen(); for (byte i=16;i<32;i++) HTleds[i]=0b10010111<<(i%2); HTsendscreen(); _delay_ms(1000); byte c=0; while(1) { // _delay_ms(10); char r; if (c == 0 ) { c = 1; r = 1; } else { c = 0; r = 0; } for (byte i=0;i<32;i++) { HTleds[i]=r; r++; } HTsendscreen(); } }
int main(void) { message_t message; uint8_t next_grid[32]; uint16_t interval = 150; uint8_t current_pattern = 0; initialise(); set_up_timers(); init_timers(); HTbrightness(1); goto init; while (1) { if (mq_get(&message)) { switch (msg_get_event(message)) { case M_TIMER: memset(next_grid, 0, 32); for (uint8_t x = 0; x < 32; x++) { for (uint8_t y = 0; y < 8; y++) { uint8_t c = count(x, y); if (c == 3) next_grid[x] |= 1 << y; else if (c == 4) next_grid[x] |= leds[x] & (1 << y); } } memcpy(leds, next_grid, 32); HTsendscreen(); break; case M_KEY_DOWN: case M_KEY_REPEAT: switch (msg_get_param(message)) { case KEY_LEFT: if (interval > MIN_INTERVAL) { interval -= INTERVAL_INCREMENT; set_timer(interval, 0, true); } break; case KEY_RIGHT: if (interval < MAX_INTERVAL) { interval += INTERVAL_INCREMENT; set_timer(interval, 0, true); } break; case KEY_MIDDLE: current_pattern = (current_pattern + 1) % (sizeof(patterns) / sizeof(character)); init: memset(leds, 0, 32); write_offset(patterns[current_pattern], 10, 2); HTsendscreen(); set_timer(interval, 0, true); break; } break; } } } }