#include <WiFi.h>
#include <ArduinoJson.h>
#include <HTTPClient.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
String jsonBuffer;
void setup() {
Serial.begin(115200);
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3D for 128x64
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
delay(2000);
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0, 0);
// Display static text
display.println("Connecting to WiFi");
// display.println("Hello, world!");
display.display();
WiFi.begin("Wokwi-GUEST", "", 6);
while (WiFi.status() != WL_CONNECTED) {
delay(100);
Serial.print(".");
}
display.println("Connected!");
display.display();
}
String url = "https://api.themeparks.wiki/v1/entity/{entity_id}/live";
void loop() {
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http;
http.setConnectTimeout(10000); // Set timeout to 10 seconds
String entity_id = "352feb94-e52e-45eb-9c92-e4b44c6b1a9d";
String url = "https://api.themeparks.wiki/v1/entity/" + entity_id + "/live";
http.begin(url); // Initialize HTTPClient with URL
int httpCode = http.GET();
if (httpCode > 0) { // Check the returning code
if (httpCode == HTTP_CODE_OK) {
String response = http.getString();
Serial.println(response); // Log the response
// Parse JSON
DynamicJsonDocument doc(2048);
DeserializationError error = deserializeJson(doc, response);
if (error) {
Serial.print(F("deserializeJson() failed: "));
Serial.println(error.c_str());
display.clearDisplay();
display.setCursor(0, 0);
display.println("JSON parse error");
display.display();
} else {
String rideName = doc["name"];
Serial.println(rideName);
display.clearDisplay();
display.setCursor(0, 0);
display.println("Ride: " + rideName);
display.display();
}
} else {
Serial.print("Error on HTTP request: ");
Serial.println(httpCode);
display.clearDisplay();
display.setCursor(0, 0);
display.println("HTTP request failed");
display.display();
}
} else {
Serial.println("HTTP request failed");
display.clearDisplay();
display.setCursor(0, 0);
display.println(httpCode);
display.display();
}
http.end(); // Free resources
}
delay(500); // Send a request every 0.5 seconds
}