#include <WiFi.h>
#include <HTTPClient.h>
#include <ArduinoJson.h>
#include <LiquidCrystal_I2C.h>
// WiFi info
const char* ssid = "Wokwi-GUEST";
const char* password = "";
// LCD setup: 0x27 alamat I2C, 16 kolom, 2 baris
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
Serial.begin(115200);
lcd.init(); // Inisialisasi LCD
lcd.backlight(); // Nyalakan backlight
lcd.setCursor(0, 0);
lcd.print("Connecting...");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nConnected!");
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("WiFi Connected");
delay(1000);
fetchData();
}
void fetchData() {
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http;
http.begin("https://dummyjson.com/users/1");
int httpResponseCode = http.GET();
if (httpResponseCode > 0) {
String payload = http.getString();
Serial.println("Response:");
Serial.println(payload);
// JSON parsing
const size_t capacity = 1024;
DynamicJsonDocument doc(capacity);
DeserializationError error = deserializeJson(doc, payload);
if (!error) {
String firstName = doc["firstName"];
String lastName = doc["lastName"];
String email = doc["email"];
String phone = doc["phone"];
String userPassword = doc["password"];
Serial.println("Nama : " + firstName + " " + lastName);
Serial.println("Email : " + email);
Serial.println("Phone : " + phone);
Serial.println("Password : " + userPassword);
// Tampilkan ke LCD (terbatas 16 karakter per baris)
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(firstName + " " + lastName);
lcd.setCursor(0, 1);
lcd.print(phone.substring(0, 16)); // hanya 16 karakter
// Tunda 4 detik, lalu ganti tampilan
delay(4000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Email:");
lcd.setCursor(0, 1);
lcd.print(email.substring(0, 16)); // potong kalau lebih dari 16
delay(4000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Password:");
lcd.setCursor(0, 1);
lcd.print(userPassword);
} else {
Serial.print("JSON Error: ");
Serial.println(error.c_str());
lcd.clear();
lcd.print("JSON Error");
}
} else {
Serial.print("HTTP Error: ");
Serial.println(httpResponseCode);
lcd.clear();
lcd.print("HTTP Error");
}
http.end();
}
}
void loop() {
// Kosong karena hanya ambil data sekali
}