From c020a4fc55fdb3cd07ff5776195bfdc536e3175c Mon Sep 17 00:00:00 2001 From: David Kocur <15400011+dkocur@users.noreply.github.com> Date: Sun, 18 Apr 2021 16:25:37 -0500 Subject: [PATCH] Removed redundant code (DRY principal) and made it more readable. --- .../arduino_Watering4/arduino_Watering4.ino | 97 ++++++------------- 1 file changed, 28 insertions(+), 69 deletions(-) diff --git a/4 Channel Relay Plant Watering System and code/arduino_Watering4/arduino_Watering4.ino b/4 Channel Relay Plant Watering System and code/arduino_Watering4/arduino_Watering4.ino index 7419206..a3b61dc 100644 --- a/4 Channel Relay Plant Watering System and code/arduino_Watering4/arduino_Watering4.ino +++ b/4 Channel Relay Plant Watering System and code/arduino_Watering4/arduino_Watering4.ino @@ -1,84 +1,43 @@ -int IN1 = 2; -int IN2 = 3; -int IN3 = 4; -int IN4 = 5; +const int pumpRelay[4] = { 2, 3, 4, 5 }; +const int moistureSensor[4] = { A0, A1, A2, A3 }; +const int ON = LOW; +const int OFF = HIGH; -int Pin1 = A0; //模拟引脚A0连接传感器输入 -int Pin2 = A1; -int Pin3 = A2; -int Pin4 = A3; +// Lower = wetter, 275 = completely wet, 600 = completely dry +const int moistureThreshold[4] = { 400, 400, 400, 400 }; // Adjust to each plant's needs -float value1 = 0; -float value2 = 0; -float value3 = 0; -float value4 = 0; void setup() { Serial.begin(9600); - pinMode(IN1, OUTPUT); - pinMode(IN2, OUTPUT); - pinMode(IN3, OUTPUT); - pinMode(IN4, OUTPUT); - pinMode(Pin1, INPUT); - pinMode(Pin2, INPUT); - pinMode(Pin3, INPUT); - pinMode(Pin4, INPUT); + for(int i = 0; i < 4; i++) { + pinMode(pumpRelay[i], OUTPUT); + digitalWrite(pumpRelay[i], OFF); + pinMode(moistureSensor[i], INPUT); + } - digitalWrite(IN1, HIGH); - digitalWrite(IN2, HIGH); - digitalWrite(IN3, HIGH); - digitalWrite(IN4, HIGH); delay(500); } + void loop() { + int moistureLevel; + + for(int i = 0; i < 4; i++) { + moistureLevel = analogRead(moistureSensor[i]); - Serial.print("MOISTURE LEVEL:"); - value1 = analogRead(Pin1); - Serial.println(value1); - if(value1>750) - { - digitalWrite(IN1, LOW); - } - else - { - digitalWrite(IN1, HIGH); - } - - Serial.print("MOISTURE LEVEL:"); - value2 = analogRead(Pin2); - Serial.println(value2); - if(value2>750) - { - digitalWrite(IN2, LOW); - } - else - { - digitalWrite(IN2, HIGH); - } + Serial.print("MOISTURE LEVEL "); + Serial.print(i); + Serial.print(": "); + Serial.println(moistureLevel); - Serial.print("MOISTURE LEVEL:"); - value3 = analogRead(Pin3); - Serial.println(value3); - if(value3>750) - { - digitalWrite(IN3, LOW); - } - else - { - digitalWrite(IN3, HIGH); + // If the soil is too dry, turn the pump on. + // Otherwise, turn the pump off + if(moistureLevel > moistureThreshold[i]) { + digitalWrite(pumpRelay[i], ON); + } else { + digitalWrite(pumpRelay[i], OFF); } - - Serial.print("MOISTURE LEVEL:"); - value4 = analogRead(Pin4); - Serial.println(value4); - if(value4>750) - { - digitalWrite(IN4, LOW); } - else - { - digitalWrite(IN4, HIGH); - } - Serial.println(); + + Serial.println(); delay(1000); }