#pragma once // Device Libraries #include #include #include #include // 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()); }