#include <WiFi.h>
#include <HTTPClient.h>
#include <LiquidCrystal_I2C.h>
#include <ArduinoJson.h>
// WiFi Credentials
const char* ssid = "Duchesse"; // Change this to your actual WiFi name
const char* password = "yaya2002@"; // Change this to your actual WiFi password
// Flask API URL (Update with your local IP)
const char* api_url = "http://172.20.10.4:5000/api/candidates";
// Initialize LCD (I2C Address: 0x27)
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
Serial.begin(115200);
lcd.init();
lcd.backlight();
// Connect to WiFi
WiFi.begin(ssid, password);
lcd.setCursor(0, 0);
lcd.print("Connecting...");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("WiFi Connected!");
Serial.println("\nConnected to WiFi!");
delay(2000);
lcd.clear();
// Fetch and display candidates
fetchCandidates();
}
void fetchCandidates() {
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http;
http.begin(api_url);
int httpResponseCode = http.GET();
if (httpResponseCode > 0) {
String response = http.getString();
Serial.println("Response from Server:");
Serial.println(response);
// Parse JSON response
DynamicJsonDocument doc(1024);
DeserializationError error = deserializeJson(doc, response);
if (error) {
Serial.print("JSON Parsing Failed: ");
Serial.println(error.f_str());
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("JSON Error");
http.end();
return;
}
JsonArray candidates = doc["candidates"].as<JsonArray>();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Candidates:");
for (int i = 0; i < candidates.size() && i < 2; i++) {
lcd.setCursor(0, i + 1);
lcd.print(candidates[i]["name"].as<String>());
}
} else {
Serial.print("HTTP Request failed, Error Code: ");
Serial.println(httpResponseCode);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Error Fetching");
}
http.end(); // Always free resources
}
}
void loop() {
// Nothing here, display candidates once
}