void setup() {
Serial.begin(115200);
analogReadResolution(12); // Set ADC to 12-bit resolution (0-4095)
}
void loop() {
int rawADC = analogRead(36); // Read from GPIO 36 (ADC1_CH0)
float V_adc = 3.3 * rawADC / 4095.0; // Convert to voltage (0-3.3V)
float V_sensor;
// Piecewise linear transfer function
if (V_adc <= 0.5) {
V_sensor = 20 * V_adc; // Low-range
}
else if (V_adc <= 2.5) {
V_sensor = 2 * V_adc + 9; // Mid-range
}
else {
V_sensor = 5.6 * V_adc + 7.75; // High-range
}
// Print results
Serial.printf("V_adc: %.2fV → V_sensor: %.2fV\n", V_adc, V_sensor);
delay(500);
}