Hide minor edits - Show changes to markup
This example semonstrates one techinque for calibrating sensor input. The Arduino takes sensor readings for five seconds during the startup, and tracks the highest and lowest values it gets. These sensor readings during the first five seconds of the sketch execution define the minimum and maximum of expected values for the readings taken during the loop.
This example demonstrates one techinque for calibrating sensor input. The Arduino takes sensor readings for five seconds during the startup, and tracks the highest and lowest values it gets. These sensor readings during the first five seconds of the sketch execution define the minimum and maximum of expected values for the readings taken during the loop.
(:source http://arduino.cc/en/pub/code/master/build/shared/examples/3.Analog/Calibration/Calibration.ino lang=arduino tabwidth=4:)
(:source http://arduino.cc/en/pub/code/master/build/shared/examples/03.Analog/Calibration/Calibration.ino lang=arduino tabwidth=4:)
(:source http://arduino.cc/en/pub/code/new-extension/build/shared/examples/3.Analog/Calibration/Calibration.ino lang=arduino tabwidth=4:)
(:source http://arduino.cc/en/pub/code/master/build/shared/examples/3.Analog/Calibration/Calibration.ino lang=arduino tabwidth=4:)
(:source http://arduino.cc/en/pub/code/master/build/shared/examples/3.Analog/Calibration/Calibration.pde lang=arduino tabwidth=4:)
(:source http://arduino.cc/en/pub/code/new-extension/build/shared/examples/3.Analog/Calibration/Calibration.ino lang=arduino tabwidth=4:)
(:source lang=arduino class=code tabwidth=4:)
(:source lang=arduino tabwidth=4:)
(:source lang=arduino tabwidth=4:)
(:source lang=arduino class=code tabwidth=4:)
(:div class=BOM :)
(:divend:)
(:div class=circuit :)
(:divend:)
(:divend:)
(:div class=code :)
(:div class=code :)
(:div class=code :)
Here's the whole program:
Here's the whole program:
// 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;
}
}
// 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;
}
}
This way, any further readings you take can be mapped to the range between this minimum and maximum like so:
This way, any further readings you take can be mapped to the range between this minimum and maximum like so:
Here's the whole program:
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.
This example semonstrates one techinque for calibrating sensor input. The Arduino takes sensor readings for five seconds during the startup, and tracks the highest and lowest values it gets. These sensor readings during the first five seconds of the sketch execution define the minimum and maximum of expected values for the readings taken during the loop.
Before the setup, you set initial values for the minimum and maximum like so:
(:source lang=arduino tabwidth=4:) int sensorMin = 1023; // minimum sensor value int sensorMax = 0; // maximum sensor value (:sourceend:)
These may seem backwards. Initially, you set the minimum high and read for anything lower than that, saving it as the new minimum. Likewise, you set the maximum low and read for anything higher as the new maximum, like so:
(:source lang=arduino tabwidth=4:)
// 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;
}
}
(:sourceend:)
This way, any further readings you take can be mapped to the range between this minimum and maximum like so:
(:source lang=arduino tabwidth=4:) // apply the calibration to the sensor reading sensorValue = map(sensorValue, sensorMin, sensorMax, 0, 255); (:sourceend:)
(:source http://arduino.cc/en/pub/code/master/build/shared/examples/3.Analog/Calibration/Calibration.pde lang=arduino tabwidth=4:)
(:source http://arduino.cc/en/pub/code/master/build/shared/examples/3.Analog/Calibration/Calibration.pde lang=arduino tabwidth=4:)
Connect an LED to digital pin 9 with a 220 ohm current limiting resistor. Connect a photocell to 5V and then to analog pin 0 with a 10K ohm resistor as a reference to ground.
(:divend:)
(:divend:)
(:source http://arduino.cc/en/pub/code/master/build/shared/examples/Analog/Calibration/Calibration.pde lang=arduino tabwidth=4:)
(:source http://arduino.cc/en/pub/code/master/build/shared/examples/3.Analog/Calibration/Calibration.pde lang=arduino tabwidth=4:)
/* 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 */
(:source http://arduino.cc/en/pub/code/master/build/shared/examples/Analog/Calibration/Calibration.pde lang=arduino tabwidth=4:)
// 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
// variables: int sensorValue = 0; // the sensor value int sensorMin = 1023; // minimum sensor value int sensorMax = 0; // maximum sensor value
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); }
image developed using Fritzing. For more circuit examples, see the Fritzing project page
[@ /*
Calibration
(:div class=code :)
/* 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 */
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.
// 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
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.
// variables: int sensorValue = 0; // the sensor value int sensorMin = 1023; // minimum sensor value int sensorMax = 0; // maximum sensor value
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
void setup() { // turn on LED to signal the start of the calibration period: pinMode(13, OUTPUT); digitalWrite(13, HIGH);
http://arduino.cc/en/Tutorial/Calibration
// calibrate during the first five seconds while (millis() < 5000) { sensorValue = analogRead(sensorPin);
*/
// 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
// variables: int sensorMin = 1023; // minimum sensor value int sensorMax = 0; // maximum sensor value
int sensorValue = 0; // the sensor value
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);
} @]
// 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); }
(:divend:)
// variables:
// variables:
const int sensorMin = 1023; // minimum sensor value const int sensorMax = 0; // maximum sensor value
int sensorMin = 1023; // minimum sensor value int sensorMax = 0; // maximum sensor value
int sensorPin = 2; int ledPin = 9;
int val = 0; int sensorMin = 1023, sensorMax = 0;
/*
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
*/
// 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
// signal the start of the calibration period
// turn on LED to signal the start of the calibration period:
val = analogRead(sensorPin);
sensorValue = analogRead(sensorPin);
if (val > sensorMax) {
sensorMax = val;
if (sensorValue > sensorMax) {
sensorMax = sensorValue;
if (val < sensorMin) {
sensorMin = val;
if (sensorValue < sensorMin) {
sensorMin = sensorValue;
val = analogRead(sensorPin);
// read the sensor: sensorValue = analogRead(sensorPin);
val = map(val, sensorMin, sensorMax, 0, 255);
sensorValue = map(sensorValue, sensorMin, sensorMax, 0, 255);
val = constrain(val, 0, 255);
analogWrite(ledPin, val);
sensorValue = constrain(sensorValue, 0, 255);
// fade the LED using the calibrated value: analogWrite(ledPin, sensorValue);
Examples > Analog
Examples > Analog I/O
Examples > Analog
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.
Analog sensor (e.g. potentiometer, light sensor) on analog input 2. LED on digital pin 9.
int sensorPin = 2;
int ledPin = 9;
int val = 0;
int sensorMin = 1023, sensorMax = 0;
void setup() {
// 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);
// record the maximum sensor value
if (val > sensorMax) {
sensorMax = val;
}
// record the minimum sensor value
if (val < sensorMin) {
sensorMin = val;
}
}
// signal the end of the calibration period
digitalWrite(13, LOW);
}
void loop() {
val = analogRead(sensorPin);
// apply the calibration to the sensor reading
val = map(val, sensorMin, sensorMax, 0, 255);
// in case the sensor value is outside the range seen during calibration
val = constrain(val, 0, 255);
analogWrite(ledPin, val);
}