#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
// Define LCD addresses
LiquidCrystal_I2C lcd1(0x27, 16, 2); // Address for the first LCD
LiquidCrystal_I2C lcd2(0x26, 16, 2); // Address for the second LCD
// Define DHT sensor
#define DHTPIN 4
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// Define Ultrasonic sensor pins
#define TRIG_PIN 12
#define ECHO_PIN 14
// Define PIR sensor pin
#define PIR_PIN 5
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
long int mychannelid = 2653199;A
char mywriteapikey[] ="2ENNGRZJKVTFAQTW";
//thingspeak initialization
void setup() {
{
Serial.begin(115200);
pinMode(trigpin, OUTPUT);
pinMode(echopin, INPUT);
//ultrasonic setup
dht22.begin();
//dht setup
WiFi.mode(WIFI_STA);
Serial.print("Attempting to connect");
while(WiFi.status() != WL_CONNECTED)
{
WiFi.begin(ssid,pass);
Serial.print(".");
delay(5000);
}
Serial.println("\nConnected");
//wifi setup
ThingSpeak.begin(client);
//ThingSpeak setup
Serial.begin(115200);
// Initialize DHT sensor
dht.begin();
// Initialize ultrasonic pins
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
// Initialize PIR sensor
pinMode(PIR_PIN, INPUT);
// Initialize LCDs
lcd1.init();
lcd1.backlight();
lcd1.setCursor(0, 0);
lcd1.print("Ultrasonic:");
lcd2.init();
lcd2.backlight();
lcd2.setCursor(0, 0);
lcd2.print("Temp/Humid:");
}
void loop() {
// Read Ultrasonic sensor
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
long duration = pulseIn(ECHO_PIN, HIGH);
float distance = duration * 0.034 / 2;
// Display ultrasonic value
lcd1.setCursor(0, 1);
lcd1.print("Dist: ");
lcd1.print(distance);
lcd1.print(" cm ");
// Read DHT22 sensor
float temp = dht.readTemperature();
float hum = dht.readHumidity();
// Check if readings are valid
if (isnan(temp) || isnan(hum)) {
lcd2.setCursor(0, 1);
lcd2.print("Error reading ");
} else {
// Display DHT22 values
lcd2.setCursor(0, 1);
lcd2.print("T: ");
lcd2.print(temp);
lcd2.print("C ");
lcd2.print("H: ");
lcd2.print(hum);
lcd2.print("% ");
}
delay(1000);
}