Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "LowPower.h" //https://github.com/rocketscream/Low-Power
- #define BUTTON_PIN 2 //the on-off button
- #define LED_PIN 13 //low battery indicator
- #define LOW_BATTERY 10 //the value at wich the battery is empty
- #define AC_SENSOR A0 //analog 0-1.1v AC sensor
- #define BATTERY_SENSOR A1 //analog 0-1.1v battery sensor
- #define LED_RELAY 3 //12v LED relay
- #define AC_RELAY 4 //220v AC relay
- #define acIsPresent() analogRead(AC_SENSOR)
- #define batteryHasCharge() analogRead(BATTERY_SENSOR) > LOW_BATTERY
- volatile int OnOffStatus = 0;
- void onButtonPressed()
- {
- //function run when the button is pressed
- }
- void setup()
- {
- analogReference(INTERNAL); //set voltage reference to internal 1.1v
- pinMode(BUTTON_PIN, INPUT);
- pinMode(LED_PIN, OUTPUT);
- }
- void loop()
- {
- attachInterrupt(digitalPinToInterrupt(BUTTON_PIN),onButtonPressed,LOW);
- LowPower.powerDown(SLEEP_FOREVER, ADC_OFF, BOD_OFF);
- detachInterrupt(digitalPinToInterrupt(BUTTON_PIN));
- if (OnOffStatus) {
- if (acIsPresent()) {
- //turn the AC lights on
- OnOffStatus != OnOffStatus;
- digitalWrite(AC_RELAY,HIGH);
- }
- else if (batteryHasCharge()) {
- //turn the LED ligjts on
- OnOffStatus != OnOffStatus;
- digitalWrite(AC_RELAY,HIGH);
- }
- else {
- //we can't turn the lights on!
- for (int i=0;i<5;i++) {
- digitalWrite(LED_PIN,HIGH);
- delay(50);
- digitalWrite(LED_PIN,LOW);
- delay(50);
- }
- }
- //start shutdown timer
- //TODO
- }
- else {
- //turn the lights off
- OnOffStatus != OnOffStatus;
- digitalWrite(LED_RELAY,LOW);
- digitalWrite(AC_RELAY,LOW);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement