#include "DHTesp.h"
#include <LiquidCrystal_I2C.h>
#include <Stepper.h>
#define I2C_ADDR 0x27
#define LCD_COLUMNS 16
#define LCD_LINES 2
const int DHT_PIN = 15;
DHTesp dhtSensor;
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);
const int stepsPerRevolution = 100;
Stepper myStepper(stepsPerRevolution, 14, 26, 27, 5); // Adjust the pins accordingly
void setup() {
Serial.begin(115200);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
lcd.init();
lcd.backlight();
}
void loop() {
// Read DHT sensor data
TempAndHumidity data = dhtSensor.getTempAndHumidity();
Serial.println("Temp: " + String(data.temperature, 1) + "°C");
Serial.println("Humidity: " + String(data.humidity, 1) + "%");
Serial.println("---");
// Display DHT sensor data on LCD
lcd.setCursor(0, 0);
lcd.print(" Temp: " + String(data.temperature, 1) + "\xDF" + "C ");
lcd.setCursor(0, 1);
lcd.print(" Humidity: " + String(data.humidity, 1) + "% ");
lcd.print("Wokwi Online IoT");
// Adjust stepper motor speed based on temperature
if (data.temperature >= 28.0) {
myStepper.setSpeed(1000); // High speed if temperature is 28°C and above
} else if (data.temperature <= 18.0) {
myStepper.setSpeed(200); // Low speed if temperature is 18°C and below
} else {
myStepper.setSpeed(500); // Medium speed for temperatures between 18°C and 28°C
}
// Rotate stepper motor clockwise
myStepper.step(2000);
delay(0);
}