// MIN_MED_MAX - reads analog pin
// - shows current count, reading, minimum, median, maximum, deadband-low, deadband-high
// 1. Connect potentiometer to PIN_TO_BE_READ
// 2. Turn potentiometer counter-clockwise close to one of three values: 256, 512, 768
// 3. Start sketch
// 4. Read "dbr" for size of deadband range
// 5. Read "dbrlo" for lowest value of deadband range
// 6. Read "dbrhi" for highest value of deadband range
// 7. Move potentiometer to next value (256, 512, 768)
// 8. Deadband may vary depending on potentiometer value.
#define PIN_TO_BE_READ A0
int count, reading, readingMin = 1023, readingMed, readingMax = 0, deadband;
unsigned long timer, timeout = 200; // event timing
void setup() {
Serial.begin(115200);
randomSeed(analogRead(PIN_TO_BE_READ));
}
void loop() {
if (millis() - timer > timeout) { // check for event timeout
timer = millis(); // reset timer
reading = analogRead(PIN_TO_BE_READ); // read a pin
if (reading < readingMin)
readingMin = reading;
if (reading > readingMax)
readingMax = reading;
readingMed = (readingMin + readingMax ) / 2; // simple average
deadband = readingMax - readingMin;
// printing();
padding(count++, "Count = ");
padding(reading, " | read = ");
padding(readingMin, " | min=");
padding(readingMed, " | med=");
padding(readingMax, " | max=");
padding(deadband, " | dbr=");
padding((1024 / 2) - (deadband / 2), " | dbrlo >");
padding((1024 / 2) + (deadband / 2), " | dbrhi <");
Serial.println();
}
}
void padding(int value, char text[]) {
Serial.print(text);
if (value < 1000) Serial.print(" ");
if (value < 100) Serial.print(" ");
if (value < 10) Serial.print(" ");
Serial.print(value);
}