Hola amigos!
Amigos ocupo su ayuda, tengo un sensor sharp de movimiento el cual quiero que cuando detecto movimiento me encienda un rele, lo que pasa es que ocupo que se encienda un tiempo despues de que el sensor note que hay algo en el rango.
Deje una nota en el time3 que es donde quiero que empiece un timer.
#include <TimerOne.h>
const int pirPin_2 = 3;
volatile long int Time2 = 0;
volatile long int Time3 = 0;
const int RELE = 4;
void setup() {
pinMode(pirPin_2, INPUT);
Serial.begin(9600);
digitalWrite(pirPin_2, LOW);
Serial.print("Calibrating Sensor ");
for (int i = 0; i < calibrationTime; i++) {
Serial.print(".");
delay(1000);
}
Serial.println(" Done");
Serial.println("SENSOR ACTIVE");
delay(10);
Timer1.initialize(1000000);
Timer1.attachInterrupt(Temporizador);
pinMode(RELE, OUTPUT);
}
void Temporizador(void) {
Time++;
//Serial.print("Time 1 = ");
//Serial.println(Time);
Time2++;
Serial.print("Time 2 = ");
Serial.println(Time2);
Time3++;
Serial.print("Time 3 = ");
Serial.println(Time3);
void loop() {
pirState = digitalRead(pirPin_2);
if(digitalRead(pirPin_2) == HIGH){
Serial.println("Sensor Active");
delay(80);
Time2 = 0;
if(Time2 <= 1){
Time3 = 0;
}
if(Time3 == 0){
Time3++; // Quiero que me cuente desde 0 de nuevo. Pero no empieza el contador
}
if(Time3 <= 30){
digitalWrite(RELE, HIGH);
}
}
if(digitalRead(pirPin_2) == LOW){
digitalWrite(RELE, LOW);
}