I wrote some codes no matter which way I arrange them its not working the correct way.
I programmed a mega to turn on 7 relays on a 8 channel relay board but when the relays are to be on they are off instead and vice versa.
here is the code
const int trigPin1 = 2;
const int echoPin1 = 3;
const int trigPin2 = 4;
const int echoPin2 = 5;
const int trigPin3 = 6;
const int echoPin3 = 7;
int sourcepump1 = 9;
int sourcepump2 = 10;
int transferpump1 = 29;
int transferpump2 = 33;
int ozonepump = 11;
int uvlamp1 = 13;
int uvlamp2 = 12;
int distanceInch1;
int distanceInch2;
int distanceInch3;
//int maxDistant = 88;
//int minDistant = 12;
int threshhold = 12;
int delayprint = 1500;
void setup() {
Serial.begin(115200);
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;
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;
Serial.print("ozone tank ");
Serial.println(distanceInch1);
delay(delayprint);
if (distanceInch1 > threshhold) {
digitalWrite(sourcepump1, HIGH);
digitalWrite(uvlamp1, HIGH);
digitalWrite(sourcepump2, HIGH);
digitalWrite(uvlamp2, HIGH);
}
else
{
digitalWrite(sourcepump1, LOW);
digitalWrite(uvlamp1, LOW);
digitalWrite(sourcepump2, LOW);
digitalWrite(uvlamp2, LOW);
}
long duration2;
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;
Serial.print("pre treatment tank ");
Serial.println(distanceInch2);
delay(delayprint);
if (distanceInch2 > threshhold) {
digitalWrite(ozonepump, HIGH);
}
else {
digitalWrite(ozonepump, LOW);
}
long duration3;
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;
Serial.print("Filling tank ");
Serial.println(distanceInch3);
delay(delayprint);
if (distanceInch3 > threshhold)
{
digitalWrite(transferpump1, HIGH);
digitalWrite(transferpump2, HIGH);
}
else
{
digitalWrite(transferpump1, LOW);
digitalWrite(transferpump2, LOW);
}
}
When I read from the serial monitor the reading from all 3 sensors are above 20, 1 gives 20, the other 42, and the other 86 but yet all relays are off.
What could be casuing this?