Advertisement
Guest User

Untitled

a guest
May 25th, 2019
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.85 KB | None | 0 0
  1. #include "LowPower.h"     //https://github.com/rocketscream/Low-Power
  2.  
  3. #define BUTTON_PIN 2      //the on-off button
  4. #define LED_PIN 13        //low battery indicator
  5. #define LOW_BATTERY 10    //the value at wich the battery is empty
  6.  
  7. #define AC_SENSOR A0      //analog 0-1.1v AC sensor
  8. #define BATTERY_SENSOR A1 //analog 0-1.1v battery sensor
  9.  
  10. #define LED_RELAY 3       //12v LED relay
  11. #define AC_RELAY 4        //220v AC relay
  12.  
  13. #define acIsPresent() analogRead(AC_SENSOR)
  14. #define batteryHasCharge() analogRead(BATTERY_SENSOR) > LOW_BATTERY
  15.  
  16. volatile int OnOffStatus = 0;
  17.  
  18. void onButtonPressed()
  19. {
  20.   //function run when the button is pressed
  21. }
  22.  
  23. void setup()
  24. {
  25.     analogReference(INTERNAL);    //set voltage reference to internal 1.1v
  26.     pinMode(BUTTON_PIN, INPUT);
  27.     pinMode(LED_PIN, OUTPUT);  
  28. }
  29.  
  30. void loop()
  31. {
  32.     attachInterrupt(digitalPinToInterrupt(BUTTON_PIN),onButtonPressed,LOW);
  33.     LowPower.powerDown(SLEEP_FOREVER, ADC_OFF, BOD_OFF);
  34.     detachInterrupt(digitalPinToInterrupt(BUTTON_PIN));
  35.    
  36.     if (OnOffStatus) {
  37.         if (acIsPresent()) {
  38.             //turn the AC lights on
  39.             OnOffStatus != OnOffStatus;
  40.             digitalWrite(AC_RELAY,HIGH);
  41.         }
  42.         else if (batteryHasCharge()) {
  43.             //turn the LED ligjts on
  44.             OnOffStatus != OnOffStatus;
  45.             digitalWrite(AC_RELAY,HIGH);
  46.         }
  47.         else {
  48.             //we can't turn the lights on!
  49.             for (int i=0;i<5;i++) {
  50.                 digitalWrite(LED_PIN,HIGH);
  51.                 delay(50);
  52.                 digitalWrite(LED_PIN,LOW);
  53.                 delay(50);  
  54.             }
  55.         }
  56.         //start shutdown timer
  57.         //TODO
  58.     }
  59.     else {
  60.         //turn the lights off
  61.         OnOffStatus != OnOffStatus;
  62.         digitalWrite(LED_RELAY,LOW);
  63.         digitalWrite(AC_RELAY,LOW);
  64.     }
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement