From 7433ef3ea9afe6599a45c72ca4cb3ecd639a5619 Mon Sep 17 00:00:00 2001 From: Tom Igoe Date: Wed, 17 Jun 2009 21:26:32 +0000 Subject: [PATCH] --- .../Analog/Calibration/Calibration.pde | 80 ++++++++++++------- 1 file changed, 53 insertions(+), 27 deletions(-) diff --git a/build/shared/dist/examples/Analog/Calibration/Calibration.pde b/build/shared/dist/examples/Analog/Calibration/Calibration.pde index 29d75798c..8ead5a2fb 100644 --- a/build/shared/dist/examples/Analog/Calibration/Calibration.pde +++ b/build/shared/dist/examples/Analog/Calibration/Calibration.pde @@ -1,49 +1,75 @@ /* - * Calibration - * - * Demonstrates one techinque for calibrating sensor input. The - * sensor readings during the first five seconds of the sketch - * execution define the minimum and maximum of expected values. + Calibration + + Demonstrates one techinque for calibrating sensor input. The + sensor readings during the first five seconds of the sketch + execution define the minimum and maximum of expected values + attached to the sensor pin. + + The sensor minumum and maximum initial values may seem backwards. + Initially, you set the minimum high and listen for anything + lower, saving it as the new minumum. Likewise, you set the + maximum low and listen for anything higher as the new maximum. + + The circuit: + * Analog sensor (potentiometer will do) attached to analog input 0 + * LED attached from digital pin 9 to ground + + created 29 Oct 2008 + By David A Mellis + Modified 17 Jun 2009 + By Tom Igoe + + http://arduino.cc/en/Tutorial/Calibration + */ -int sensorPin = 2; -int ledPin = 9; +// These constants won't change: +const int sensorPin = 2; // pin that the sensor is attached to +const int ledPin = 9; // pin that the LED is attached to + +const int sensorMin = 1023; // minimum sensor value +const int sensorMax = 0; // maximum sensor value + +// variables: +int sensorValue = 0; // the sensor value + -int val = 0; -int sensorMin = 1023, sensorMax = 0; void setup() { - // signal the start of the calibration period + // turn on LED to signal the start of the calibration period: pinMode(13, OUTPUT); digitalWrite(13, HIGH); - + // calibrate during the first five seconds while (millis() < 5000) { - val = analogRead(sensorPin); - + sensorValue = analogRead(sensorPin); + // record the maximum sensor value - if (val > sensorMax) { - sensorMax = val; + if (sensorValue > sensorMax) { + sensorMax = sensorValue; } - + // record the minimum sensor value - if (val < sensorMin) { - sensorMin = val; + if (sensorValue < sensorMin) { + sensorMin = sensorValue; } } - + // signal the end of the calibration period digitalWrite(13, LOW); } void loop() { - val = analogRead(sensorPin); - + // read the sensor: + sensorValue = analogRead(sensorPin); + // apply the calibration to the sensor reading - val = map(val, sensorMin, sensorMax, 0, 255); - + sensorValue = map(sensorValue, sensorMin, sensorMax, 0, 255); + // in case the sensor value is outside the range seen during calibration - val = constrain(val, 0, 255); - - analogWrite(ledPin, val); -} + sensorValue = constrain(sensorValue, 0, 255); + + // fade the LED using the calibrated value: + analogWrite(ledPin, sensorValue); +} \ No newline at end of file