Posts Tagged ‘Sensor’

Sensor de Apertura de Frigorifico & Open Refrigerator Sensor

Hoy les traigo el ultimo artilugio que se me ha ocurrido, ya que ayer mi mujer ha retado a mi niƱa por dejar la puerta abierta de la nevera, y se me paso por la cabeza “porque nadie ha hecho algo tan practico como un avisador de puerta abierta?” quizas ya lo hay pero la version de frigo que tengo doy gracias que aun enfria… šŸ™‚

Y basicamente el cacharro es esto:

un sensor de luz que detecta y promedia el primer valor que coje, y lo guarda como referencia, entonces cuando abrimos la puerta detecta que la incidencia de luz es mayor y comienza el juego, dejando un tiempo prudencial de espera (en este caso 10 segundos me pareciĆ³ correcto) si la puerta no se ha cerrado dispara una alarma sonora Ā hasta que dicha puerta no es cerrada, comenzando nuevamente el ciclo.

algo basico pero que no tengo entendido que existiese.

aqui os dejo unas fotos, videos y el cĆ³digo, no he pensado poner el circuito ya que tiene muy poco, creado a partir del 18f2550, y con un buzz conectado al sensor 12 y un LDR en el 13… no tiene mas que eso.

 

 

El codigo:

[sourcecode language=”py”]
// Alarma de Nevera
// Walter LĆ³pez Pascual (Walii & Walterleonardo) 2011 walii.es

int led1,LDR,MLDR,valor,ovalor; // Values like integers ( Pin )
int mldr[]; // Array for measures
int debug=0; // Only with debug "1" weĀ“ll see printed values in serial
int wait=10000; // Time to wait before BUZZ in MS

promedioldr ()
{
int i;
MLDR=0;
for (i=0;i<9;i++){
mldr[i]=analogRead(LDR);
MLDR=MLDR+mldr[i];
}
MLDR=MLDR/10;
return MLDR;
}

void setup()
{
led1=11; // led 1 is connected on pin 1
LDR=13;
pinMode(led1,OUTPUT); // BUZZ & LED
ovalor=promedioldr(); // Capture initial value to measure
Serial.begin(9600);
}

void encenderledbuzz () //BUZZ & LED active action
{
digitalWrite(led1,HIGH);
delay(250);
digitalWrite(led1,LOW);
delay(250);
}

void esperar () //wait time before BUZZ
{
if (debug==1){
delay(wait/10);
Serial.printf("Wait…\r\n");
delay(wait/10);
Serial.printf("Wait…\r\n");
delay(wait/10);
Serial.printf("Wait…\r\n");
delay(wait/10);
Serial.printf("Wait…\r\n");
delay(wait/10);
Serial.printf("Wait…\r\n");
delay(wait/10);
Serial.printf("Wait…\r\n");
delay(wait/10);
Serial.printf("Wait…\r\n");
delay(wait/10);
Serial.printf("Wait…\r\n");
delay(wait/10);
Serial.printf("Wait…BUZZ\r\n");
}
else delay(wait);
}

void loop()
{
valor=promedioldr();
if (valor>=ovalor+100){
esperar();
while (analogRead(LDR)>=ovalor+100){
encenderledbuzz();
if (debug==1) Serial.printf("Analog Value = %d \r\n", analogRead(LDR));
}
}
if (debug==1) Serial.printf("Actual LDR value= %d / Previous LDR value= %u\r\n", valor, ovalor);
digitalWrite(led1,LOW);
}
[/sourcecode]

Facebook Like Add
Google PLUS ONE
De donde me visitan
Publicidad
Calendario de Posts
May 2018
M T W T F S S
« Nov    
 123456
78910111213
14151617181920
21222324252627
28293031