//include libraries required for the DHT sensor, define digital input pin and used DHT sensor type #include #define DHTPIN 2 #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); //Define analogue input pins const int ldr = A0; const int precip = A2; const int moist = A5; //define constants for soil moisture const int dry=585; const int wet=298; void setup() { Serial.begin(115200); //start serial monitor dht.begin(); } void loop() { //read and print Temperature and Humidity from DHT, no calibration necessary float humidity = dht.readHumidity(); float temperature = dht.readTemperature(); Serial.print("Relative humidity: "); Serial.print(humidity); Serial.println(" %"); Serial.print("Temperature: "); Serial.print(temperature); Serial.println(" °Celsius"); //read analogue input pins and convert data into meaningful output //(for details: https://wiki.eolab.de/doku.php?id=amc2020:group_f:start&do=) int ldrStatus=analogRead(ldr); int sensorVal=analogRead(moist); int value = analogRead(precip); int percHumidity=map(sensorVal, wet, dry, 100,0); Serial.print("Light conditions: "); if (ldrStatus <= 50) { Serial.println("sunny day"); } else if ((ldrStatus > 50) && (ldrStatus <= 85)) { Serial.println("cloudy day "); } else if ((ldrStatus > 85) && (ldrStatus <= 135)) { Serial.println("rain probability "); } else if ((ldrStatus > 135) && (ldrStatus <= 900)) { Serial.println("dusk or dawn"); } else { Serial.println("darkness"); } Serial.print("Precipitation: "); if (value<=480){ Serial.println("Water level: 0mm - Empty!"); } else if (value>480 && value<=530){ Serial.println("Water level: 0mm to 5mm"); } else if (value>530 && value<=615){ Serial.println("Water level: 5mm to 10mm"); } else if (value>615 && value<=660){ Serial.println("Water level: 10mm to 15mm"); } else if (value>660 && value<=680){ Serial.println("Water level: 15mm to 20mm"); } else if (value>680 && value<=690){ Serial.println("Water level: 20mm to 25mm"); } else if (value>690 && value<=700){ Serial.println("Water level: 25mm to 30mm"); } else if (value>700 && value<=705){ Serial.println("Water level: 30mm to 35mm"); } else if (value>705){ Serial.println("Water level: 35mm to 40mm"); } //print data Serial.print("Soil moisture: "); Serial.print(percHumidity); Serial.println("%"); Serial.println(); delay(2000); }