void loop() { //digitalWrite(motor1, HIGH); //digitalWrite(pump, LOW); //digitalWrite(uv1, HIGH); //digitalWrite(uv2, HIGH);
// Read temperature and humidity digitalWrite(DHT_VCC, HIGH); int temp = dht.readTemperature(); int humidity = dht.readHumidity(); lss = analogRead(ls); int moist = readSensor(); float lcdmoist = (moist / 1023.0) * 100; // Convert to percentage float lcdlss = (lss / 1023.0) * 100; // simulate time DateTime now = rtc.now(); int hour = now.hour(); int min = now.minute(); int sec = now.second(); Serial.print("hour: "); Serial.println(hour); Serial.print("min: "); Serial.println(min); Serial.print("sec: "); Serial.println(sec); if (watering == 0){ lcd.clear(); lcd.setCursor(0, 0); if(count5%2 == 0){ lcd.print("Moisture:"); lcd.print(lcdmoist); lcd.print("%"); lcd.setCursor(0,1); lcd.print("Light:"); lcd.print(lcdlss); lcd.print("%"); } else if(count5%2 == 1){ lcd.print("Temperature:"); lcd.print(temp); lcd.print((char)223); lcd.print("C"); lcd.setCursor(0, 1); lcd.print("Humidity:"); lcd.print(humidity); lcd.print("%"); } delay(2000); count5 = count5+1; }
// when to water if (hour%3 == 0){ if (min == 0){ if (sec <= 5 || sec >= 55){ if(moist >= soilDry) { //water analogWrite(b, 255); analogWrite(g, 255); pump_on = 1; digitalWrite(DHT_VCC, LOW); digitalWrite(motor1, LOW); digitalWrite(pump, HIGH); delay(200); digitalWrite(motor1, HIGH); digitalWrite(pump, LOW); digitalWrite(DHT_VCC, LOW); pump_on = 0; analogWrite(b, 0); analogWrite(g, 0); } else if (moist <= soilWet && uv_on == 0){ //uv digitalWrite(11, HIGH); digitalWrite(13, HIGH); uv_on = 1; } } } } if(pump_on == 0){ digitalWrite(pump, LOW); }
// when to UV light if (hour%6 == 0){ if (min == 0){ if(sec <= 5 || sec >= 55){ digitalWrite(11, HIGH); digitalWrite(13, HIGH); uv_on = 1; } } } if (uv_on == 1){ timer = timer+1; if (timer >= 3600){ digitalWrite(11, LOW); digitalWrite(13, LOW); uv_on = 0; } }
// LED light (count1 is here) if (lss > 10) { count1 = count1 + 1; if (count1 < 1800000) { analogWrite(g, 255); analogWrite(r, 0); analogWrite(b, 0); } else if (count1 >= 1800000 && count1 < 3600000) { analogWrite(g, 255); analogWrite(r, 255); analogWrite(b, 0); } else { analogWrite(g, 0); analogWrite(r, 255); analogWrite(b, 0); digitalWrite(DHT_VCC, LOW); digitalWrite(motor1, LOW); digitalWrite(pump, HIGH); delay(200); digitalWrite(motor1, HIGH); digitalWrite(pump, LOW); digitalWrite(DHT_VCC, LOW); count1 = 1800000; } Serial.println(lss); } else if (lss < 10) { analogWrite(r, 0); analogWrite(g, 0); analogWrite(b, 0); count1 = 0; }
// Manual Button Watering hss = digitalRead(hs); if (hss == LOW) { watering = 1; analogWrite(b, 255); analogWrite(g, 255); digitalWrite(DHT_VCC, LOW); digitalWrite(motor1, LOW); digitalWrite(pump, HIGH); delay(200); digitalWrite(motor1, HIGH); digitalWrite(pump, LOW); delay(1000); } else if (hss == HIGH && lss<10){ digitalWrite(DHT_VCC, HIGH); analogWrite(b, 0); analogWrite(g, 0); watering = 0; } if(watering ==1){ lcd.clear(); lcd.setCursor(0,0); int count4 = 1; if(count4 == 1){ lcd.print("Watering."); count4 = 2; } else if(count4 == 2){ lcd.print("Watering.."); count4 = 3; } else if(count4 == 3){ lcd.print("Watering..."); count4 = 1; } } delay(1000);}
// Functionsint readSensor() { digitalWrite(sensorPower, HIGH); delay(50); int moist = analogRead(sensorPin); digitalWrite(sensorPower, LOW); return moist;}