// set all moisture sensors PIN ID
int moisture1 = A6;
int moisture2 = A7;
int moisture3 = A8;
int moisture4 = A9;
int moisture5 = A10;
int moisture6 = A11;
int moisture7 = A12;
int moisture8 = A13;
int moisture9 = A14;
int moisture10 = A15;
// declare moisture values
int moisture1_value = 0;
int moisture2_value = 0;
int moisture3_value = 0;
int moisture4_value = 0;
int moisture5_value = 0;
int moisture6_value = 0;
int moisture7_value = 0;
int moisture8_value = 0;
int moisture9_value = 0;
int moisture10_value = 0;
// set water relays
int relay1 = 4;
int relay2 = 5;
int relay3 = 6;
int relay4 = 7;
int relay5 = 8;
int relay6 = 9;
int relay7 = 10;
int relay8 = 11;
int relay9 = 12;
int relay10 = 13;
// set water pump
int pump = 2;
//pump state :open 0:close
int pump_state_flag = 0;
//relay state 1:open 0:close
int relay1_state_flag = 0;
int relay2_state_flag = 0;
int relay3_state_flag = 0;
int relay4_state_flag = 0;
int relay5_state_flag = 0;
int relay6_state_flag = 0;
int relay7_state_flag = 0;
int relay8_state_flag = 0;
int relay9_state_flag = 0;
int relay10_state_flag = 0;
void setup()
{
Serial.begin(9600);
// declare relay as output
pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT);
pinMode(relay3, OUTPUT);
pinMode(relay4, OUTPUT);
pinMode(relay5, OUTPUT);
pinMode(relay6, OUTPUT);
pinMode(relay7, OUTPUT);
pinMode(relay8, OUTPUT);
pinMode(relay9, OUTPUT);
pinMode(relay10, OUTPUT);
// declare pump as output
pinMode(pump, OUTPUT);
}
void loop()
{
read_value();
water_flower();
}
//Set moisture value
void read_value()
{
float value1 = analogRead(A6);
moisture1_value =map(value1,590,360,0,100); delay(20);
if(moisture1_value<0){
moisture1_value=0;
}
float value2 = analogRead(A7);
moisture2_value =map(value2,600,360,0,100); delay(20);
if(moisture2_value<0) {
moisture2_value=0;
}
float value3 = analogRead(A8);
moisture3_value =map(value3,600,360,0,100); delay(20);
if(moisture3_value<0){
moisture3_value=0;
}
float value4 = analogRead(A9);
moisture4_value =map(value4,600,360,0,100); delay(20);
if(moisture4_value<0) {
moisture4_value=0;
}
float value5 = analogRead(A10);
moisture5_value =map(value5,600,360,0,100); delay(20);
if(moisture5_value<0){
moisture5_value=0;
}
float value6 = analogRead(A11);
moisture6_value =map(value6,600,360,0,100); delay(20);
if(moisture6_value<0) {
moisture6_value=0;
}
float value7 = analogRead(A12);
moisture7_value =map(value7,600,360,0,100); delay(20);
if(moisture7_value<0){
moisture7_value=0;
}
float value8 = analogRead(A13);
moisture8_value =map(value8,600,360,0,100); delay(20);
if(moisture8_value<0) {
moisture8_value=0;
}
float value9 = analogRead(A14);
moisture9_value =map(value9,600,360,0,100); delay(20);
if(moisture9_value<0){
moisture9_value=0;
}
float value10 = analogRead(A15);
moisture10_value =map(value10,600,360,0,100); delay(20);
if(moisture10_value<0) {
moisture10_value=0;
}
}
void water_flower()
{
if (moisture1_value < 30)
{
digitalWrite(relay1, HIGH);
relay1_state_flag = 1;
delay(50);
if (pump_state_flag == 0)
{
digitalWrite(pump, HIGH);
pump_state_flag = 1;
delay(50);
}
}
else if (moisture1_value > 55)
{
digitalWrite(relay1, LOW);
relay1_state_flag = 0;
delay(50);
if ((relay1_state_flag == 0) && (relay2_state_flag == 0) && (relay3_state_flag == 0) && (relay4_state_flag == 0) && (relay5_state_flag == 0) &&
(relay6_state_flag == 0) && (relay7_state_flag == 0) && (relay8_state_flag == 0) && (relay9_state_flag == 0) && (relay10_state_flag == 0))
{
digitalWrite(pump, LOW);
pump_state_flag = 0;
delay(50);
}
}
if (moisture2_value < 30)
{
digitalWrite(relay2, HIGH);
relay2_state_flag = 1;
delay(50);
if (pump_state_flag == 0)
{
digitalWrite(pump, HIGH);
pump_state_flag = 1;
delay(50);
}
}
else if (moisture2_value > 55)
{
digitalWrite(relay2, LOW);
relay2_state_flag = 0;
delay(50);
if ((relay1_state_flag == 0) && (relay2_state_flag == 0) && (relay3_state_flag == 0) && (relay4_state_flag == 0) && (relay5_state_flag == 0) &&
(relay6_state_flag == 0) && (relay7_state_flag == 0) && (relay8_state_flag == 0) && (relay9_state_flag == 0) && (relay10_state_flag == 0))
{
digitalWrite(pump, LOW);
pump_state_flag = 0;
delay(50);
}
}
if (moisture3_value < 30)
{
digitalWrite(relay3, HIGH);
relay3_state_flag = 1;
delay(50);
if (pump_state_flag == 0)
{
digitalWrite(pump, HIGH);
pump_state_flag = 1;
delay(50);
}
}
else if (moisture3_value > 55)
{
digitalWrite(relay3, LOW);
relay3_state_flag = 0;
delay(50);
if ((relay1_state_flag == 0) && (relay2_state_flag == 0) && (relay3_state_flag == 0) && (relay4_state_flag == 0) && (relay5_state_flag == 0) &&
(relay6_state_flag == 0) && (relay7_state_flag == 0) && (relay8_state_flag == 0) && (relay9_state_flag == 0) && (relay10_state_flag == 0))
{
digitalWrite(pump, LOW);
pump_state_flag = 0;
delay(50);
}
}
if (moisture4_value < 30)
{
digitalWrite(relay4, HIGH);
relay4_state_flag = 1;
delay(50);
if (pump_state_flag == 0)
{
digitalWrite(pump, HIGH);
pump_state_flag = 1;
delay(50);
}
}
else if (moisture4_value > 55)
{
digitalWrite(relay4, LOW);
relay4_state_flag = 0;
delay(50);
if ((relay1_state_flag == 0) && (relay2_state_flag == 0) && (relay3_state_flag == 0) && (relay4_state_flag == 0) && (relay5_state_flag == 0) &&
(relay6_state_flag == 0) && (relay7_state_flag == 0) && (relay8_state_flag == 0) && (relay9_state_flag == 0) && (relay10_state_flag == 0))
{
digitalWrite(pump, LOW);
pump_state_flag = 0;
delay(50);
}
}
if (moisture5_value < 30)
{
digitalWrite(relay5, HIGH);
relay5_state_flag = 1;
delay(50);
if (pump_state_flag == 0)
{
digitalWrite(pump, HIGH);
pump_state_flag = 1;
delay(50);
}
}
else if (moisture5_value > 55)
{
digitalWrite(relay5, LOW);
relay5_state_flag = 0;
delay(50);
if ((relay1_state_flag == 0) && (relay2_state_flag == 0) && (relay3_state_flag == 0) && (relay4_state_flag == 0) && (relay5_state_flag == 0) &&
(relay6_state_flag == 0) && (relay7_state_flag == 0) && (relay8_state_flag == 0) && (relay9_state_flag == 0) && (relay10_state_flag == 0))
{
digitalWrite(pump, LOW);
pump_state_flag = 0;
delay(50);
}
}
if (moisture6_value < 30)
{
digitalWrite(relay6, HIGH);
relay6_state_flag = 1;
delay(50);
if (pump_state_flag == 0)
{
digitalWrite(pump, HIGH);
pump_state_flag = 1;
delay(50);
}
}
else if (moisture6_value > 55)
{
digitalWrite(relay6, LOW);
relay6_state_flag = 0;
delay(50);
if ((relay1_state_flag == 0) && (relay2_state_flag == 0) && (relay3_state_flag == 0) && (relay4_state_flag == 0) && (relay5_state_flag == 0) &&
(relay6_state_flag == 0) && (relay7_state_flag == 0) && (relay8_state_flag == 0) && (relay9_state_flag == 0) && (relay10_state_flag == 0))
{
digitalWrite(pump, LOW);
pump_state_flag = 0;
delay(50);
}
}
if (moisture7_value < 30)
{
digitalWrite(relay7, HIGH);
relay7_state_flag = 1;
delay(50);
if (pump_state_flag == 0)
{
digitalWrite(pump, HIGH);
pump_state_flag = 1;
delay(50);
}
}
else if (moisture7_value > 55)
{
digitalWrite(relay7, LOW);
relay7_state_flag = 0;
delay(50);
if ((relay1_state_flag == 0) && (relay2_state_flag == 0) && (relay3_state_flag == 0) && (relay4_state_flag == 0) && (relay5_state_flag == 0) &&
(relay6_state_flag == 0) && (relay7_state_flag == 0) && (relay8_state_flag == 0) && (relay9_state_flag == 0) && (relay10_state_flag == 0))
{
digitalWrite(pump, LOW);
pump_state_flag = 0;
delay(50);
}
}
if (moisture8_value < 30)
{
digitalWrite(relay8, HIGH);
relay8_state_flag = 1;
delay(50);
if (pump_state_flag == 0)
{
digitalWrite(pump, HIGH);
pump_state_flag = 1;
delay(50);
}
}
else if (moisture8_value > 55)
{
digitalWrite(relay8, LOW);
relay8_state_flag = 0;
delay(50);
if ((relay1_state_flag == 0) && (relay2_state_flag == 0) && (relay3_state_flag == 0) && (relay4_state_flag == 0) && (relay5_state_flag == 0) &&
(relay6_state_flag == 0) && (relay7_state_flag == 0) && (relay8_state_flag == 0) && (relay9_state_flag == 0) && (relay10_state_flag == 0))
{
digitalWrite(pump, LOW);
pump_state_flag = 0;
delay(50);
}
}
if (moisture9_value < 30)
{
digitalWrite(relay9, HIGH);
relay9_state_flag = 1;
delay(50);
if (pump_state_flag == 0)
{
digitalWrite(pump, HIGH);
pump_state_flag = 1;
delay(50);
}
}
else if (moisture9_value > 55)
{
digitalWrite(relay9, LOW);
relay9_state_flag = 0;
delay(50);
if ((relay1_state_flag == 0) && (relay2_state_flag == 0) && (relay3_state_flag == 0) && (relay4_state_flag == 0) && (relay5_state_flag == 0) &&
(relay6_state_flag == 0) && (relay7_state_flag == 0) && (relay8_state_flag == 0) && (relay9_state_flag == 0) && (relay10_state_flag == 0))
{
digitalWrite(pump, LOW);
pump_state_flag = 0;
delay(50);
}
}
if (moisture10_value < 30)
{
digitalWrite(relay10, HIGH);
relay10_state_flag = 1;
delay(50);
if (pump_state_flag == 0)
{
digitalWrite(pump, HIGH);
pump_state_flag = 1;
delay(50);
}
}
else if (moisture10_value > 55)
{
digitalWrite(relay10, LOW);
relay10_state_flag = 0;
delay(50);
if ((relay1_state_flag == 0) && (relay2_state_flag == 0) && (relay3_state_flag == 0) && (relay4_state_flag == 0) && (relay5_state_flag == 0) &&
(relay6_state_flag == 0) && (relay7_state_flag == 0) && (relay8_state_flag == 0) && (relay9_state_flag == 0) && (relay10_state_flag == 0))
{
digitalWrite(pump, LOW);
pump_state_flag = 0;
delay(50);
}
}
}