Files
AstroRotaxMonitor/RotaxMonitor/src/devices.h
Emanuele Trabattoni f84fcfffbb Tasks work in progress
2026-03-25 18:22:02 +01:00

39 lines
865 B
C

#pragma once
// Device Libraries
#include <ADS1256.h>
#include <AD5292.h>
#include <Adafruit_SSD1306.h>
#include <PCA95x5.h>
// ADC Channel mapping
#define PICKUP_IN_A12 SING_0
#define PICKUP_IN_A34 SING_1
#define PICKUP_OUT_A12 SING_2
#define PICKUP_OUT_A34 SING_3
#define PICKUP_IN_B12 SING_4
#define PICKUP_IN_B34 SING_5
#define PICKUP_OUT_B12 SING_6
#define PICKUP_OUT_B34 SING_7
struct Devices {
AD5292* pot;
ADS1256* adc;
Adafruit_SSD1306* lcd;
PCA9555* io;
};
float adcReadChannel(ADS1256* adc, const uint32_t ch){
adc->setMUX(PICKUP_IN_A12);
// scarta 3 conversioni
for (int i = 0; i < 3; i++) {
while (digitalRead(ADC_DRDY));
adc->readSingle();
}
// ora lettura valida a 30kSPS → ~100 µs di settling
while (digitalRead(ADC_DRDY));
return adc->convertToVoltage(adc->readSingle());
}