Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <avr/sleep.h>
- boolean ledOn;
- int ledPin = 13;
- int intPin = 3;
- int start = 0;
- void setup() {
- ledOn = false;
- pinMode(intPin, INPUT_PULLUP);
- pinMode(ledPin, OUTPUT);
- //Serial.begin(9600);
- attachInterrupt(digitalPinToInterrupt(intPin), wakeUpNow, LOW);
- start = millis();
- digitalWrite(ledPin, HIGH);
- sleepNow();
- }
- void wakeUpNow()
- {
- //Serial.println("wake up");
- digitalWrite(ledPin, HIGH);
- start = millis();
- }
- void sleepNow()
- {
- //Serial.println("sleep now");
- digitalWrite(ledPin, LOW);
- set_sleep_mode(SLEEP_MODE_PWR_DOWN);
- sleep_enable();
- attachInterrupt(digitalPinToInterrupt(intPin), wakeUpNow, LOW);
- sleep_mode();
- sleep_disable();
- detachInterrupt(0);
- }
- void loop() {
- int now = millis();
- if (5000 < now - start) {
- sleepNow();
- } else {
- digitalWrite(ledPin, HIGH);
- }
- }
Add Comment
Please, Sign In to add comment