#include <WiFi.h>
#include <HTTPClient.h>
#include <ArduinoJson.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
//const char* ssid = "Lab Robotika";
//const char* password = "ridikc_industries";
const char* url = "https://voice.bujangdarapku.com/api.php";
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int scrollSpeed = 300; // Kecepatan teks berjalan (dalam milidetik)
String lastText = " "; // Panjang tetap 16 karakter diisi dengan spasi
void setup() {
Serial.begin(115200);
// Mulai koneksi WiFi
//WiFi.begin(ssid, password);
WiFi.begin("Wokwi-GUEST", "");
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Menghubungkan ke WiFi...");
}
Serial.println("Tersambung ke WiFi");
// Inisialisasi LCD
//lcd.begin();
lcd.init(); // Menggantikan lcd.begin()
lcd.backlight();
lcd.clear();
}
void loop() {
refreshLCD(); // Panggil fungsi untuk memperbarui teks dari server
scrollText(lastText, scrollSpeed); // Scroll teks pada LCD
}
void scrollText(const String& text, int speed) {
lcd.clear();
int textLength = text.length();
String paddedText = " " + text; // Tambahkan spasi ekstra untuk pengguliran di sebelah kanan
for (int i = 0; i < textLength + 16; i++) {
lcd.setCursor(0, 0);
// Ambil substring yang benar
lcd.print(paddedText.substring(i, i + 16));
delay(speed);
}
}
void refreshLCD() {
HTTPClient http;
http.begin(url);
int httpCode = http.GET();
if (httpCode == HTTP_CODE_OK) {
String payload = http.getString();
DynamicJsonDocument doc(1024);
DeserializationError error = deserializeJson(doc, payload);
if (!error) {
if (doc.containsKey("nilai")) {
String out_1_data = doc["nilai"];
Serial.print("Data out_1: ");
Serial.println(out_1_data);
if (out_1_data != lastText) {
// Atur lastText dengan panjang tetap 16 karakter, diisi dengan spasi jika teks lebih pendek
lastText = out_1_data;
lastText.concat(" "); // Panjang tetap 16 karakter diisi dengan spasi
}
} else {
Serial.println("Field 'out_1' tidak ditemukan dalam respons JSON.");
}
} else {
Serial.println("Gagal menguraikan JSON.");
}
} else {
Serial.printf("[HTTP] Kesalahan HTTP: %s\n", http.errorToString(httpCode).c_str());
}
http.end();
}