Calibração

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.

Circuito

Sensor analógico (ex.: potenciômetro, sensor de luz) ligado ao pino analógico 2 e um LED no pino digital 9.

Código

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);
}

Share