I have a pump project I am trying to automate them using arduino mega 2560.
I have 5 pumps and 2 UV systems to control and I have 3 ultra sonic sensors (Hc-Sr04) and 4 1000 gallon water tanks.
the sensors are already installed to each tank, In one area I have the tanks parallel so only 1 tank in that area has a sensor.
The code I wrote seems to only be reading 1 sensor and its fluctuating with a wide range I have it set to iches and I have a fluctuation of 19 to 89 inches displaying on my serial print.
due to limited materials now I have 3 pumps in one area that Ill just use 1 contactor to control all 3 pumps for now. (ozone pumps) pulling from the river tank to fill the ozone tank.
2 River pumps, 2 UV systems, to one tank with 1 sensor.
2 transfer pumps from ozone tank to filling area tanks (2 tanks 1 sensor)
I am not sure if there is an issue with my code but I have a link to it, could someone help me to check for faults.
const int trigPin1=2;
const int echoPin1= 3;
const int trigPin2 =4;
const int echoPin2= 5;
const int trigPin3 =6;
const int echoPin3 =7;
#define sourcepump1 9
#define sourcepump2 10
#define transferpump1 29
#define transferpump2 33
#define ozonepump 11
#define uvlamp1 13
#define uvlamp2 12
long duration;
float distanceInch1;
float distanceInch2;
float distanceInch3;
const int maxDistant = 50;
const int minDistant = 12;
void setup() {
pinMode(trigPin1, OUTPUT);
pinMode(echoPin1, INPUT);
pinMode(trigPin2, OUTPUT);
pinMode(echoPin2, INPUT);
pinMode(trigPin3, OUTPUT);
pinMode(echoPin3, INPUT);
pinMode(uvlamp1, OUTPUT);
pinMode(uvlamp2, OUTPUT);
pinMode(ozonepump, OUTPUT);
pinMode(transferpump1, OUTPUT);
pinMode(transferpump2, OUTPUT);
pinMode(sourcepump1, OUTPUT);
pinMode(sourcepump2, OUTPUT);
}
void loop() {
long duration1, distance1;
digitalWrite(trigPin1, LOW); // Added this line
delayMicroseconds(5); // Added this line
digitalWrite(trigPin1, HIGH);
delayMicroseconds(10); // Added this line
digitalWrite(trigPin1, LOW);
duration1 = pulseIn(echoPin1, HIGH);
distanceInch1 = (duration1/2) / 74;
}
if(distanceInch1 > maxDistant) {
digitalWrite(sourcepump1, HIGH);
digitalWrite(uvlamp1, HIGH);
}
if (distanceInch1 <= minDistant)
{
digitalWrite(sourcepump1, LOW);
digitalWrite(uvlamp1, LOW);
}
if(distanceInch1 > maxDistant)
{
digitalWrite(sourcepump2, HIGH);
digitalWrite(uvlamp2, HIGH);
}
if (distanceInch1 <= minDistant)
{
digitalWrite(sourcepump2, LOW);
digitalWrite(uvlamp2, LOW);
}
long duration2, distance2;
digitalWrite(trigPin2, LOW); // Added this line
delayMicroseconds(5); // Added this line
digitalWrite(trigPin2, HIGH);
delayMicroseconds(10); // Added this line
digitalWrite(trigPin2, LOW);
duration2 = pulseIn(echoPin2, HIGH);
distanceInch2= (duration2/2) / 74;
if(distanceInch2 > maxDistant)
{
digitalWrite(transferpump1, HIGH);
digitalWrite(transferpump2, HIGH);
}
if (distanceInch2 <= minDistant)
{
digitalWrite(transferpump1, LOW);
digitalWrite(transferpump2, LOW);
}
long duration3, distance3;
digitalWrite(trigPin3, LOW); // Added this line
delayMicroseconds(5); // Added this line
digitalWrite(trigPin3, HIGH);
delayMicroseconds(10); // Added this line
digitalWrite(trigPin3, LOW);
duration3 = pulseIn(echoPin3, HIGH);
distanceInch3= (duration3/2) / 74;
if (distanceInch3 > maxDistant){
digitalWrite(ozonepump, HIGH);}
if (distanceInch3 <= minDistant) {
digitalWrite(ozonepump, LOW);
}
