Hello everyone, in this code i'm using three push button to control my lcd each button is responsible for displaying sensors reading from the project. I came up with this code but the lcd is displaying mixed information and sometimes unknown letters, please help!!!
#include "DHT.h"
#define DHTPin 0
DHT dht;
#include<LiquidCrystal.h>
LiquidCrystal lcd(1, 2, 3, 4, 5, 6);
const int trigPin = 7;
const int echoPin = 8;
const int TempRelay = 9;
//const int HumRelay = 10;
//const int HeatRelay = 11;
const int LampRelay = 12;
const int PumbRelay = 13;
const int KillSwitch_Rly = 14;
const int BuzrPin = 15;
int pb1=16;
int pb2=17;
int pb3=18;
const int ldrPin = A1;
const int SmokeSnsrPin = A2;
const int soil_sensor1 = A3;
const int soil_sensor2 = A4;
int state1=0;
int state2=0;
int state3=0;
long duration;
int distanceCm;
int distancePercent;
int safetyDistance = 18;
int soil1Status;
int soil2Status;
int SmokeLvl;
int TempSensitivity = 10;
int HumSensitivity = 50;
int soil1Percent;
int soil2Percent;
int smokePercent;
int ldrStatus;
int LDRSensitivity = 150;
int SmokeSensitivity = 420;
int SoilSensitivity = 700;
int SoilEnough = 350;
int temp;
int humi;
void setup() {
pinMode (LampRelay, OUTPUT);
pinMode (PumbRelay, OUTPUT);
pinMode (KillSwitch_Rly, OUTPUT);
pinMode (ldrPin, INPUT);
pinMode (SmokeSnsrPin, INPUT);
pinMode (BuzrPin, OUTPUT);
pinMode (TempRelay, OUTPUT);
//pinMode (HumRelay, OUTPUT);
//pinMode (HeatRelay, OUTPUT);
pinMode (soil_sensor1, INPUT);
pinMode (soil_sensor2, INPUT);
pinMode (trigPin, OUTPUT);
pinMode (echoPin, INPUT);
pinMode(pb1,INPUT);
pinMode(pb2,INPUT);
pinMode(pb3,INPUT);
Serial.begin(9600);
lcd.begin(16, 2);
lcd.clear();
}
void loop() {
state1=digitalRead(pb1);
state2=digitalRead(pb2);
state3=digitalRead(pb3);
if(state1==HIGH){
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distanceCm = duration0.034/2;
distancePercent = duration0.0133/2;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Dist: "); // Prints string "Distance" on the LCD
lcd.print(distanceCm); // Prints the distance value from the sensor
lcd.print(" cm");
lcd.setCursor(0,1);
lcd.print("Percent: ");
lcd.print(distancePercent);
lcd.print(" %");
//delay(1000);
}
else if (state2==HIGH){
soil1Status = analogRead (soil_sensor1);
soil2Status = analogRead (soil_sensor2);
soil1Percent = (soil1Status * 0.0009766) * 100;
soil2Percent = (soil2Status * 0.0009766) * 100;
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("Soil M.1: ");// Sets the location at which subsequent text written to the LCD will be displayed
lcd.print(soil1Percent); // Prints the soil mositure value from the sensor
lcd.print(" %");
lcd.setCursor(0,1);
lcd.print ("Soil M.2: ");
lcd.print(soil2Percent);
lcd.print(" %");
//delay(1000);
}
else if (state3==HIGH){
float temp = dht.getTemperature();
float humi = dht.getHumidity();
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Temp: ");
lcd.print(temp);
lcd.print(" C");
lcd.setCursor(0,1);
lcd.print("Humi: ");
lcd.print(humi);
lcd.print(" %");
}
else
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Green house");
delay(1000);
}
delay(500);
lcd.clear();
}