#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#include <WiFi.h>
#include <ThingSpeak.h>
#include <ESP32Servo.h>
#define DHTPIN 21 // ESP32'deki uygun pine değiştirin
#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);
myservo.attach(22); // ESP32'deki uygun pine değiştirin
dht.begin();
lcd.init();
lcd.backlight();
pinMode(15, INPUT_PULLUP); // ESP32'deki uygun pine değiştirin
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
ThingSpeak.begin(client);
}
void loop() {
int b;
int a = digitalRead(15); // ESP32'deki uygun pine değiştirin
delay(50);
if (a == 0) {
b = b + 1;
delay(500); // Düğme debounce için kısa bir bekleme
}
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
lcd.clear(); // Ekranı temizle
lcd.setCursor(0, 0);
lcd.print("NEM DEGERI=");
lcd.setCursor(11, 0);
lcd.print(humidity);
lcd.setCursor(16, 0);
lcd.print("C");
if (humidity <= 30) {
myservo.write(180);
digitalWrite(10, HIGH);
digitalWrite(11, LOW);
lcd.setCursor(0, 1);
lcd.print("DURUM= SU ACIK");
} else if (humidity >= 40) {
myservo.write(0);
digitalWrite(10, LOW);
digitalWrite(11, HIGH);
lcd.setCursor(0, 1);
lcd.print("DURUM=SU KAPALI");
}
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;
}
}