this program works when I disconnect the relay before uploading the code and then reconnect them. if i then unplug my arduino uno and then plug it back in it doesn't work, the relays turn on and off all the time. not until I disconnect the relays and then reconnect them does it work. What is wrong?
#define RELAY_PIN 3 // Pin controlling the relay
#define RELAY_PIN1 5 // Pin controlling the relay
#define RELAY_PIN2 7 // Pin controlling the relay
#define MOISTURE_PIN A0 // Analog pin connected to the moisture sensor
#define THRESHOLD 350 // Adjust this value based on your soil conditions
#define MOISTURE_PIN1 A1 // Arduino pin that connects to AOUT pin of moisture sensor
#define THRESHOLD1 400 // Adjust this value based on your soil conditions
#define MOISTURE_PIN2 A2 // Arduino pin that connects to AOUT pin of moisture sensor
#define THRESHOLD2 400 // Adjust this value based on your soil conditions
#define MOISTURE_PINtorr A3 // Arduino pin that connects to AOUT pin of moisture sensor
#define THRESHOLD3 530 // Adjust this value based on your soil conditions
void setup() {
Serial.begin(9600);
pinMode(MOISTURE_PIN, INPUT);
pinMode(MOISTURE_PIN1, INPUT);
pinMode(MOISTURE_PIN2, INPUT);
pinMode(MOISTURE_PINtorr, INPUT);
pinMode(RELAY_PIN, OUTPUT);
pinMode(RELAY_PIN1, OUTPUT);
pinMode(RELAY_PIN2, OUTPUT);
}
void loop() {
int moistureLevel = analogRead(MOISTURE_PIN);
int moistureLevel1 = analogRead(MOISTURE_PIN1);
int moistureLevel2 = analogRead(MOISTURE_PIN2);
int moistureLeveltorr = analogRead(MOISTURE_PINtorr);
if (moistureLevel > THRESHOLD && moistureLeveltorr < THRESHOLD3) {
Serial.println("Soil moisture is DRY => activating pump");
digitalWrite(RELAY_PIN, LOW); // Turn on the pump
// Decide how long the pump should run (e.g., 5-10 seconds)
int pumpRunTime = random(15, 19); // Random time between 5 and 10 seconds
delay(pumpRunTime * 1000); // Convert to milliseconds
digitalWrite(RELAY_PIN, HIGH); // Turn off the pump
Serial.println("Pump turned off.");
}
if (moistureLevel1 > THRESHOLD1 && moistureLeveltorr < THRESHOLD3) {
Serial.println("Soil moisture1 is DRY => activating pump");
digitalWrite(RELAY_PIN1, LOW); // Turn on the pump
// Decide how long the pump should run (e.g., 5-10 seconds)
int pumpRunTime = random(15, 19); // Random time between 5 and 10 seconds
delay(pumpRunTime * 1000); // Convert to milliseconds
digitalWrite(RELAY_PIN1, HIGH); // Turn off the pump
Serial.println("Pump turned off.");
}
if (moistureLevel2 > THRESHOLD2 && moistureLeveltorr < THRESHOLD3) {
Serial.println("Soil moisture2 is DRY => activating pump");
digitalWrite(RELAY_PIN2, LOW); // Turn on the pump
// Decide how long the pump should run (e.g., 5-10 seconds)
int pumpRunTime = random(15, 19); // Random time between 5 and 10 seconds
delay(pumpRunTime * 1000); // Convert to milliseconds
digitalWrite(RELAY_PIN2, HIGH); // Turn off the pump
Serial.println("Pump turned off.");
} else {
Serial.println("Soil moisture is WET => pump deactivated");
digitalWrite(RELAY_PIN, HIGH); // Turn off the pump
Serial.println("Soil moisture1 is WET => pump deactivated");
digitalWrite(RELAY_PIN1, HIGH); // Turn off the pump
Serial.println("Soil moisture2 is WET => pump deactivated");
digitalWrite(RELAY_PIN2, HIGH); // Turn off the pump
}
Serial.print(" (");
Serial.print(moistureLevel);
Serial.println(")");
delay(1000);
Serial.print(" (");
Serial.print(moistureLevel1);
Serial.println(")");
delay(1000);
Serial.print(" (");
Serial.print(moistureLevel2);
Serial.println(")");
delay(1000);
Serial.print(" (");
Serial.print(moistureLeveltorr);
Serial.println(")");
delay(10000); // Wait for a short interval before checking moisture again
}