Arduino Playground is read-only starting December 31st, 2018. For more info please look at this Forum Post

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