Skip to content

Instantly share code, notes, and snippets.

@shfitz
Last active November 11, 2020 20:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save shfitz/c12e2e895574790c3fda152fc2587f9c to your computer and use it in GitHub Desktop.
Save shfitz/c12e2e895574790c3fda152fc2587f9c to your computer and use it in GitHub Desktop.
// These constants won't change:
const int sensorPin = A7; // pin that the sensor is attached to
const int ledPin = 2; // 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() {
// open the serial port for communication
Serial.begin(9600);
while(!Serial){
;; // do nothing until the serial port opens
}
Serial.println("calibrating ......");
// turn on LED to signal the start of the calibration period:
pinMode(13, OUTPUT);
digitalWrite(13, HIGH);
// calibrate during the first ten seconds
while (millis() < 10000) {
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);
// print out some diagnostics to the serial monitor
Serial.print("sensorMin: ");
Serial.print(sensorMin);
Serial.print(", sensorMax: ");
Serial.println(sensorMax);
}
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);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment