/* * I have two essays to write. Each 5000 words with a tonne * of literature review required. The deadline is fast * approaching. * * I can't start writing until I have some form of hardware * timer to let me know how long I've been working for. If * this program were on twitter: #procrastination * * LEDs count up 10 minute increments (in binary) reseting * at 60 minutes with an alarm tone. * * Mark Ruff, April 2016 */ // GLOBALS // LED pins int pin1 = 8; int pin2 = 7; int pin3 = 4; int indicatorLed = 13; // so I know it's working int resetSwitch = 2; int speaker = 11; // timing unsigned long int timer = 0; unsigned long int prevMillis = 0; unsigned long int ledTime = 600000; // time to increment the LEDS = 10 mins unsigned long int alarmTime = 3600000; // time to alarm and reset LEDS/counter // notes for alarm int alarmNoteCount = 3; int alarmNotes[] = { 196, 196, 261 }; int alarmNoteLen[] { 500, 250, 2000 }; void setup() { // LED pins and speaker = output, reset switch = input pinMode(pin1,OUTPUT); pinMode(pin2,OUTPUT); pinMode(pin3,OUTPUT); pinMode(speaker,OUTPUT); pinMode(resetSwitch,INPUT); pinMode(indicatorLed,OUTPUT); } void loop() { // increment the timer timer += millis() - prevMillis; prevMillis = millis(); if (digitalRead(resetSwitch) == HIGH) { // reset stuff digitalWrite(pin1, LOW); digitalWrite(pin2, LOW); digitalWrite(pin3, LOW); timer = 0; // need delay to get finger off the button delay(500); } if ( timer > alarmTime ) { // flash LEDs for ( int i = 0 ; i < 10 ; i++ ) { digitalWrite(pin1, HIGH); digitalWrite(pin2, HIGH); digitalWrite(pin3, HIGH); delay(200); digitalWrite(pin1, LOW); digitalWrite(pin2, LOW); digitalWrite(pin3, LOW); delay(100); } // play alarm for (int i = 0 ; i < alarmNoteCount ; i++ ) { tone(speaker, alarmNotes[i], alarmNoteLen[i]); delay(alarmNoteLen[i]); } // reset timer timer = 0; } // light up the LEDs for the time int timerConversion = timer / ledTime; if (timerConversion == 1 || timerConversion == 3 || timerConversion == 5) { digitalWrite(pin1, HIGH); } else { digitalWrite(pin1, LOW); } if (timerConversion == 2 || timerConversion == 3 || timerConversion == 6) { digitalWrite(pin2, HIGH); } else { digitalWrite(pin2, LOW); } if (timerConversion > 3) { digitalWrite(pin3, HIGH); } else { digitalWrite(pin3, LOW); } // give the poor little Arduino a rest delay(200); // let me know the thing is actually working (flash on/off every second) if ( (timer / 1000)%2 == 0 ) { digitalWrite(indicatorLed, HIGH); } else { digitalWrite(indicatorLed, LOW); } }