//Anastasia Tiara Andini Yuanita
//16032110005
//TNU29
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <WiFi.h>
#include <ThingSpeak.h>
#include <DHTesp.h>
#define DHTPIN 15
#define DHTTYPE DHTesp::DHT22
#define WIFI_SSID "Wokwi-GUEST"
#define WIFI_PASSWORD ""
#define THINGSPEAK_CHANNEL_ID 2
#define THINGSPEAK_API_KEY "J9XOJN93OT18CR1L"
DHTesp dht;
WiFiClient client;
LiquidCrystal_I2C lcd(0x27, 16, 2);
unsigned long previousMillis = 0;
void setup() {
lcd.init(); // Inisialisasi LCD 16x2 I2C
lcd.backlight();
dht.setup(DHTPIN, DHTTYPE);
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
ThingSpeak.begin(client);
}
void loop() {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= 1000) {
previousMillis = currentMillis;
int seconds = (currentMillis / 1000) % 60;
int minutes = (currentMillis / (1000 * 60)) % 60;
int hours = (currentMillis / (1000 * 60 * 60)) % 24;
String time = String(hours) + ":" + (minutes < 10 ? "0" : "") + String(minutes) + ":" + (seconds < 10 ? "0" : "") + String(seconds);
lcd.setCursor(0, 0);
lcd.print("Waktu: ");
lcd.print(time);
float temperature = dht.getTemperature();
if (isnan(temperature)) {
lcd.setCursor(0, 1);
lcd.print("Failed to read");
lcd.setCursor(0, 2);
lcd.print("temperature!");
delay(2000);
return;
}
float humidity = dht.getHumidity();
if (isnan(humidity)) {
lcd.setCursor(0, 1);
lcd.print("Failed to read");
lcd.setCursor(0, 2);
lcd.print("humidity!");
delay(2000);
return;
}
lcd.setCursor(0, 1);
lcd.print("Suhu: ");
lcd.print(temperature);
lcd.print(" C");
lcd.setCursor(0, 2);
lcd.print("Kelembapan: ");
lcd.print(humidity);
lcd.print(" %");
ThingSpeak.setField(1, temperature);
ThingSpeak.setField(2, humidity);
ThingSpeak.writeFields(THINGSPEAK_CHANNEL_ID, THINGSPEAK_API_KEY);
}
delay(100);
}