1
2#include <LiquidCrystal.h>
3#include <Adafruit_Sensor.h>
4#include <DHT.h>
5#include <DHT_U.h>
6
7
8LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
9
10#define DHTPIN 13
11#define DHTTYPE DHT11
12DHT dht(DHTPIN, DHTTYPE);
13
14#define PIN_RELAY_1 7
15#define PIN_RELAY_2 8
16#define PIN_RELAY_3 9
17#define PIN_RELAY_4 10
18
19const int Soil_Pin = A0;
20const int Ldr_pin = A1;
21
22void setup() {
23 Serial.begin(9600);
24 lcd.begin(16, 2);
25 dht.begin();
26
27 pinMode(PIN_RELAY_1, OUTPUT);
28 pinMode(PIN_RELAY_2, OUTPUT);
29 pinMode(PIN_RELAY_3, OUTPUT);
30 pinMode(PIN_RELAY_4, OUTPUT);
31
32 pinMode(Ldr_pin, INPUT);
33}
34
35void loop() {
36
37 delay(500);
38 float temperature = dht.readTemperature();
39 float humidity = dht.readHumidity();
40
41
42 int ldr_Value = analogRead(Ldr_pin);
43
44
45 float moisture_percentage;
46 int sensor_analog;
47 sensor_analog = analogRead(Soil_Pin);
48 moisture_percentage = (100 - ((sensor_analog / 1023.00) * 100));
49
50
51 Serial.print(moisture_percentage);
52 Serial.print(" ");
53 Serial.print(temperature);
54 Serial.print(" ");
55 Serial.println(humidity);
56 Serial.print(" ");
57
58 lcd.setCursor(0, 0);
59 lcd.print("M %");
60 lcd.setCursor(0, 1);
61 lcd.print(moisture_percentage);
62 lcd.setCursor(6, 0);
63 lcd.print("Tc");
64 lcd.print((char)223);
65 lcd.setCursor(6, 1);
66 lcd.print(temperature);
67 lcd.setCursor(12, 0);
68 lcd.print("H %");
69 lcd.setCursor(12, 1);
70 lcd.print(humidity);
71
72
73 if (moisture_percentage < 60.00){
74 digitalWrite(PIN_RELAY_1, LOW);
75 } else {
76 digitalWrite(PIN_RELAY_1, HIGH);
77 }
78 if (temperature < 20) {
79 digitalWrite(PIN_RELAY_2, LOW);
80 } else {
81 digitalWrite(PIN_RELAY_2, HIGH);
82 }
83 if (temperature > 30) {
84 digitalWrite(PIN_RELAY_3, LOW);
85 } else {
86 digitalWrite(PIN_RELAY_3, HIGH);
87 }
88 if (ldr_Value < 300) {
89 digitalWrite(PIN_RELAY_4, LOW);
90 } else {
91 digitalWrite(PIN_RELAY_4, HIGH);
92 }
93
94 delay(2000);
95
96}