Arduino: modular structure
This commit is contained in:
27
arduino/main/voltage.cpp
Normal file
27
arduino/main/voltage.cpp
Normal file
@@ -0,0 +1,27 @@
|
||||
#include "voltage.h"
|
||||
|
||||
// Pin definitions
|
||||
static const int PIN_VBAT = A0;
|
||||
|
||||
// Voltage divider constants
|
||||
// Divider: 100k upper (to Vin), 47k lower (to GND)
|
||||
// Vout = Vin * (47k / (100k + 47k)) = Vin * 0.3197
|
||||
// At 12V: ADC sees 3.84V | At 14.4V: ADC sees 4.60V
|
||||
static const float DIVIDER_RATIO = 47.0 / (100.0 + 47.0); // ~0.3197
|
||||
static const float ADC_REF = 5.0;
|
||||
static const int ADC_MAX = 1023;
|
||||
|
||||
void voltage_init() {
|
||||
// analogRead doesn't need explicit pinMode, but here for future config
|
||||
// e.g., could switch to internal 1.1V reference for different range
|
||||
}
|
||||
|
||||
int voltage_read_raw() {
|
||||
return analogRead(PIN_VBAT);
|
||||
}
|
||||
|
||||
float voltage_read() {
|
||||
int raw = voltage_read_raw();
|
||||
float vDivider = (raw / (float)ADC_MAX) * ADC_REF;
|
||||
return vDivider / DIVIDER_RATIO;
|
||||
}
|
||||
Reference in New Issue
Block a user