Se trata de un proyecto muy sencillo que usa un Arduino, una pantalla LCD 16X2 i2C y un diodo rectificador común de silicio encapsulado de resina como por ejemplo 1N4007 el cual hay que romper el encapsulado para dejar expuesto el silicio a la luz y usarlo como un pequeño panel solar para que sirva de sensor de luz.
El software tiene un algoritmo sencillo para estabilizar las lecturas, al iniciarlo captura la intensidad de luz máxima a pleno sol y mínima a la sombra y a partir de entonces queda calibrado para medir el porcentaje de sombra. hay que calibrarlo cada vez que se inicia exponiéndolo al sol directo y a la sombra.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2); //
void setup() {
Serial.begin(9600);
// Inicializar el LCD
lcd.init();
//Encender la luz de fondo.
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("BY Yeti-Lab");
delay(1000);
lcd.clear();
}
void loop() {
uint16_t sombra, sol, lectura, L;
lectura=512;
for(int i=0;i<512;i++){
L=analogRead(0);
if(L>lectura)lectura++;
else if(L<lectura)lectura--;
}
sombra=lectura;
sol=lectura+1;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Nivel de sombra");
uint8_t buff=0;
while(true){
buff= constrain(map(lectura,sombra,sol,0,100),0,100);
lcd.setCursor(0,1);
lcd.print("R");
if(100-buff<10)lcd.print(" ");
if(100-buff<100)lcd.print(100-buff);
else lcd.print("99");
lcd.print(char(37)); // caracter del porcentaje
buff= constrain(map(lectura,0,sol,0,100),0,100);
lcd.setCursor(8,1);
lcd.print("T");
if(100-buff<10)lcd.print(" ");
if(100-buff<100)lcd.print(100-buff);
else lcd.print("99");
lcd.print(char(37)); // caracter del porcentaje
for(int i=0;i<200;i++){
L=analogRead(0);
if(L>lectura)lectura++;
else if(L<lectura)lectura--;
delay(1);
}
if(lectura>sol) sol=lectura;
if(lectura<sombra) sombra=lectura;
}
}
Comentarios
Publicar un comentario