Help adding battery level to switch sketch
-
I have a sketch witch is used to report when a button is switched:
#include <MySensor.h> #include <SPI.h> #include <MyTransportRFM69.h> #define SKETCH_NAME "BinSwSleepBat" #define SKETCH_VERSION "1-2" #define CHILD_ID 0 MyTransportRFM69 transport; MySensor gw(transport); MySensor mys; MyMessage msg(CHILD_ID, V_TRIPPED); // Change to V_LIGHT if you use S_LIGHT in presentation below int BATTERY_SENSE_PIN = A0; // select the input pin for the battery sense point int sentValue=2; void setup() { mys.begin(); pinMode(BUTTON_PIN, INPUT); // Setup the buttons digitalWrite(BUTTON_PIN, HIGH); // Activate internal pull-ups mys.sendSketchInfo(SKETCH_NAME, SKETCH_VERSION); mys.present(CHILD_ID, S_DOOR); } void loop() // Loop will iterate on changes on the BUTTON_PINs { mys.sleep(50); // Short delay to allow buttons to properly settle uint8_t val = digitalRead(BUTTON_PIN); if (val != sentValue) { // If value has changed from last transmission, send the updated value mys.send(msg.set(val==HIGH ? 1 : 0)); sentValue = val; } mys.sleep(BUTTON_PIN-2, CHANGE, 0); // Sleep until something happens with the sensor }I want to add the battery level sketch so that it sleep until button is switched as before but also reports battery-level every 120min
/** * The MySensors Arduino library handles the wireless radio link and protocol * between your home built sensors/actuators and HA controller of choice. * The sensors forms a self healing radio network with optional repeaters. Each * repeater and gateway builds a routing tables in EEPROM which keeps track of the * network topology allowing messages to be routed to nodes. * * Created by Henrik Ekblad <henrik.ekblad@mysensors.org> * Copyright (C) 2013-2015 Sensnology AB * Full contributor list: https://github.com/mysensors/Arduino/graphs/contributors * * Documentation: http://www.mysensors.org * Support Forum: http://forum.mysensors.org * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * version 2 as published by the Free Software Foundation. * ******************************* * * DESCRIPTION * * This is an example that demonstrates how to report the battery level for a sensor * Instructions for measuring battery capacity on A0 are available here: * http://www.mysensors.org/build/battery * */ #include <SPI.h> #include <MySensor.h> int BATTERY_SENSE_PIN = A0; // select the input pin for the battery sense point MySensor gw; unsigned long SLEEP_TIME = 900000; // sleep time between reads (seconds * 1000 milliseconds) int oldBatteryPcnt = 0; void setup() { // use the 1.1 V internal reference #if defined(__AVR_ATmega2560__) analogReference(INTERNAL1V1); #else analogReference(INTERNAL); #endif gw.begin(); // Send the sketch version information to the gateway and Controller gw.sendSketchInfo("Battery Meter", "1.0"); } void loop() { // get the battery Voltage int sensorValue = analogRead(BATTERY_SENSE_PIN); #ifdef DEBUG Serial.println(sensorValue); #endif // 1M, 470K divider across battery and using internal ADC ref of 1.1V // Sense point is bypassed with 0.1 uF cap to reduce noise at that point // ((1e6+470e3)/470e3)*1.1 = Vmax = 3.44 Volts // 3.44/1023 = Volts per bit = 0.003363075 float batteryV = sensorValue * 0.003363075; int batteryPcnt = sensorValue / 10; #ifdef DEBUG Serial.print("Battery Voltage: "); Serial.print(batteryV); Serial.println(" V"); Serial.print("Battery percent: "); Serial.print(batteryPcnt); Serial.println(" %"); #endif if (oldBatteryPcnt != batteryPcnt) { // Power up radio after sleep gw.sendBatteryLevel(batteryPcnt); oldBatteryPcnt = batteryPcnt; } gw.sleep(SLEEP_TIME); }
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login