battery manager test code
This commit is contained in:
parent
4a00af5506
commit
d4ccab6ea5
@ -1,52 +0,0 @@
|
|||||||
/**
|
|
||||||
* @file DS18B20.h
|
|
||||||
* @author your name (you@domain.com)
|
|
||||||
* @brief
|
|
||||||
* @version 0.1
|
|
||||||
* @date 2020-06-09
|
|
||||||
*
|
|
||||||
* @copyright Copyright (c) 2020
|
|
||||||
* Based on the LUA code from the ESP8266
|
|
||||||
* --------------------------------------------------------------------------------
|
|
||||||
* -- DS18B20 one wire module for NODEMCU
|
|
||||||
* -- NODEMCU TEAM
|
|
||||||
* -- LICENCE: http://opensource.org/licenses/MIT
|
|
||||||
* -- Vowstar <vowstar@nodemcu.com>
|
|
||||||
* -- 2015/02/14 sza2 <sza2trash@gmail.com> Fix for negative values
|
|
||||||
* --------------------------------------------------------------------------------
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef DS18B20_H
|
|
||||||
#define DS18B20_H
|
|
||||||
|
|
||||||
#include <OneWire.h>
|
|
||||||
|
|
||||||
class Ds18B20 {
|
|
||||||
private:
|
|
||||||
OneWire* mDs;
|
|
||||||
int foundDevices;
|
|
||||||
public:
|
|
||||||
Ds18B20(int pin) {
|
|
||||||
this->mDs = new OneWire(pin);
|
|
||||||
}
|
|
||||||
|
|
||||||
~Ds18B20() {
|
|
||||||
delete this->mDs;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* @brief read amount sensots
|
|
||||||
* check for available of DS18B20 sensors
|
|
||||||
* @return amount of sensors
|
|
||||||
*/
|
|
||||||
int readDevices(void);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Read all temperatures in celsius
|
|
||||||
*
|
|
||||||
* @param pTemperatures array of float valuies
|
|
||||||
* @param maxTemperatures size of the given array
|
|
||||||
* @return int amount of read temperature values
|
|
||||||
*/
|
|
||||||
int readAllTemperatures(float* pTemperatures, int maxTemperatures);
|
|
||||||
};
|
|
||||||
#endif
|
|
74
esp32test/Esp32DeepSleepTest/include/DS2438.h
Normal file
74
esp32test/Esp32DeepSleepTest/include/DS2438.h
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
/*
|
||||||
|
* DS2438.h
|
||||||
|
*
|
||||||
|
* by Joe Bechter
|
||||||
|
*
|
||||||
|
* (C) 2012, bechter.com
|
||||||
|
*
|
||||||
|
* All files, software, schematics and designs are provided as-is with no warranty.
|
||||||
|
* All files, software, schematics and designs are for experimental/hobby use.
|
||||||
|
* Under no circumstances should any part be used for critical systems where safety,
|
||||||
|
* life or property depends upon it. You are responsible for all use.
|
||||||
|
* You are free to use, modify, derive or otherwise extend for your own non-commercial purposes provided
|
||||||
|
* 1. No part of this software or design may be used to cause injury or death to humans or animals.
|
||||||
|
* 2. Use is non-commercial.
|
||||||
|
* 3. Credit is given to the author (i.e. portions © bechter.com), and provide a link to the original source.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef DS2438_h
|
||||||
|
#define DS2438_h
|
||||||
|
|
||||||
|
#include <Arduino.h>
|
||||||
|
#include <OneWire.h>
|
||||||
|
|
||||||
|
#define DS2438_TEMPERATURE_CONVERSION_COMMAND 0x44
|
||||||
|
#define DS2438_VOLTAGE_CONVERSION_COMMAND 0xb4
|
||||||
|
#define DS2438_WRITE_SCRATCHPAD_COMMAND 0x4e
|
||||||
|
#define DS2438_COPY_SCRATCHPAD_COMMAND 0x48
|
||||||
|
#define DS2438_READ_SCRATCHPAD_COMMAND 0xbe
|
||||||
|
#define DS2438_RECALL_MEMORY_COMMAND 0xb8
|
||||||
|
#define DS2438_PAGE_0 0x00
|
||||||
|
|
||||||
|
#define DS2438_CHA 0
|
||||||
|
#define DS2438_CHB 1
|
||||||
|
|
||||||
|
#define DS2438_MODE_CHA 0x01
|
||||||
|
#define DS2438_MODE_CHB 0x02
|
||||||
|
#define DS2438_MODE_TEMPERATURE 0x04
|
||||||
|
|
||||||
|
#define DS2438_TEMPERATURE_DELAY 10
|
||||||
|
#define DS2438_VOLTAGE_CONVERSION_DELAY 8
|
||||||
|
|
||||||
|
typedef uint8_t DeviceAddress[8];
|
||||||
|
|
||||||
|
class DS2438 {
|
||||||
|
public:
|
||||||
|
DS2438(OneWire *ow);
|
||||||
|
DS2438(OneWire *ow, uint8_t *address);
|
||||||
|
|
||||||
|
void begin();
|
||||||
|
void update();
|
||||||
|
double getTemperature();
|
||||||
|
float getVoltage(int channel=DS2438_CHA);
|
||||||
|
boolean isError();
|
||||||
|
boolean isFound();
|
||||||
|
private:
|
||||||
|
bool validAddress(const uint8_t*);
|
||||||
|
bool validFamily(const uint8_t* deviceAddress);
|
||||||
|
|
||||||
|
bool deviceFound = false;
|
||||||
|
OneWire *_ow;
|
||||||
|
DeviceAddress _address;
|
||||||
|
uint8_t _mode;
|
||||||
|
double _temperature;
|
||||||
|
float _voltageA;
|
||||||
|
float _voltageB;
|
||||||
|
boolean _error;
|
||||||
|
boolean startConversion(int channel, boolean doTemperature);
|
||||||
|
boolean selectChannel(int channel);
|
||||||
|
void writePageZero(uint8_t *data);
|
||||||
|
boolean readPageZero(uint8_t *data);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
@ -1,105 +0,0 @@
|
|||||||
/**
|
|
||||||
* @file DS18B20.cpp
|
|
||||||
* @author your name (you@domain.com)
|
|
||||||
* @brief
|
|
||||||
* @version 0.1
|
|
||||||
* @date 2020-06-09
|
|
||||||
*
|
|
||||||
* @copyright Copyright (c) 2020
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "DS18B20.h"
|
|
||||||
|
|
||||||
#define STARTCONV 0x44
|
|
||||||
#define READSCRATCH 0xBE // Read EEPROM
|
|
||||||
#define TEMP_LSB 0
|
|
||||||
#define TEMP_MSB 1
|
|
||||||
#define SCRATCHPADSIZE 9
|
|
||||||
#define OFFSET_CRC8 8 /**< 9th byte has the CRC of the complete data */
|
|
||||||
|
|
||||||
//Printf debugging
|
|
||||||
//#define DS_DEBUG
|
|
||||||
|
|
||||||
int Ds18B20::readDevices() {
|
|
||||||
byte addr[8];
|
|
||||||
|
|
||||||
int amount = -1;
|
|
||||||
while (this->mDs->search(addr)) {
|
|
||||||
amount++;
|
|
||||||
}
|
|
||||||
this->mDs->reset_search();
|
|
||||||
return amount;
|
|
||||||
}
|
|
||||||
|
|
||||||
int Ds18B20::readAllTemperatures(float* pTemperatures, int maxTemperatures) {
|
|
||||||
byte addr[8];
|
|
||||||
uint8_t scratchPad[SCRATCHPADSIZE];
|
|
||||||
int currentTemp = 0;
|
|
||||||
|
|
||||||
while (this->mDs->search(addr)) {
|
|
||||||
#ifdef DS_DEBUG
|
|
||||||
Serial.print(" ROM =");
|
|
||||||
for (i = 0; i < 8; i++) {
|
|
||||||
Serial.write(' ');
|
|
||||||
Serial.print(addr[i], HEX);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
this->mDs->reset();
|
|
||||||
this->mDs->select(addr);
|
|
||||||
this->mDs->write(STARTCONV);
|
|
||||||
this->mDs->reset();
|
|
||||||
this->mDs->select(addr);
|
|
||||||
this->mDs->write(READSCRATCH);
|
|
||||||
|
|
||||||
// Read all registers in a simple loop
|
|
||||||
// byte 0: temperature LSB
|
|
||||||
// byte 1: temperature MSB
|
|
||||||
// byte 2: high alarm temp
|
|
||||||
// byte 3: low alarm temp
|
|
||||||
// byte 4: DS18S20: store for crc
|
|
||||||
// DS18B20 & DS1822: configuration register
|
|
||||||
// byte 5: internal use & crc
|
|
||||||
// byte 6: DS18S20: COUNT_REMAIN
|
|
||||||
// DS18B20 & DS1822: store for crc
|
|
||||||
// byte 7: DS18S20: COUNT_PER_C
|
|
||||||
// DS18B20 & DS1822: store for crc
|
|
||||||
// byte 8: SCRATCHPAD_CRC
|
|
||||||
#ifdef DS_DEBUG
|
|
||||||
Serial.write("\r\nDATA:");
|
|
||||||
for (uint8_t i = 0; i < 9; i++) {
|
|
||||||
Serial.print(scratchPad[i], HEX);
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
delay(50);
|
|
||||||
#endif
|
|
||||||
for (uint8_t i = 0; i < 9; i++) {
|
|
||||||
scratchPad[i] = this->mDs->read();
|
|
||||||
}
|
|
||||||
uint8_t crc8 = this->mDs->crc8(scratchPad, 8);
|
|
||||||
|
|
||||||
/* Only work an valid data */
|
|
||||||
if (crc8 == scratchPad[OFFSET_CRC8]) {
|
|
||||||
int16_t fpTemperature = (((int16_t) scratchPad[TEMP_MSB]) << 11)
|
|
||||||
| (((int16_t) scratchPad[TEMP_LSB]) << 3);
|
|
||||||
float celsius = (float) fpTemperature * 0.0078125;
|
|
||||||
#ifdef DS_DEBUG
|
|
||||||
Serial.printf("\r\nTemp%d %f °C (Raw: %d, %x =? %x)\r\n", (currentTemp+1), celsius, fpTemperature, crc8, scratchPad[8]);
|
|
||||||
#endif
|
|
||||||
/* check, if the buffer as some space for our data */
|
|
||||||
if (currentTemp < maxTemperatures) {
|
|
||||||
pTemperatures[currentTemp] = celsius;
|
|
||||||
} else {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
currentTemp++;
|
|
||||||
}
|
|
||||||
this->mDs->reset();
|
|
||||||
#ifdef DS_DEBUG
|
|
||||||
Serial.println(" No more addresses.");
|
|
||||||
Serial.println();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return currentTemp;
|
|
||||||
}
|
|
203
esp32test/Esp32DeepSleepTest/src/DS2438.cpp
Normal file
203
esp32test/Esp32DeepSleepTest/src/DS2438.cpp
Normal file
@ -0,0 +1,203 @@
|
|||||||
|
/*
|
||||||
|
* DS2438.cpp
|
||||||
|
*
|
||||||
|
* by Joe Bechter
|
||||||
|
*
|
||||||
|
* (C) 2012, bechter.com
|
||||||
|
*
|
||||||
|
* All files, software, schematics and designs are provided as-is with no warranty.
|
||||||
|
* All files, software, schematics and designs are for experimental/hobby use.
|
||||||
|
* Under no circumstances should any part be used for critical systems where safety,
|
||||||
|
* life or property depends upon it. You are responsible for all use.
|
||||||
|
* You are free to use, modify, derive or otherwise extend for your own non-commercial purposes provided
|
||||||
|
* 1. No part of this software or design may be used to cause injury or death to humans or animals.
|
||||||
|
* 2. Use is non-commercial.
|
||||||
|
* 3. Credit is given to the author (i.e. portions © bechter.com), and provide a link to the original source.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "DS2438.h"
|
||||||
|
|
||||||
|
// DSROM FIELDS
|
||||||
|
#define DSROM_FAMILY 0
|
||||||
|
#define DSROM_CRC 7
|
||||||
|
|
||||||
|
#define DS2438MODEL 0x26
|
||||||
|
|
||||||
|
DS2438::DS2438(OneWire *ow) {
|
||||||
|
_ow = ow;
|
||||||
|
};
|
||||||
|
|
||||||
|
void DS2438::begin(){
|
||||||
|
DeviceAddress searchDeviceAddress;
|
||||||
|
|
||||||
|
_ow->reset_search();
|
||||||
|
memset(searchDeviceAddress,0, 8);
|
||||||
|
_temperature = 0;
|
||||||
|
_voltageA = 0.0;
|
||||||
|
_voltageB = 0.0;
|
||||||
|
_error = true;
|
||||||
|
_mode = (DS2438_MODE_CHA | DS2438_MODE_CHB | DS2438_MODE_TEMPERATURE);
|
||||||
|
|
||||||
|
deviceFound = false; // Reset the number of devices when we enumerate wire devices
|
||||||
|
|
||||||
|
while (_ow->search(searchDeviceAddress)) {
|
||||||
|
if (validAddress(searchDeviceAddress)) {
|
||||||
|
if (validFamily(searchDeviceAddress)) {
|
||||||
|
memcpy(_address,searchDeviceAddress,8);
|
||||||
|
deviceFound = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool DS2438::isFound(){
|
||||||
|
return deviceFound;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool DS2438::validAddress(const uint8_t* deviceAddress) {
|
||||||
|
return (_ow->crc8(deviceAddress, 7) == deviceAddress[DSROM_CRC]);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool DS2438::validFamily(const uint8_t* deviceAddress) {
|
||||||
|
switch (deviceAddress[DSROM_FAMILY]) {
|
||||||
|
case DS2438MODEL:
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void DS2438::update() {
|
||||||
|
uint8_t data[9];
|
||||||
|
|
||||||
|
_error = true;
|
||||||
|
if(!isFound()){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_mode & DS2438_MODE_CHA || _mode == DS2438_MODE_TEMPERATURE) {
|
||||||
|
boolean doTemperature = _mode & DS2438_MODE_TEMPERATURE;
|
||||||
|
if (!startConversion(DS2438_CHA, doTemperature)) {
|
||||||
|
Serial.println("Error starting temp conversion ds2438 channel a");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!readPageZero(data)){
|
||||||
|
Serial.println("Error reading zero page ds2438 channel a");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (doTemperature) {
|
||||||
|
_temperature = (double)(((((int16_t)data[2]) << 8) | (data[1] & 0x0ff)) >> 3) * 0.03125;
|
||||||
|
}
|
||||||
|
if (_mode & DS2438_MODE_CHA) {
|
||||||
|
_voltageA = (((data[4] << 8) & 0x00300) | (data[3] & 0x0ff)) / 100.0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (_mode & DS2438_MODE_CHB) {
|
||||||
|
boolean doTemperature = _mode & DS2438_MODE_TEMPERATURE && !(_mode & DS2438_MODE_CHA);
|
||||||
|
if (!startConversion(DS2438_CHB, doTemperature)) {
|
||||||
|
Serial.println("Error starting temp conversion channel b ds2438");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!readPageZero(data)){
|
||||||
|
Serial.println("Error reading zero page ds2438 channel b");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (doTemperature) {
|
||||||
|
int16_t upperByte = ((int16_t)data[2]) << 8;
|
||||||
|
int16_t lowerByte = data[1] >> 3;
|
||||||
|
int16_t fullByte = (upperByte | lowerByte);
|
||||||
|
_temperature = ((double)fullByte) * 0.03125;
|
||||||
|
}
|
||||||
|
_voltageB = (((data[4] << 8) & 0x00300) | (data[3] & 0x0ff)) / 100.0;
|
||||||
|
}
|
||||||
|
_error = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
double DS2438::getTemperature() {
|
||||||
|
return _temperature;
|
||||||
|
}
|
||||||
|
|
||||||
|
float DS2438::getVoltage(int channel) {
|
||||||
|
if (channel == DS2438_CHA) {
|
||||||
|
return _voltageA;
|
||||||
|
} else if (channel == DS2438_CHB) {
|
||||||
|
return _voltageB;
|
||||||
|
} else {
|
||||||
|
return 0.0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean DS2438::isError() {
|
||||||
|
return _error;
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean DS2438::startConversion(int channel, boolean doTemperature) {
|
||||||
|
if(!isFound()){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (!selectChannel(channel)){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
_ow->reset();
|
||||||
|
_ow->select(_address);
|
||||||
|
if (doTemperature) {
|
||||||
|
_ow->write(DS2438_TEMPERATURE_CONVERSION_COMMAND, 0);
|
||||||
|
delay(DS2438_TEMPERATURE_DELAY);
|
||||||
|
_ow->reset();
|
||||||
|
_ow->select(_address);
|
||||||
|
}
|
||||||
|
_ow->write(DS2438_VOLTAGE_CONVERSION_COMMAND, 0);
|
||||||
|
delay(DS2438_VOLTAGE_CONVERSION_DELAY);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean DS2438::selectChannel(int channel) {
|
||||||
|
if(!isFound()){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
uint8_t data[9];
|
||||||
|
if (readPageZero(data)) {
|
||||||
|
if (channel == DS2438_CHB){
|
||||||
|
data[0] = data[0] | 0x08;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
data[0] = data[0] & 0xf7;
|
||||||
|
}
|
||||||
|
writePageZero(data);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
Serial.println("Could not read page zero data");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void DS2438::writePageZero(uint8_t *data) {
|
||||||
|
_ow->reset();
|
||||||
|
_ow->select(_address);
|
||||||
|
_ow->write(DS2438_WRITE_SCRATCHPAD_COMMAND, 0);
|
||||||
|
_ow->write(DS2438_PAGE_0, 0);
|
||||||
|
for (int i = 0; i < 8; i++){
|
||||||
|
_ow->write(data[i], 0);
|
||||||
|
}
|
||||||
|
_ow->reset();
|
||||||
|
_ow->select(_address);
|
||||||
|
_ow->write(DS2438_COPY_SCRATCHPAD_COMMAND, 0);
|
||||||
|
_ow->write(DS2438_PAGE_0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean DS2438::readPageZero(uint8_t *data) {
|
||||||
|
_ow->reset();
|
||||||
|
_ow->select(_address);
|
||||||
|
_ow->write(DS2438_RECALL_MEMORY_COMMAND, 0);
|
||||||
|
_ow->write(DS2438_PAGE_0, 0);
|
||||||
|
_ow->reset();
|
||||||
|
_ow->select(_address);
|
||||||
|
_ow->write(DS2438_READ_SCRATCHPAD_COMMAND, 0);
|
||||||
|
_ow->write(DS2438_PAGE_0, 0);
|
||||||
|
for (int i = 0; i < 9; i++){
|
||||||
|
data[i] = _ow->read();
|
||||||
|
}
|
||||||
|
return _ow->crc8(data, 8) == data[8];
|
||||||
|
}
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
#include <Arduino.h>
|
#include <Arduino.h>
|
||||||
#include "esp_sleep.h"
|
#include "esp_sleep.h"
|
||||||
#include <DS18B20.h>
|
|
||||||
#include "DallasTemperature.h"
|
#include "DallasTemperature.h"
|
||||||
|
#include "DS2438.h"
|
||||||
|
|
||||||
#define uS_TO_S_FACTOR 1000000 /* Conversion factor for micro seconds to seconds */
|
#define uS_TO_S_FACTOR 1000000 /* Conversion factor for micro seconds to seconds */
|
||||||
#define TIME_TO_SLEEP 5 /* Time ESP32 will go to sleep (in seconds) */
|
#define TIME_TO_SLEEP 5 /* Time ESP32 will go to sleep (in seconds) */
|
||||||
@ -34,9 +34,9 @@ RTC_DATA_ATTR int bootCount = 0;
|
|||||||
RTC_DATA_ATTR int pumpActive = 0;
|
RTC_DATA_ATTR int pumpActive = 0;
|
||||||
int secondBootCount = 0;
|
int secondBootCount = 0;
|
||||||
|
|
||||||
Ds18B20 ds(SENSOR_DS18B20);
|
|
||||||
OneWire oneWire(SENSOR_DS18B20);
|
OneWire oneWire(SENSOR_DS18B20);
|
||||||
DallasTemperature sensors(&oneWire);
|
DallasTemperature temp(&oneWire);
|
||||||
|
DS2438 battery(&oneWire);
|
||||||
|
|
||||||
|
|
||||||
void print_wakeup_reason(){
|
void print_wakeup_reason(){
|
||||||
@ -95,24 +95,33 @@ void setup() {
|
|||||||
/* activate power pump and pump 0 */
|
/* activate power pump and pump 0 */
|
||||||
digitalWrite(OUTPUT_PUMP, HIGH);
|
digitalWrite(OUTPUT_PUMP, HIGH);
|
||||||
digitalWrite(OUTPUT_SENSOR, HIGH);
|
digitalWrite(OUTPUT_SENSOR, HIGH);
|
||||||
|
|
||||||
|
delay(1);
|
||||||
|
|
||||||
|
temp.begin();
|
||||||
|
battery.begin();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void loop() {
|
void loop() {
|
||||||
Serial.println("test");
|
|
||||||
delay(200);
|
delay(200);
|
||||||
digitalWrite(OUTPUT_PUMP0, HIGH);
|
digitalWrite(OUTPUT_PUMP0, HIGH);
|
||||||
|
|
||||||
sensors.begin();
|
for(int j=0; j < 5 && temp.getDeviceCount() == 0; j++) {
|
||||||
|
delay(10);
|
||||||
for(int j=0; j < 5 && sensors.getDeviceCount() == 0; j++) {
|
Serial.println("Reset 1wire temp");
|
||||||
delay(100);
|
temp.begin();
|
||||||
sensors.begin();
|
|
||||||
Serial.println("Reset 1wire");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Serial.println(sensors.getDeviceCount());
|
for(int j=0; j < 5 && (0 == battery.isFound()); j++) {
|
||||||
|
delay(10);
|
||||||
|
Serial.println("Reset 1wire bat");
|
||||||
|
battery.begin();
|
||||||
|
battery.update();
|
||||||
|
}
|
||||||
|
battery.update();
|
||||||
|
Serial.print(battery.getVoltage(0));
|
||||||
|
Serial.print("\t");
|
||||||
|
Serial.print(battery.getVoltage(1));
|
||||||
|
Serial.print("\t");
|
||||||
|
Serial.println(battery.getTemperature());
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user