39 lines
865 B
C
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());
|
|
}
|