22 d’oct. 2016

Calibració del sensor de llum

La resposta del sensor de llum depén dels valors ambientals, que en cada lloc i en cada moment poden ser diferents.
Si volem que no sigui així, cal calibrar-lo, és a dir, donar-li uns valors màxim i mínim de referència.
Evidentment, cal calibrar el sensor abans d'executar qualsevol altra cosa en el programa.
Referència: web Arduino

Per a la nostra calibració utilitzarem un Led com indicador: s'encendrà en començar la calibració, i quan s'apagui indicarà que la calibració s'ha realitzat.




Programa de calibració
Es tracta que durant els primers 5 segons de l'execució del programa es llegirà el valor mínim i el valor màxim rebuts del sensor de llum i es desarà cada un en una variable.
Un LED actuarà com indicador de la calibració.


Les variables:

const int sensorPin = A0;    // pin de connexió del sensor
const int ledPin = 13;       // pin de connexió del Led

int sensorValor = 0;         // per desar el valor del sensor
int sensorMin = 1023;        // mínim valor llegit pel sensor
int sensorMax = 0;           // màxim valor llegit pel sensor


En aquest cas no podem utilitzar la instrucció delay, perquè aquesta atura l'execució.
Per establir que l'execució de la calibració s'ha de realitzar durant els primers 5 segons de l'execució, utilitzarem la instrucció millis(); que retorna el temps des del darrer reset de la placa.

El bucle l'establim amb while (mentre) el temps d'execució (millis) sigui menor que 5 segons.
Així doncs, el void setup quedarà:

void setup() 
{
  pinMode(ledPin, OUTPUT);  // configuració del pin digital de connexió del LED
  digitalWrite(ledPin, HIGH);   // encén el LED indicador de calibració

  while (millis() < 5000) // calibra durant els primers 5 segons  
  {
    sensorValor = analogRead(sensorPin);  

    if (sensorValor > sensorMax) 
    { sensorMax = sensorValor; } // registra el valor màxim del sensor
    if (sensorValor < sensorMin) 
    { sensorMin = sensorValor; } // registra el valor mínim del sensor
  }

  digitalWrite(ledPin, LOW); // indica el final de la calibració
}

Ara, ja podem definir al void loop les instruccions que ens interessin.

Cap comentari:

Publica un comentari a l'entrada