O Tech-Portugal apresenta este artigo para facilitar a vida as leitores que são fãs de Arduino ou Genuinos para instrumentação. Este artigo brinda os interessados a ter o cuidado quando estão a fazer medições físicas, com as placas da Arduino/Genuino. Este cuidado trata-se da calibração de sensores com a placa em questão. E para isso vamos apresentar um exemplo standard. Toda a explicação será apresentada ao longo do código, recorrendo a linhas de comentários.
Antes de apresentar o código, fazemos uma chamada de atenção para a resolução das placas Arduino/Genuino e dos sensores utilizados. Este parâmetro, é um parâmetro crucial para fazer uma óptima aquisição de dados, tipicamente chamados de número de bits.
Um exemplo de aquisição de dados é mostrado abaixo:

Nesta ilustração foi usado um LED ligado no pino 9 (PWM), com uma resistência de 220 ohm em série e uma foto resistência (resistência sensível à intensidade luminosa), ligada em série com uma resistência de 10 K, estando esta ligado à terra-ground.
Esta foto resistência é o sensor, que serve para exemplificar o cuidado de método de calibração.
/*
Calibração de sensores
*/
// Inicialização das variáveis do tipo inteiro dedicadas à leitura do sensor
int sensorValue = 0; // Valor do sensor lido actual
int sensorMin = 1023; // Valor mínimo lido do sensor
int sensorMax = 0; // Valor máximo lido do sensor
int sensorPin = 0 ;
int ledPin = 13;
void setup() {
// Ligar o LED indicador para início do período para a executar a calibração
pinMode(13, OUTPUT);
digitalWrite(13, HIGH);
// Calibrar durante os primeiros cinco segundos: 5000 milisegundos
while (millis() < 5000) {
sensorValue = analogRead(sensorPin);
// Grava o valor máximo do valor lido do sensor
if (sensorValue > sensorMax) {
sensorMax = sensorValue;
}
// Grava o valor mínimo lido do sensor
if (sensorValue < sensorMin) {
sensorMin = sensorValue;
}
}
// Desligar o LED indicador da calibração
digitalWrite(13, LOW);
}
void loop() {
// Ler os valores vindos do sensor
sensorValue = analogRead(sensorPin);
// Aplicar o método de calibração aos valores provenientes do sensor
sensorValue = map(sensorValue, sensorMin, sensorMax, 0, 255);
// Caso os valores do sensor estarem fora da gama de valores definida durante a calibração
sensorValue = constrain(sensorValue, 0, 255);
// Atenuar a intensidade do LED usando os valores de calibrados
analogWrite(ledPin, sensorValue);
}