hey i was wondering if anyone could help me. Im new to Arduino and have set up an auto watering system with individually pumps and sensors. O have also hooked up an LCD to and my code is working and everything is running. I just have a few problems I cant seem to figure out because I just started learning how to code a couple weeks ago. My first problem is that whenever the pump for that specific plant is turned on by the capacitive soil moisture sensor, the sensor turns it off too quickly and the plant doesn't get enough water. My other problems are that I cant figure out how to individually calibrate each sensor in the code and also cant figure out how to print data from sensor1 and sensor 2 on separate rows with the lcd at the same time rather then displaying 1 then 2 then 3 then 4. This is my code and if anyone can help i would be very grateful.
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
const int AirValue = 620;
const int WaterValue = 315;
int intervals = (AirValue - WaterValue)/3;
int soilmoisturepercent=0;
int IN1 = 2;
int IN2 = 3;
int IN3 = 4;
int IN4 = 5;
int Pin1 = A0;
int Pin2 = A1;
int Pin3 = A2;
int Pin4 = A3;
float value1 = 0;
float value2 = 0;
float value3 = 0;
float value4 = 0;
void setup() {
lcd.begin(16, 2);
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);
digitalWrite(IN1, HIGH);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, HIGH);
delay(500);
}
void loop() {
value1 = analogRead(Pin1);
Serial.println(value1);
soilmoisturepercent = map(value1, AirValue, WaterValue, 0, 100);
if (soilmoisturepercent > 100)
{
Serial.println("100 %");
lcd.setCursor(0, 0);
lcd.print("10th Planet C1:");
lcd.setCursor(0, 1);
lcd.print("100 %");
delay(3000);
lcd.clear();
delay(250);
}
else if (soilmoisturepercent <0)
{
Serial.println("0 %");
lcd.setCursor(0, 0);
lcd.print("10th Planet C1:");
lcd.setCursor(0, 1);
lcd.print("0 %");
delay(3000);
lcd.clear();
delay(250);
}
else if (soilmoisturepercent >0 && soilmoisturepercent < 100)
{
Serial.print(soilmoisturepercent);
Serial.println(" %");
lcd.setCursor(0, 0);
lcd.print("10th Planet C1:");
lcd.setCursor(0, 1);
lcd.print(soilmoisturepercent);
lcd.print(" %");
delay(3000);
lcd.clear();
delay(250);
}
value2 = analogRead(Pin2);
Serial.println(value2);
soilmoisturepercent = map(value2, AirValue, WaterValue, 0, 100);
if (soilmoisturepercent > 100)
{
Serial.println("100 %");
lcd.setCursor(0, 0);
lcd.print("10th Planet C2:");
lcd.setCursor(0, 1);
lcd.print("100 %");
delay(3000);
lcd.clear();
delay(250);
}
else if (soilmoisturepercent <0)
{
Serial.println("0 %");
lcd.setCursor(0, 0);
lcd.print("10th Planet C2:");
lcd.setCursor(0, 1);
lcd.print("0 %");
delay(3000);
lcd.clear();
delay(250);
}
else if (soilmoisturepercent >0 && soilmoisturepercent < 100)
{
Serial.print(soilmoisturepercent);
Serial.println(" %");
lcd.setCursor(0, 0);
lcd.print("10th Planet C2:");
lcd.setCursor(0, 1);
lcd.print(soilmoisturepercent);
lcd.print(" %");
delay(3000);
lcd.clear();
delay(250);
}
value3 = analogRead(Pin3);
Serial.println(value3);
soilmoisturepercent = map(value3, AirValue, WaterValue, 0, 100);
if (soilmoisturepercent > 100)
{
Serial.println("100 %");
lcd.setCursor(0, 0);
lcd.print("10th Planet C3:");
lcd.setCursor(0, 1);
lcd.print("100 %");
delay(3000);
lcd.clear();
delay(250);
}
else if (soilmoisturepercent <0)
{
Serial.println("0 %");
lcd.setCursor(0, 0);
lcd.print("10th Planet C3:");
lcd.setCursor(0, 1);
lcd.print("0 %");
delay(3000);
lcd.clear();
delay(250);
}
else if (soilmoisturepercent >0 && soilmoisturepercent < 100)
{
Serial.print(soilmoisturepercent);
Serial.println(" %");
lcd.setCursor(0, 0);
lcd.print("10th Planet C3:");
lcd.setCursor(0, 1);
lcd.print(soilmoisturepercent);
lcd.print(" %");
delay(3000);
lcd.clear();
delay(250);
}
value4 = analogRead(Pin4);
Serial.println(value4);
soilmoisturepercent = map(value4, AirValue, WaterValue, 0, 100);
if (soilmoisturepercent > 100)
{
Serial.println("100 %");
lcd.setCursor(0, 0);
lcd.print("10th Planet C4:");
lcd.setCursor(0, 1);
lcd.print("100 %");
delay(3000);
lcd.clear();
delay(250);
}
else if (soilmoisturepercent <0)
{
Serial.println("0 %");
lcd.setCursor(0, 0);
lcd.print("10th Planet C4:");
lcd.setCursor(0, 1);
lcd.print("0 %");
delay(3000);
lcd.clear();
delay(250);
}
else if (soilmoisturepercent >0 && soilmoisturepercent < 100)
{
Serial.print(soilmoisturepercent);
Serial.println(" %");
lcd.setCursor(0, 0);
lcd.print("10th Planet C4:");
lcd.setCursor(0, 1);
lcd.print(soilmoisturepercent);
lcd.print(" %");
delay(3000);
lcd.clear();
delay(250);
}
value1 = analogRead(Pin1);
if(value1 < AirValue && value1 > (AirValue - intervals))
{
digitalWrite(IN1, LOW);
}
else
{
digitalWrite(IN1, HIGH);
}
value2 = analogRead(Pin2);
if(value2 < AirValue && value2 > (AirValue - intervals))
{
digitalWrite(IN2, LOW);
}
else
{
digitalWrite(IN2, HIGH);
}
value3 = analogRead(Pin3);
if(value3 < AirValue && value3 > (AirValue - intervals))
{
digitalWrite(IN3, LOW);
}
else
{
digitalWrite(IN3, HIGH);
}
value4 = analogRead(Pin4);
if(value4 < AirValue && value4 > (AirValue - intervals))
{
digitalWrite(IN4, LOW);
}
else
{
digitalWrite(IN4, HIGH);
}
Serial.println();
delay(1000);
}