void setup() {
Serial.begin(115200);
Serial.println("Piecewise Linear Approximations for Sensor");
}
void loop() {
static int pre_adc = -1; // Initialize to invalid value to force first print
int adc_value = analogRead(36);
// Only update if ADC value changes (noise filtering)
if (adc_value != pre_adc) {
pre_adc = adc_value;
// Convert ADC to voltage
float v_adc = 3.3 * adc_value / 4095;
float v_sensor = 0;
// Piecewise linear approximation
if (v_adc <= 0.5)
v_sensor = 20.0 * v_adc;
else if (v_adc <= 2.5)
v_sensor = 2.0 * v_adc + 9.0;
else
v_sensor = 5.6 * v_adc + 7.75;
Serial.printf("V_sensor=%.3fV, V_adc=%.3fV\n", v_sensor, v_adc);
}
delay(10);
}