mirror of
https://github.com/arduino/Arduino.git
synced 2025-01-30 19:52:13 +01:00
This commit is contained in:
parent
f886662ea0
commit
7433ef3ea9
@ -1,34 +1,58 @@
|
||||
/*
|
||||
* 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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -37,13 +61,15 @@ void setup() {
|
||||
}
|
||||
|
||||
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);
|
||||
sensorValue = constrain(sensorValue, 0, 255);
|
||||
|
||||
analogWrite(ledPin, val);
|
||||
// fade the LED using the calibrated value:
|
||||
analogWrite(ledPin, sensorValue);
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user