Guest User

Untitled

a guest
Nov 23rd, 2017
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.81 KB | None | 0 0
  1. #include <avr/sleep.h>
  2. boolean ledOn;
  3. int ledPin = 13;
  4. int intPin = 3;
  5.  
  6. int start = 0;
  7.  
  8. void setup() {
  9. ledOn = false;
  10. pinMode(intPin, INPUT_PULLUP);
  11. pinMode(ledPin, OUTPUT);
  12. //Serial.begin(9600);
  13. attachInterrupt(digitalPinToInterrupt(intPin), wakeUpNow, LOW);
  14. start = millis();
  15. digitalWrite(ledPin, HIGH);
  16. sleepNow();
  17. }
  18. void wakeUpNow()
  19. {
  20. //Serial.println("wake up");
  21. digitalWrite(ledPin, HIGH);
  22. start = millis();
  23. }
  24. void sleepNow()
  25. {
  26. //Serial.println("sleep now");
  27. digitalWrite(ledPin, LOW);
  28. set_sleep_mode(SLEEP_MODE_PWR_DOWN);
  29.  
  30. sleep_enable();
  31. attachInterrupt(digitalPinToInterrupt(intPin), wakeUpNow, LOW);
  32. sleep_mode();
  33.  
  34. sleep_disable();
  35. detachInterrupt(0);
  36. }
  37.  
  38. void loop() {
  39. int now = millis();
  40. if (5000 < now - start) {
  41. sleepNow();
  42. } else {
  43. digitalWrite(ledPin, HIGH);
  44. }
  45. }
Add Comment
Please, Sign In to add comment