Created
April 6, 2019 16:04
-
-
Save Dvorson/6f60bd5c5d1e197e25352d8330bce55b to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include "LowPower.h" | |
#define TONE_C 262 | |
#define TONE_D 294 | |
#define TONE_E 330 | |
#define TONE_F 349 | |
#define TONE_G 392 | |
#define TONE_A 440 | |
#define TONE_B 493 | |
#define PIN_C 8 | |
#define PIN_D 7 | |
#define PIN_E 6 | |
#define PIN_F 5 | |
#define PIN_G 4 | |
#define PIN_A 3 | |
#define PIN_B 2 | |
#define PIN_BUZZ 11 | |
#define IDLE_SLEEP 5000 | |
volatile unsigned long idleMs = 0, lastIdle = 0; | |
void wakeUp() { | |
lastIdle = millis(); | |
} | |
void setup() { | |
pinMode(LED_BUILTIN, OUTPUT); | |
pinMode(PIN_C, INPUT); | |
digitalWrite(PIN_C,HIGH); | |
pinMode(PIN_D, INPUT); | |
digitalWrite(PIN_D,HIGH); | |
pinMode(PIN_E, INPUT); | |
digitalWrite(PIN_E,HIGH); | |
pinMode(PIN_F, INPUT); | |
digitalWrite(PIN_F,HIGH); | |
pinMode(PIN_G, INPUT); | |
digitalWrite(PIN_G,HIGH); | |
pinMode(PIN_A, INPUT); | |
digitalWrite(PIN_A,HIGH); | |
pinMode(PIN_B, INPUT); | |
digitalWrite(PIN_B,HIGH); | |
digitalWrite(LED_BUILTIN,LOW); | |
} | |
void loop() { | |
if (idleMs > IDLE_SLEEP) { | |
attachInterrupt(0, wakeUp, LOW); | |
LowPower.powerDown(SLEEP_FOREVER, ADC_OFF, BOD_OFF); | |
} else { | |
LowPower.idle(SLEEP_FOREVER, ADC_OFF, TIMER2_OFF, TIMER1_OFF, TIMER0_ON, | |
SPI_OFF, USART0_OFF, TWI_OFF); | |
} | |
detachInterrupt(0); | |
while(digitalRead(PIN_C) == LOW) { | |
tone(PIN_BUZZ,TONE_C); | |
digitalWrite(LED_BUILTIN,HIGH); | |
lastIdle = millis(); | |
} | |
while(digitalRead(PIN_D) == LOW) { | |
tone(PIN_BUZZ,TONE_D); | |
digitalWrite(LED_BUILTIN,HIGH); | |
lastIdle = millis(); | |
} | |
while(digitalRead(PIN_E) == LOW) { | |
tone(PIN_BUZZ,TONE_E); | |
digitalWrite(LED_BUILTIN,HIGH); | |
lastIdle = millis(); | |
} | |
while(digitalRead(PIN_F) == LOW) { | |
tone(PIN_BUZZ,TONE_F); | |
digitalWrite(LED_BUILTIN,HIGH); | |
lastIdle = millis(); | |
} | |
while(digitalRead(PIN_G) == LOW) { | |
tone(PIN_BUZZ,TONE_G); | |
digitalWrite(LED_BUILTIN,HIGH); | |
lastIdle = millis(); | |
} | |
while(digitalRead(PIN_A) == LOW) { | |
tone(PIN_BUZZ,TONE_A); | |
digitalWrite(LED_BUILTIN,HIGH); | |
lastIdle = millis(); | |
} | |
while(digitalRead(PIN_B) == LOW) { | |
tone(PIN_BUZZ,TONE_B); | |
digitalWrite(LED_BUILTIN,HIGH); | |
lastIdle = millis(); | |
} | |
noTone(PIN_BUZZ); | |
digitalWrite(LED_BUILTIN,LOW); | |
idleMs = millis() - lastIdle; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment