#include "DHT.h"
#include <HCSR04.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4); // set the LCD address to 0x27 for a 16 chars and 2 line display
#define DHTPIN 2 // Digital pin connected to the DHT sensor
UltraSonicDistanceSensor distanceSensor(13, 12); // Initialize sensor that uses digital pins 13 and 12.
#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
DHT dht(DHTPIN, DHTTYPE);
#define STEP_SIZE 5/1023
void setup() {
Serial.begin(9600);
Serial.println(F("DHTxx test!"));
Serial.begin(9600); // We initialize serial connection so that we could print values from sensor.
dht.begin();
lcd.init(); // initialize the lcd
// Print a message to the LCD.
lcd.backlight();
lcd.print("Setup Done!!");
delay(500);
}
void loop() {
// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
float h = dht.readHumidity();
// Read temperature as Celsius (the default)
float t = dht.readTemperature();
// Read temperature as Fahrenheit (isFahrenheit = true)
float f = dht.readTemperature(true);
// Check if any reads failed and exit early (to try again).
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println(F("Failed to read from DHT sensor!"));
return;
}
Serial.print(F("Humidity: "));
Serial.print(h);
Serial.print(F("% Temperature: "));
Serial.print(t);
Serial.println(F("°C "));
lcd.clear();
lcd.print(F("Humidity:"));
lcd.print(h);
lcd.print(F("%"));
delay(500);
lcd.setCursor(0,1);
lcd.print("Temperature:");
lcd.print(t);
lcd.print(F("C"));
delay(500);
Serial.print("Distance: ");
Serial.println(distanceSensor.measureDistanceCm());
lcd.setCursor(0,2);
lcd.print("Distance: ");
lcd.print(distanceSensor.measureDistanceCm());
delay(500);
float ldr_relative = analogRead(A0);
Serial.print("LDR Value: ");
Serial.println(ldr_relative);
lcd.setCursor(0,3);
lcd.print("LDR Value: ");
lcd.print(ldr_relative);
delay(500);
float pot_voltage = analogRead(A1);
pot_voltage = pot_voltage * STEP_SIZE;
Serial.print("POT Voltage: ");
Serial.println(pot_voltage);
lcd.setCursor(0,1);
lcd.print("POT Voltage: ");
lcd.print(pot_voltage);
delay(500);
}