--- /dev/null
- pinMode(9, OUTPUT);
+ /*
+ Calibration
+
+ Demonstrates one technique 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 minimum and maximum initial values may seem backwards.
+ Initially, you set the minimum high and listen for anything
+ lower, saving it as the new minimum. 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 30 Aug 2011
+ By Tom Igoe
+
+ http://arduino.cc/en/Tutorial/Calibration
+
+ This example code is in the public domain.
+
+ */
+
+ // These constants won't change:
+ const int sensorPin = A0; // 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);
+
- sensorValue = map(sensorValue, sensorMin, sensorMax, 0, 254);
+ // 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;
+ }
+ delay(5); // Let the sensor rest a bit and stabilize
+ }
+
+ // 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);
+ }
+ /*
+ Domande:
+ 1. Modificare lo sketch in modo che modifichi la luminosita' di un led
+ via PWM tramite il valore letto dal sensore.
+ 2. Come fare per costringere la variabile dentro un intervallo stabilito?
+ */
+