1
0
Fork 0
This repository has been archived on 2019-12-23. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
arduinisten/arduino-0022-linux-x64/examples/3.Analog/Calibration/Calibration.pde

76 lines
2 KiB
Text
Raw Normal View History

2010-03-30 20:09:55 +02:00
/*
Calibration
2011-02-23 21:47:18 +01:00
Demonstrates one technique for calibrating sensor input. The
2010-03-30 20:09:55 +02:00
sensor readings during the first five seconds of the sketch
execution define the minimum and maximum of expected values
attached to the sensor pin.
2011-02-23 21:47:18 +01:00
The sensor minimum and maximum initial values may seem backwards.
2010-03-30 20:09:55 +02:00
Initially, you set the minimum high and listen for anything
2011-02-23 21:47:18 +01:00
lower, saving it as the new minimum. Likewise, you set the
2010-03-30 20:09:55 +02:00
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
2011-02-23 21:47:18 +01:00
Modified 4 Sep 2010
2010-03-30 20:09:55 +02:00
By Tom Igoe
http://arduino.cc/en/Tutorial/Calibration
2011-02-23 21:47:18 +01:00
This example code is in the public domain.
2010-03-30 20:09:55 +02:00
*/
// These constants won't change:
2011-02-23 21:47:18 +01:00
const int sensorPin = A0; // pin that the sensor is attached to
2010-03-30 20:09:55 +02:00
const int ledPin = 9; // pin that the LED is attached to
// variables:
int sensorValue = 0; // the sensor value
2011-02-23 21:47:18 +01:00
int sensorMin = 1023; // minimum sensor value
int sensorMax = 0; // maximum sensor value
2010-03-30 20:09:55 +02:00
void setup() {
// 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) {
sensorValue = analogRead(sensorPin);
// record the maximum sensor value
if (sensorValue > sensorMax) {
sensorMax = sensorValue;
}
// record the minimum sensor value
if (sensorValue < sensorMin) {
sensorMin = sensorValue;
}
}
// signal the end of the calibration period
digitalWrite(13, LOW);
}
void loop() {
// read the sensor:
sensorValue = analogRead(sensorPin);
// apply the calibration to the sensor reading
sensorValue = map(sensorValue, sensorMin, sensorMax, 0, 255);
// in case the sensor value is outside the range seen during calibration
sensorValue = constrain(sensorValue, 0, 255);
// fade the LED using the calibrated value:
analogWrite(ledPin, sensorValue);
2011-02-23 21:47:18 +01:00
}