Hola a todos.
Soy un novatillo en este mundo, y de vez en cuando entro a consultar por aquí.
Tenía un proyecto de un extractor de humedad controlado por un sensor DHT11 de humedad y temperatura, pero me ha fallado y estoy trabajando para sustituirlo por un sensor de presencia mh sr505.
Quería compartirlo con vosotros, y si alguien es tan amable de aportar alguna sugerencia, le estaré muy agradecido
//ESTE PROGRAMA VA A IDENTIFCAR SI HAY UNA PRIMERA DETECCION. A LA SEGUNDA DETECCION, PASADO UN MINUTO, ARRANCARA EL VENTILADOR.
//CONFIGURAR AQUI LAS VARIABLES
int sensor = 11; // PIN donde va conectado el sensor de presencia
int rele = 12; // PIN donde va conectado el rele
//int LEDOK = 6; // LED verde - todo OK //
//int LEDERR = 7; // LED rojo - ERROR //
int vent_on = 0; // Estado del ventilador (1= en marcha ; 0 = parado)
int detectado = 0; // Indica si es la primera deteccion (1= detectado ; 0 = parado)
int activa = 0; // Indica si se debe activar (1= en marcha ; 0 = parado)
long tiempo = 60000; // en milisegundos, el intervalo entre mediciones
int pir = 0; // Valor de lectura del sensor de presencia
void enciende() {
digitalWrite(rele, LOW);
vent_on = 1;
}
void apaga() {
digitalWrite(rele, HIGH);
vent_on = 0;
}
void lee() {
pir = digitalRead(sensor)
return;
}
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(rele, OUTPUT); // Activamos el PIN rele como salida para el rele
pinMode(sensor, INPUT); // Activamos el PIN sensor como entrada para el sensor
//digitalWrite(rele, HIGH); // Desactivamos el rele // ESTO NO DEBE ESTAR COMENTADO ANTES DE SUBIRLO A LA PLACA
detectado = 0;
activa = 0;
pir = 0;
delay(2000);
}
void loop() {
lee(); // Lee el sensor de presencia
// COMIENZAN LAS COMPROBACIONES
if (pir == 0) { // Si el sensor de presencia no detecta nada
detectado = 0; // Indicamos que no ha detectado una primera vez
activa = 0; // Indicamos que no debe activarse el ventilador
}
else if ((detectado == 1) && (pir == 1)) { // Si ha detactado una primera vez, y una segunda
if (vent_on == 1) { // Si el ventilador esta en marcha
// NO HACER NADA
}
else { // Si el ventilador esta parado y se cumple lo anterior
activa = 1; // Ordenamos que se active
}
}
else { // Si ha detectado algo el sensor, pero no ha habido una deteccion previa
detectado = 1; // Indicamos que es la primera deteccion
}
// ACABAMOS LAS COMPROBACIONES Y PASAMOS A CONTROLAR EL VENTILADOR
if ( activa == 1) { // Si hemos decidido activar el ventilador
enciende() ; // Mandamos encender
}
else { // Si no
apaga(); // Mandamos apagar
}
/*Serial.print("PIR=");
Serial.println(pir);
Serial.print("activa=");
Serial.println(activa);
Serial.print("detectado=");
Serial.println(detectado);*/
delay(tiempo);
}
Gracias.
Un saludo