Hello, I am trying to do this logic:
If HC-SR04 1 detects distance lower than 15cm and HC-SR04 2 distance is greater than 10cm, turn on and off relay 1 and disable relay 2 ( and keep looping this ON and OFF )
If HC-SR04 2 detects distance lower than 10cm and HC-SR04 1 distance is greater than 10cm turn on and off ( in loop ) relay 2 and disable relay 1( and keep looping this ON and OFF until the condiotion for logic 1 returns )
but I'm having crazy returns in the relay and distance reading.
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);//(rs,e,d4,d5,d6,d7)
const int TRIG_PIN = 9; // Arduino pin connected to Ultrasonic Sensor's TRIG pin
const int ECHO_PIN = 8; // Arduino pin connected to Ultrasonic Sensor's ECHO pin
const int RELAY_PIN1 = 13; // Arduino pin connected to Relay's pin
const int DISTANCE_THRESHOLD = 50; // centimeters
const int RELAY_PIN2 = 10;
#define tmpliga 2000
#define tmpdesliga 2000
const int btrigPin = 7; //sensor B
const int bechoPin = 6; //sensor B
// variables will change:
float duration_us, distance_cm;
void setup() {
Serial.begin (9600);
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print("test");
delay(5000);
lcd.clear();
// initialize serial port
pinMode(TRIG_PIN, OUTPUT); // set arduino pin to output mode
pinMode(ECHO_PIN, INPUT); // set arduino pin to input mode
pinMode(btrigPin, OUTPUT);
pinMode(bechoPin, INPUT);
pinMode(RELAY_PIN1, OUTPUT);
pinMode(RELAY_PIN2, OUTPUT);
digitalWrite(RELAY_PIN1, HIGH);
digitalWrite(RELAY_PIN2, HIGH);
}
void loop() {
int duration_usB, distance_cmB;
digitalWrite(btrigPin, HIGH);
delayMicroseconds(10);
digitalWrite(btrigPin, LOW);
duration_usB = pulseIn( bechoPin, HIGH);
distance_cmB = 0.017 * duration_usB;
int duration_us; distance_cm;
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
duration_us = pulseIn(ECHO_PIN, HIGH);
distance_cm = 0.017 * duration_us;
// generate 10-microsecond pulse to TRIG pin
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
digitalWrite(btrigPin, HIGH);
delayMicroseconds(10);
digitalWrite(btrigPin, LOW);
if((distance_cm <=15) && (distance_cmB>=10));
{
digitalWrite(RELAY_PIN2, LOW);
digitalWrite(RELAY_PIN1, HIGH); // turn on Relay
delay(tmpliga);
digitalWrite(RELAY_PIN1,LOW);
digitalWrite(RELAY_PIN2, LOW);
delay(tmpdesliga);
if((distance_cm >=15) &&(distance_cmB <10));
digitalWrite(RELAY_PIN1, LOW);
digitalWrite(RELAY_PIN2, HIGH); // turn on Relay
delay(tmpliga);
digitalWrite(RELAY_PIN2,LOW);
delay(tmpdesliga);}
//while(distance_cmB <=10) {
// digitalWrite(RELAY_PIN1, LOW);
// turn off Relay
//if (distance_cmB <=5 )
//{
// digitalWrite(RELAY_PIN1,LOW);
//digitalWrite(RELAY_PIN2, HIGH); // turn on Relay
// delay(tmpliga);
// digitalWrite(RELAY_PIN2,LOW);
// delay(tmpdesliga);}
// print the value to Serial Monitor
Serial.print("distance: ");
Serial.print(distance_cm);
Serial.println(" cm");
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Tanque2:");
lcd.print(distance_cm);
lcd.setCursor(0, 1);
lcd.print("Tanque1:");
lcd.print(distance_cmB);
delay(500);
}