Demonstra uma técnica de se calibrar um sensor. As leituras provenientes do sensor durante os primeiros cinco segundos da execução do esboço abaixo define os valores esperados mínimo e máximo.
Sensor analógico (ex.: potenciômetro, sensor de luz) ligado ao pino analógico 2 e um LED no pino digital 9.
int sensorPin = 2;
int ledPin = 9;
int val = 0;
int sensorMin = 1023, sensorMax = 0;
void setup() {
// sinalize o início do período de calibração
pinMode(13, OUTPUT);
digitalWrite(13, HIGH);
// calibre durante os 5 segundos iniciais
while (millis() < 5000) {
val = analogRead(sensorPin);
// registre o máximo valor do sensor
if (val > sensorMax) {
sensorMax = val;
}
// registre o mínimo do sensor
if (val < sensorMin) {
sensorMin = val;
}
}
// sinalize o fim do período de calibração
digitalWrite(13, LOW);
}
void loop() {
val = analogRead(sensorPin);
// aplique a calibração à leitura no sensor
val = map(val, sensorMin, sensorMax, 0, 255);
// caso o valor esteja fora do intervalo visto durante a calibração
val = constrain(val, 0, 255);
analogWrite(ledPin, val);
}