mirror of
https://github.com/meshtastic/firmware.git
synced 2025-07-30 02:15:41 +00:00
Fixes on imports of Adafruit library, and ADS1x15 integration
This commit is contained in:
parent
49b32debe4
commit
cf39519c83
@ -22,7 +22,15 @@
|
||||
#include "graphics/ScreenFonts.h"
|
||||
#include <Throttle.h>
|
||||
|
||||
#if __has_include(<Adafruit_ADS1015.h>)
|
||||
namespace graphics
|
||||
{
|
||||
extern void drawCommonHeader(OLEDDisplay *display, int16_t x, int16_t y, const char *titleStr);
|
||||
}
|
||||
|
||||
|
||||
#include "Sensor/nullSensor.h"
|
||||
|
||||
#if __has_include(<Adafruit_ADS1X15.h>)
|
||||
#include "Sensor/ADS1X15Sensor.h"
|
||||
ADS1X15Sensor ads1x15Sensor;
|
||||
#else
|
||||
@ -49,8 +57,8 @@ int32_t PowerTelemetryModule::runOnce()
|
||||
without having to configure it from the PythonAPI or WebUI.
|
||||
*/
|
||||
|
||||
// moduleConfig.telemetry.power_measurement_enabled = 1;
|
||||
// moduleConfig.telemetry.power_screen_enabled = 1;
|
||||
moduleConfig.telemetry.power_measurement_enabled = 1;
|
||||
moduleConfig.telemetry.power_screen_enabled = 1;
|
||||
// moduleConfig.telemetry.power_update_interval = 45;
|
||||
|
||||
if (!(moduleConfig.telemetry.power_measurement_enabled)) {
|
||||
@ -83,6 +91,9 @@ int32_t PowerTelemetryModule::runOnce()
|
||||
result = max17048Sensor.isInitialized() ? 0 : max17048Sensor.runOnce();
|
||||
if (ads1x15Sensor.hasSensor())
|
||||
result = ads1x15Sensor.isInitialized() ? 0 : ads1x15Sensor.runOnce();
|
||||
if (!ads1x15Sensor.hasSensor()) {
|
||||
LOG_INFO("ADS1X15 not found");
|
||||
}
|
||||
}
|
||||
|
||||
// it's possible to have this module enabled, only for displaying values on the screen.
|
||||
@ -215,6 +226,7 @@ bool PowerTelemetryModule::getPowerTelemetry(meshtastic_Telemetry *m)
|
||||
if (max17048Sensor.hasSensor())
|
||||
valid = max17048Sensor.getMetrics(m);
|
||||
if (ads1x15Sensor.hasSensor())
|
||||
LOG_INFO("Getting ADS1X15 sensor");
|
||||
valid = ads1x15Sensor.getMetrics(m);
|
||||
#endif
|
||||
|
||||
|
@ -1,11 +1,11 @@
|
||||
#include "configuration.h"
|
||||
|
||||
#if HAS_TELEMETRY && !MESHTASTIC_EXCLUDE_ENVIRONMENTAL_SENSOR && __has_include(<Adafruit_ADS1015.h>)
|
||||
#if HAS_TELEMETRY && !MESHTASTIC_EXCLUDE_ENVIRONMENTAL_SENSOR && __has_include(<Adafruit_ADS1X15.h>)
|
||||
|
||||
#include "../mesh/generated/meshtastic/telemetry.pb.h"
|
||||
#include "ADS1X15Sensor.h"
|
||||
#include "TelemetrySensor.h"
|
||||
#include <Adafruit_ADS1015.h>
|
||||
#include <Adafruit_ADS1X15.h>
|
||||
|
||||
ADS1X15Sensor::ADS1X15Sensor() : TelemetrySensor(meshtastic_TelemetrySensorType_ADS1X15, "ADS1X15") {}
|
||||
|
||||
@ -23,7 +23,7 @@ int32_t ADS1X15Sensor::runOnce()
|
||||
|
||||
void ADS1X15Sensor::setup() {}
|
||||
|
||||
struct _ADS1X15Measurement ADS1X15Sensor::getMeasurement(ads1x15_ch_t ch)
|
||||
struct _ADS1X15Measurement ADS1X15Sensor::getMeasurement(uint8_t ch)
|
||||
{
|
||||
struct _ADS1X15Measurement measurement;
|
||||
|
||||
@ -32,7 +32,7 @@ struct _ADS1X15Measurement ADS1X15Sensor::getMeasurement(ads1x15_ch_t ch)
|
||||
double voltage_range = 6.144;
|
||||
|
||||
// Get value with full range
|
||||
uint16_t value = ads.readADC_SingleEnded(ch);
|
||||
uint16_t value = ads1x15.readADC_SingleEnded(ch);
|
||||
|
||||
// Dynamic gain, to increase resolution of low voltage values
|
||||
// If value is under 4.096v increase the gain depending on voltage
|
||||
@ -72,8 +72,7 @@ struct _ADS1X15Measurement ADS1X15Sensor::getMeasurement(ads1x15_ch_t ch)
|
||||
value = ads1x15.readADC_SingleEnded(ch);
|
||||
}
|
||||
|
||||
reading = (float)value / 32768 * voltage_range;
|
||||
measurement.voltage = reading;
|
||||
measurement.voltage = (float)value / 32768 * voltage_range;
|
||||
|
||||
return measurement;
|
||||
}
|
||||
@ -84,7 +83,7 @@ struct _ADS1X15Measurements ADS1X15Sensor::getMeasurements()
|
||||
|
||||
// ADS1X15 has 4 channels starting from 0
|
||||
for (int i = 0; i < 4; i++) {
|
||||
measurements.measurements[i] = getMeasurement((ads1x15_ch_t)i);
|
||||
measurements.measurements[i] = getMeasurement(i);
|
||||
}
|
||||
|
||||
return measurements;
|
||||
|
@ -1,16 +1,21 @@
|
||||
#include "configuration.h"
|
||||
|
||||
#if HAS_TELEMETRY && !MESHTASTIC_EXCLUDE_ENVIRONMENTAL_SENSOR && __has_include(<Adafruit_ADS1015.h>)
|
||||
#if HAS_TELEMETRY && !MESHTASTIC_EXCLUDE_ENVIRONMENTAL_SENSOR && __has_include(<Adafruit_ADS1X15.h>)
|
||||
|
||||
#include "../mesh/generated/meshtastic/telemetry.pb.h"
|
||||
#include "TelemetrySensor.h"
|
||||
#include "VoltageSensor.h"
|
||||
#include <Adafruit_ADS1015.h>
|
||||
#include <Adafruit_ADS1X15.h>
|
||||
|
||||
class ADS1X15Sensor : public TelemetrySensor, VoltageSensor
|
||||
class ADS1X15Sensor : public TelemetrySensor
|
||||
{
|
||||
private:
|
||||
Adafruit_ADS1015 ads1x15;
|
||||
Adafruit_ADS1X15 ads1x15;
|
||||
|
||||
// get a single measurement for a channel
|
||||
struct _ADS1X15Measurement getMeasurement(uint8_t ch);
|
||||
|
||||
// get all measurements for all channels
|
||||
struct _ADS1X15Measurements getMeasurements();
|
||||
|
||||
protected:
|
||||
virtual void setup() override;
|
||||
@ -21,4 +26,13 @@ class ADS1X15Sensor : public TelemetrySensor, VoltageSensor
|
||||
virtual bool getMetrics(meshtastic_Telemetry *measurement) override;
|
||||
};
|
||||
|
||||
struct _ADS1X15Measurement {
|
||||
float voltage;
|
||||
};
|
||||
|
||||
struct _ADS1X15Measurements {
|
||||
// ADS1X15 has 4 channels
|
||||
struct _ADS1X15Measurement measurements[4];
|
||||
};
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue
Block a user