Buenas estimados. Paso a comentarles mi proyecto.
Tengo una bomba de agua que por la baja presión de agua no anda el automatico, asi que hice que un sensor avise al Arduino que encienda el rele que alimenta la bomba (que manualmente siempre esta encendida al enchufar el cable a la corriente) para asi tener agua. Entonces, me encontré con algo que no entiendo, si revisan mi código, de alguna manera el programa se activa solo siendo que no hay nadie ni nada frente al sensor... observen la captura de pantalla que adjunto..
int RELE_PIN = 2;
int TRIGGER_PIN = 5;
int ECHO_PIN = 6;
int LED_PIN = 8;
int contMax = 0;
int contMin = 0;
unsigned long timeTeapot = 19000;
unsigned long timeWash = 60000;
unsigned long timeWashingMachine = 240000;
boolean stateHand = false;
boolean stateMachine = false;
unsigned long lastTime;
unsigned long timeOff;
unsigned long timeWait;
void setup() {
pinMode(RELE_PIN, OUTPUT);
pinMode(TRIGGER_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(LED_PIN, OUTPUT);
Serial.begin(9600);
}
void loop() {
Serial.println(obtenerDistancia());
delay(200);
if (obtenerDistancia() > 0 && obtenerDistancia() <= 20 && stateHand == false) {
digitalWrite(LED_PIN, HIGH);
digitalWrite(RELE_PIN, HIGH);
timeWait = millis() + 10000;
lastTime = millis();
stateHand = true;
Serial.println("PROGRAMA ACTIVADO......");
delay(200);
}
if (millis() - lastTime < 2900 && stateMachine == false && stateHand == true){
if (obtenerDistancia() >= 20){
contMax++;
}else {
contMin++;}
}
if (millis() - lastTime >= 2900 && millis() - lastTime <= 3100 && stateMachine == false && stateHand == true){
if (contMax > contMin){
timeOff = millis() + timeTeapot;
stateMachine = true;
}else {
contMax = 0;
contMin = 0;}
}
if (millis() - lastTime > 3100 && millis() - lastTime < 5900 && stateMachine == false && stateHand == true){
if (obtenerDistancia() >= 20){
contMax++;
}else {
contMin++;}
}
if (millis() - lastTime >= 5900 && millis() - lastTime <= 6100 && stateMachine == false && stateHand == true){
if (contMax > contMin){
timeOff = millis() + timeWash;
stateMachine = true;
}else {
contMax = 0;
contMin = 0;}
}
if (millis() - lastTime > 6100 && stateMachine == false && stateHand == true){
if (obtenerDistancia() >= 20){
contMax++;
}else {
contMin++;}
}
if (millis() - lastTime >= 7500 && millis() - lastTime <= 7700 && stateMachine == false && stateHand == true){
timeOff = millis() + timeWashingMachine;
stateMachine = true;
}
if (timeWait < millis()){
if (timeOff <= millis()){
digitalWrite(LED_PIN, LOW);
digitalWrite(RELE_PIN, LOW);
stateMachine = false;
stateHand = false;
contMax = 0;
contMin = 0;
}else if (obtenerDistancia() <= 20){
digitalWrite(LED_PIN, LOW);
digitalWrite(RELE_PIN, LOW);
timeWait = millis() + 2000;
timeOff = millis();}
}
}
float obtenerDistancia(){
digitalWrite(TRIGGER_PIN, HIGH);
delay(1);
digitalWrite(TRIGGER_PIN, LOW);
int DUR = pulseIn(ECHO_PIN, HIGH);
return DUR / 58.2;
}
A que se debe esto?. Lo ultimo que hice fue imprimir en 3D una carcasa para el sensor pero este esta zumbando a muy bajito volumen dentro de la carcasa, antes cuando no la tenia no sonaba asi, a lo mejor eso tiene que ver nose necesito ideas.