#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#include <WiFi.h>
#include <ThingSpeak.h>
#include <ESP32Servo.h>
#define DHTPIN 21
#define DHTTYPE DHT22
Servo myservo;
int pos = 0;
DHT dht(DHTPIN, DHTTYPE);
#define I2C_ADDR 0x27
#define LCD_COLUMNS 20
#define LCD_LINES 4
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);
#define WIFI_SSID "Wokwi-GUEST"
#define WIFI_PASSWORD ""
#define THINGSPEAK_API_KEY "4MHZXUUJ3CY5Q1KD"
#define THINGSPEAK_CHANNEL_ID 2394410
const long updateInterval = 1 * 1000;
unsigned long lastUpdate = 0;
WiFiClient client;
void setup() {
Serial.begin(9600);
delay(2000); // 2 saniye bekle
myservo.attach(22); // Servo pinini uygun pinle değiştirin
dht.begin();
lcd.init();
lcd.backlight();
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
ThingSpeak.begin(client);
}
void loop() {
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("NEM DEGERI=");
lcd.setCursor(11, 0);
if (!isnan(humidity)) {
lcd.print(humidity);
lcd.setCursor(16, 0);
lcd.print("C");
if (humidity <= 30) {
myservo.write(90); // Servo kolunu aşağıya çek
lcd.setCursor(0, 1);
lcd.print("DURUM= SU ACIK");
} else {
myservo.write(0); // Servo kolunu yukarı çek
lcd.setCursor(0, 1);
lcd.print("DURUM= SU KAPALI");
}
} else {
lcd.print("HATA"); // Eğer nem değeri geçerli değilse hata mesajı yazdır
}
unsigned long currentMillis = millis();
if (currentMillis - lastUpdate >= updateInterval) {
ThingSpeak.writeField(THINGSPEAK_CHANNEL_ID, 1, temperature, THINGSPEAK_API_KEY);
ThingSpeak.writeField(THINGSPEAK_CHANNEL_ID, 2, humidity, THINGSPEAK_API_KEY);
lastUpdate = currentMillis;
}
}