Buenas a todos. Antes de irme de vacaciones tenía un código cargado en mi arduino para detectar presencia y a la vuelta de las vacaciones resulta que ya no funciona, os pongo el código y el resultado que me muestra.
#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();
// Pin real rf (D10)
// Pin real pir (D7)
//VARS
//El tiempo que nos da el sensor a calibrar (10-60 segundos de acuerdo con la hoja de datos)
int calibrationTime = 10;
//El tiempo cuando el sensor emite un impulso de baja
long unsigned int lowIn;
//La cantidad de milisegundos el sensor tiene que ser bajo
//Antes de que asuma todo el movimiento se ha detenido
long unsigned int pause = 5000;
boolean lockLow = true;
boolean takeLowTime;
int pirPin = 7; //pin digital conectado a la salida del sensor PIR
//int ledPin = 8;
/////////////////////////////
//SETUP
void setup(){
Serial.begin(9600);
pinMode(pirPin, INPUT);
// pinMode(ledPin, OUTPUT);
digitalWrite(pirPin, LOW);
//Dar el sensor de un cierto tiempo para calibrar
Serial.print(" calibrando sensor ");
for(int i = 0; i < calibrationTime; i++){
Serial.print(".");
delay(1000);
}
Serial.println(" hecho");
Serial.println("SENSOR ACTIVADO");
delay(50);
mySwitch.enableTransmit(10);
}
////////////////////////////
//LOOP
void loop(){
if(digitalRead(pirPin) == HIGH){
//digitalWrite(ledPin, HIGH); //LED visualiza el estado de la salida del sensor
if(lockLow){
//Se asegura de que esperar a que la transición a la baja antes de cualquier salida se hace otra:
lockLow = false;
Serial.println("---");
Serial.print("movimiento encontrado a los ");
Serial.print(millis()/1000);
Serial.println(" segundos ");
mySwitch.send(3131, 24);
delay(50);
}
takeLowTime = true;
}
if(digitalRead(pirPin) == LOW){
//digitalWrite(ledPin, LOW); //LED visualiza el estado de la salida del sensor
if(takeLowTime){
lowIn = millis(); // guardar el momento de la transición de alta a baja
takeLowTime = false; // asegurarse de que esto sólo se hace al comienzo de una fase de baja
}
//Si el sensor es baja para más de la pausa dada,
//Asumimos que el movimiento no más que va a pasar
if(!lockLow && millis() - lowIn > pause){
//Se asegura de este bloque de código sólo se ejecuta de nuevo después de
//Una secuencia de movimiento se ha detectado nuevo
lockLow = true;
Serial.print("movimiento detenido a los ");
Serial.print((millis() - pause)/1000);
Serial.println(" segundos ");
mySwitch.send(9494, 24);
delay(50);
}
}
}
Y el resultado que me muestra el monitor es el siguiente:
calibrando sensor .......... hecho
SENSOR ACTIVADO
---
movimiento encontrado a los 10 segundos
Ahora por mucho que pase la mano por delante del sensor el estado no cambia, he probado con otro sensor de presencia nuevo y pasa lo mismo. También he probado con otro código y mas de lo mismo. Esto me pasa en un arduino nano, he probado en otro arduino nano que tenía sin usar y mas de lo mismo ¿es posible que se hayan estropeado los dos arduinos solo sin mas?