// Input Device Test Code - Potentiometer Throttle Calibration const int SENSOR_PIN = 2; // GPIO2 (ADC1_CH2) // Calibrated raw ADC limits const int CAL_MIN = 620; // Value at rest (0%) const int CAL_MAX = 3470; // Value at full press (100%) // Software low-pass filter variables float filteredValue = 0; const float alpha = 0.2; // Filter coefficient (0.0 to 1.0) void setup() { Serial.begin(115200); analogReadResolution(12); // Configure 12-bit ADC } void loop() { int rawRead = analogRead(SENSOR_PIN); // Apply exponential moving average low-pass filter filteredValue = (alpha * rawRead) + ((1.0 - alpha) * filteredValue); // Constrain the filtered reading within calibrated limits int constrainedRead = constrain((int)filteredValue, CAL_MIN, CAL_MAX); // Map raw values to 0 - 100 percentage int throttlePercent = map(constrainedRead, CAL_MIN, CAL_MAX, 0, 100); Serial.print("Raw:"); Serial.print(rawRead); Serial.print(",Filtered:"); Serial.print(filteredValue); Serial.print(",Throttle_Percent:"); Serial.println(throttlePercent); delay(50); }