/** * AVR program to flash LEDs in apair of brazing goggles. * Copyright (c) 2012 Akoi Meexx (http://akoimeexx.com/) * * Chip type: Attiny13 * Clock frequency: Default internal clock (9.6MHz / 8 prescaler = 1.2MHz) * +--------+ * [ (PB5) |1* 8| (VCC) Power ] * [ (PB3) |2 7| (PB2) GREEN ] * [ (PB4) |3 6| (PB1) YELLOW ] * [ Ground (GND) |4 5| (PB0) RED ] * +--------+ */ /** * AVR-specific defines and includes */ #include #define F_CPU 1200000UL // 1.2 MHz #include #include uint16_t EEMEM nonvolatile_mode; // Some defines that make the code more readable #define output_low(port,pin) port &= ~(1< AUDIO_MODE) { increment_mode = 0; } eeprom_write_word(&nonvolatile_mode, increment_mode); set_output(DDRB, RED); set_output(DDRB, YELLOW); set_output(DDRB, GREEN); } int main(void) { init(); while(1) { switch (lighting_mode) { case DEBUG_MODE: toggle_pin(PORTB, RED); _delay_ms(1000); break; case TOGGLE_MODE: toggle_step(GREEN); _delay_ms(250); toggle_step(YELLOW); _delay_ms(250); toggle_step(RED); _delay_ms(250); toggle_step(YELLOW); _delay_ms(250); break; case FADE_MODE: // TODO: fade_step(); lighting_mode = TOGGLE_MODE; break; case AUDIO_MODE: // TODO: audio_hell(); lighting_mode = TOGGLE_MODE; break; default: lighting_mode = DEBUG_MODE; } } return 0; }