#include <WiFi.h>
#include <HTTPClient.h>
#include <ArduinoJson.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>
//const char* ssid = "Wokwi-GUEST";
//const char* password = "";
#define BTN_PIN 5
#define TFT_DC 2
#define TFT_CS 15
#define TFT_RST 4
char * sssid = "123456789012345";
//Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);
const String url = "https://v2.jokeapi.dev/joke/Programming";
String getJoke() {
HTTPClient http;
http.useHTTP10(true);
http.begin(url);
http.GET();
String result = http.getString();
DynamicJsonDocument doc(2048);
DeserializationError error = deserializeJson(doc, result);
// Test if parsing succeeds.
if (error) {
Serial.print("deserializeJson() failed: ");
Serial.println(error.c_str());
return "<error>";
}
String type = doc["type"].as<String>();
String joke = doc["joke"].as<String>();
String setup = doc["setup"].as<String>();
String delivery = doc["delivery"].as<String>();
http.end();
return type.equals("single") ? joke : setup + " " + delivery;
}
void nextJoke() {
tft.setTextColor(ST7735_WHITE);
tft.println("\nLoading joke...");
String joke = getJoke();
tft.setTextColor(ST7735_GREEN);
tft.println(joke);
}
void setup() {
pinMode(BTN_PIN, INPUT_PULLUP);
Serial.begin(115200);
///WiFi.begin((const char *)sssid, "", 6);
tft.initR(INITR_GREENTAB);
//tft.setRotation(0);
tft.fillScreen(ST7735_BLACK);
tft.println("start");
tft.setTextColor(ST7735_WHITE);
tft.setTextSize(1);
WiFi.mode(WIFI_STA);
tft.println("Scanning...");
int n = WiFi.scanNetworks();
tft.println("Scan done!");
if (n == 0) {
tft.println("No networks found.");
while (1);
}
tft.print(n);
tft.println(" networks found");
for (int i = 0; i < n; ++i) {
if (WiFi.encryptionType(0) == WIFI_AUTH_OPEN) {
tft.println(WiFi.SSID(0));
//strcpy(sssid, WiFi.SSID(0).c_str());
WiFi.begin(WiFi.SSID(i).c_str());
break;
}
}
tft.print("Connecting to WiFi");
while (WiFi.status() != WL_CONNECTED) {
delay(100);
tft.print(".");
}
tft.print("\nOK! IP=");
tft.println(WiFi.localIP());
nextJoke();
}
void loop() {
delay(100);
}