diff options
| author | Federico Fissore <f.fissore@arduino.cc> | 2013-01-28 11:37:51 +0100 | 
|---|---|---|
| committer | Federico Fissore <f.fissore@arduino.cc> | 2013-01-28 11:37:51 +0100 | 
| commit | 5c67c7e5c674a572dd99e9d0d8c19c718c9985bc (patch) | |
| tree | 1f22ba2385ad22eca306d67793c0827451f2b50a /libraries/Esplora/Beginners/EsploraLightCalibrator | |
| parent | c453e0a32e7adf5e7bab7bfb7c8f7a21e30ca563 (diff) | |
| parent | c6287dd6ac33544179a6544b8f3f55a396ec6608 (diff) | |
Merge branch 'ide-1.5.x' into lib-1.5
Diffstat (limited to 'libraries/Esplora/Beginners/EsploraLightCalibrator')
| -rw-r--r-- | libraries/Esplora/Beginners/EsploraLightCalibrator/EsploraLightCalibrator.ino | 91 | 
1 files changed, 91 insertions, 0 deletions
| diff --git a/libraries/Esplora/Beginners/EsploraLightCalibrator/EsploraLightCalibrator.ino b/libraries/Esplora/Beginners/EsploraLightCalibrator/EsploraLightCalibrator.ino new file mode 100644 index 0000000..c3eaff4 --- /dev/null +++ b/libraries/Esplora/Beginners/EsploraLightCalibrator/EsploraLightCalibrator.ino @@ -0,0 +1,91 @@ +/* +  Esplora Led calibration +  + This  sketch shows you how to read and calibrate the light sensor. + Because light levels vary from one location to another, you need to calibrate the  + sensor for each location. To do this, you read the sensor for a few seconds, + and save the highest and lowest readings as maximum and minimum.   + Then, when you're using the sensor's reading (for example, to set the brightness + of the LED), you map the sensor's reading to a range between the minimum + and the maximum. +  + Created on 22 Dec 2012 + by Tom Igoe +  + This example is in the public domain. + */ + +#include <Esplora.h> + +// variables: +int lightMin = 1023;        // minimum sensor value +int lightMax = 0;           // maximum sensor value +boolean calibrated = false;  // whether the sensor's been calibrated yet + +void setup() { +  // initialize the serial communication: +  Serial.begin(9600); + +  // print an intial message +  Serial.println("To calibrate the light sensor, press and hold Switch 1"); +} + +void loop() { +  // if switch 1 is pressed, go to the calibration function again: +  if (Esplora.readButton(1) == LOW) { +    calibrate(); +  } +  // read the sensor into a variable: +  int light = Esplora.readLightSensor(); + +  // map the light level to a brightness level for the LED +  // using the calibration min and max: +  int brightness = map(light, lightMin, lightMax, 0, 255); +  // limit the brightness to a range from 0 to 255: +  brightness = constrain(brightness, 0, 255); +  // write the brightness to the blue LED.  +  Esplora.writeBlue(brightness); +   +  // if the calibration's been done, show the sensor and brightness +  // levels in the serial monitor: +  if (calibrated == true) { +    // print the light sensor levels and the LED levels (to see what's going on): +    Serial.print("light sensor level: "); +    Serial.print(light); +    Serial.print(" blue brightness: "); +    Serial.println(brightness); +  } +  // add a delay to keep the LED from flickering: +  delay(10);  +} + +void calibrate() { +  // tell the user what do to using the serial monitor: +  Serial.println("While holding switch 1, shine a light on the light sensor, then cover it."); + +  // calibrate while switch 1 is pressed: +  while(Esplora.readButton(1) == LOW) { +    // read the sensor value:  +    int light  = Esplora.readLightSensor(); + +    // record the maximum sensor value: +    if (light > lightMax) { +      lightMax = light; +    } + +    // record the minimum sensor value: +    if (light < lightMin) { +      lightMin = light; +    } +    // note that you're calibrated, for future reference: +    calibrated = true; +  } +} + + + + + + + + | 
