1 de maig 2015

Il·luminació analògica

El nivell d'il·luminació artificial (intensitat de sortida leds) ha de ser inversament proporcional al nivell de llum ambiental (lectura sensor).
És a dir: quanta més llum capti el sensor, menys intensitat de llum han de tenir els LEDs: la relació entre tots dos paràmetres ha de ser inversament proporcional.



Definició de valors al programa:
int bombetes = 9; // pin de connexió leds (ha de ser PWM)
int sensor_llum = A4 // pin de connexió sensor (ha de ser analògic)

Comprobem el funcionament dels LEDs:
Fem un blink al pin 9 per comprobar que aquest és el pin correcte i/o les connexions.

Comprobem els valors del sensor de llum per decidir els llindars:
void setup()
{
  Serial.begin(9600); // inici de la comunicació sèrie
}

void loop()
{
  int lectura=analogRead(sensor_llum);
  Serial.println(lectura); // monitorització de les dades del sensor
  delay(100); // petita pausa entre bucles (lectures)
}
Idea de programació:

El nivell d'il·luminació artificial (entre 0 i 255) ha de ser inversament proporcional al nivell de llum ambiental (entre 0 i 1023).
És a dir: analogWrite (bombetes) ha de ser inversament proporcional a analogRead (sensor_llum)

Al void loop cal crear dues variables:
int entradallum = analogRead (sensor_llum)  
// per guardar la lectura del sensor en cada execució
int sortidallum = analogWrite (bombetes) 
// per assignar el valor de la sortida pel pin dels leds
 
Programa bàsic
El valor de sortidallum ha de ser:
sortidallum = map (entradallum,0,1023,255,0);
al valor mínim del sensor (0) li ha de correspondre el valor màxim de l'actuador (255)
al valor màxim del sensor (1023) li ha de correspondre el valor mínim de l'actuador (0)

Programa millorat
Proposo el següent:

Cal definir dos llindars:
int dia = 800;  //valor sensor a partir del que es començaran a encendre els leds
int nit = 200;  // valor sensor per sota del qual la il·luminació dels leds serà màxima

Condició de funcionament:
if (entradallum < dia)
{ sortidallum = 0; }
else 
{ 
  if (entradallum > nit)
  { sortidallum = 255; }
  else 
  {
    sortidallum = map (entradallum,nit,dia,255,0); 
  }
}

Cap comentari:

Publica un comentari a l'entrada