// // ATMEL ATTINY13 / ARDUINO // // +-\/-+ // ADC0 (D 5) PB5 1| |8 Vcc // ADC3 (D 3) PB3 2| |7 PB2 (D 2) ADC1 // ADC2 (D 4) PB4 3| |6 PB1 (D 1) PWM1 // GND 4| |5 PB0 (D 0) PWM0 // +----+ #define PIN_BTN PB1 #define PIN_FAN PB2 #define PIN_LED PB3 #define FAN_OFF 0 #define FAN_LOW 1 #define FAN_MIDDLE 2 #define FAN_HIGH 3 #define FAN_FAST 4 static int fanSpeed; void setup() { pinMode(PIN_BTN, INPUT_PULLUP); pinMode(PIN_FAN, OUTPUT); pinMode(PIN_LED, OUTPUT); fanSpeed = FAN_HIGH; } void loop() { if(digitalRead(PIN_BTN) == LOW) { while(digitalRead(PIN_BTN) == LOW); if(fanSpeed == FAN_OFF) fanSpeed = FAN_FAST; else fanSpeed--; } if(fanSpeed == FAN_FAST) { digitalWrite(PIN_LED, HIGH); digitalWrite(PIN_FAN, HIGH); } else if(fanSpeed == FAN_HIGH) { digitalWrite(PIN_LED, HIGH); digitalWrite(PIN_FAN, HIGH); delay(70); digitalWrite(PIN_FAN, LOW); delay(30); } else if(fanSpeed == FAN_MIDDLE) { digitalWrite(PIN_LED, HIGH); digitalWrite(PIN_FAN, HIGH); delay(50); digitalWrite(PIN_FAN, LOW); delay(50); } else if(fanSpeed == FAN_LOW) { digitalWrite(PIN_LED, HIGH); digitalWrite(PIN_FAN, HIGH); delay(30); digitalWrite(PIN_FAN, LOW); delay(70); } else { //FAN_OFF digitalWrite(PIN_LED, LOW); digitalWrite(PIN_FAN, LOW); } }