#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>
#define DHTPIN 5
#define DHTTYPE DHT22
DHT_Unified dht(DHTPIN, DHTTYPE);
uint32_t delayMS;
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4);
float cm;
float inches;
long readUltrasonicDistance(int triggerPin, int echoPin)
{
pinMode(triggerPin, OUTPUT);
digitalWrite(triggerPin, LOW);
delayMicroseconds(2);
digitalWrite(triggerPin, HIGH);
delayMicroseconds(10);
digitalWrite(triggerPin, LOW);
pinMode(echoPin, INPUT);
return pulseIn(echoPin, HIGH);
}
uint8_t pacman[8] = {
0b00000,
0b00000,
0b01110,
0b11011,
0b11111,
0b01110,
0b00000,
0b00000
};
uint8_t pacmanOpen[] = {
0b00000,
0b00000,
0b01110,
0b11011,
0b11100,
0b01110,
0b00000,
0b00000
};
uint8_t dot[] = {
0b00000,
0b00000,
0b00000,
0b00110,
0b00110,
0b00000,
0b00000,
0b00000
};
void setup()
{
Serial.begin(9600);
dht.begin();
lcd.begin(20, 4);
lcd.init();
lcd.backlight();
lcd.print("--> Distance <--");
delay(3000);
lcd.clear();
}
void loop()
{
sensors_event_t event;
dht.temperature().getEvent(&event);
cm = 0.0344/2 * readUltrasonicDistance(12, 11);
inches = (cm / 2.54);
if (isnan(event.temperature)) {
lcd.setCursor(0,2);
lcd.print(F("Error reading temperature!"));
}
else {
lcd.setCursor(0,2);
lcd.print(F("Temp: "));
lcd.print(event.temperature);
lcd.print(F(" C"));
}
dht.humidity().getEvent(&event);
if (isnan(event.relative_humidity)) {
lcd.setCursor(0,3);
lcd.print(F("Error reading humidity!"));
}
else {
lcd.setCursor(0,3);
lcd.print(F("Humi: "));
lcd.print(event.relative_humidity);
lcd.print(F(" %"));
}
lcd.setCursor(0,0);
lcd.print("Inches:");
lcd.setCursor(4,0);
lcd.setCursor(8,0);
lcd.print(inches, 1);
lcd.setCursor(0,1);
lcd.print("cm:");
lcd.setCursor(8,1);
lcd.print(cm, 1);
lcd.setCursor(14,1);
delay(2000);
lcd.clear();
}