#include LiquidCrystal lcd(12, 11, 5, 4, 3, 2); const int pumpPin = 6; const int temperatureSensorPin = A1; const int moistureSensorPin = A0; const int ultrasonicTrigPin = 7; const int ultrasonicEchoPin = 8; const int temperatureThreshold = 25; // Temperature threshold in Celsius const int moistureThreshold = 20; // Moisture threshold const int tanktotalheight = 100; // Water level threshold (adjust as needed) const int waterDistanceThreshold = 80; // Water distance threshold in centimeters void setup() { lcd.begin(16, 2); pinMode(pumpPin, OUTPUT); pinMode(ultrasonicTrigPin, OUTPUT); pinMode(ultrasonicEchoPin, INPUT); lcd.setCursor(0, 0); lcd.print("peppe8o.com"); lcd.setCursor(0, 1); lcd.print("Pump System"); delay(2000); lcd.clear(); } void loop() { float temperature = -40 + 0.488155 * (analogRead(temperatureSensorPin) - 20); int moistureLevel = analogRead(moistureSensorPin); moistureLevel = map(moistureLevel, 0, 1023, 0, 100); // Read water distance from ultrasonic sensor long duration, distance; digitalWrite(ultrasonicTrigPin, LOW); delayMicroseconds(2); digitalWrite(ultrasonicTrigPin, HIGH); delayMicroseconds(10); digitalWrite(ultrasonicTrigPin, LOW); duration = pulseIn(ultrasonicEchoPin, HIGH); distance = duration * 0.034 / 2; lcd.setCursor(0, 0); lcd.print("T:"); lcd.print(temperature); lcd.print("C "); lcd.print("LVL:"); lcd.print(tanktotalheight-distance); lcd.setCursor(0, 1); lcd.print("Moist:"); lcd.print(moistureLevel); lcd.print("%"); delay(1000); // Adjust delay according to your needs lcd.clear(); // Control pump based on conditions if (temperature > temperatureThreshold || moistureLevel < moistureThreshold || distance > waterDistanceThreshold) { // Conditions met, turn on pump digitalWrite(pumpPin, HIGH); lcd.setCursor(5, 0); lcd.print("Pump ON "); } else { // Conditions not met, turn off pump digitalWrite(pumpPin, LOW); lcd.setCursor(5, 0); lcd.print("Pump OFF"); } delay(1000); // Adjust delay according to your needs lcd.clear(); }