帮我写一个用esp8266和1306屏幕显示B站粉丝的代码,要求使用u8g2库和arduinojson库
时间: 2024-02-11 16:09:15 浏览: 149
WifiEspNow:ESP8266 和 ESP32 的 ESP-NOW Arduino 库
5星 · 资源好评率100%
好的,以下是一个简单的示例代码,用于使用 ESP8266 和 1306 OLED 显示屏显示 Bilibili 粉丝数。该代码使用了 U8g2 库和 ArduinoJson 库。
首先,你需要在 Arduino IDE 中安装 U8g2 和 ArduinoJson 库。然后,将 ESP8266 连接到网络,并将 OLED 屏幕连接到 ESP8266。
接下来,你可以使用以下代码:
```c++
#include <ESP8266WiFi.h>
#include <U8g2lib.h>
#include <ArduinoJson.h>
const char* ssid = "YOUR_SSID";
const char* password = "YOUR_PASSWORD";
const char* bilibili_api_host = "api.bilibili.com";
const char* bilibili_api_path = "/x/relation/stat?vmid=YOUR_UID";
WiFiClient client;
U8G2_SSD1306_128X32_UNIVISION_F_HW_I2C u8g2(U8G2_R0);
void setup() {
Serial.begin(115200);
u8g2.begin();
u8g2.setFont(u8g2_font_ncenB08_tr);
u8g2.clearBuffer();
u8g2.drawStr(0, 10, "Connecting to WiFi...");
u8g2.sendBuffer();
connectToWifi();
}
void loop() {
if (WiFi.status() == WL_CONNECTED) {
u8g2.clearBuffer();
u8g2.drawStr(0, 10, "Fetching data...");
u8g2.sendBuffer();
String response = getBilibiliData();
int followers = parseBilibiliData(response);
u8g2.clearBuffer();
u8g2.setCursor(0, 10);
u8g2.print("Bilibili Followers:");
u8g2.setCursor(0, 20);
u8g2.print(followers);
u8g2.sendBuffer();
delay(10000);
} else {
connectToWifi();
}
}
void connectToWifi() {
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
}
String getBilibiliData() {
if (!client.connect(bilibili_api_host, 80)) {
Serial.println("Connection failed");
return "";
}
client.print(String("GET ") + bilibili_api_path + " HTTP/1.1\r\n" +
"Host: " + bilibili_api_host + "\r\n" +
"Connection: close\r\n\r\n");
delay(500);
String response = "";
while (client.available()) {
char c = client.read();
response += c;
}
client.stop();
return response;
}
int parseBilibiliData(String response) {
StaticJsonDocument<200> doc;
deserializeJson(doc, response);
return doc["data"]["follower"].as<int>();
}
```
在这个示例代码中,我们首先定义了 WiFi 的 SSID 和密码,以及 Bilibili API 的地址和路径。然后,我们定义了一个 WiFi 客户端以及一个 OLED 显示屏对象。
在 `setup()` 函数中,我们初始化 OLED 显示屏,并显示连接 WiFi 的消息。然后,我们调用 `connectToWifi()` 函数连接到 WiFi。
在 `loop()` 函数中,我们首先检查 WiFi 是否连接成功。如果连接成功,我们就调用 `getBilibiliData()` 函数获取 Bilibili 粉丝数,然后使用 `parseBilibiliData()` 函数解析数据并显示在 OLED 屏幕上。最后,我们暂停 10 秒钟,然后重新开始循环。
在 `connectToWifi()` 函数中,我们使用 `WiFi.begin()` 函数连接到 WiFi,并等待连接成功。
在 `getBilibiliData()` 函数中,我们使用 `client.connect()` 函数连接到 Bilibili API,并发送 HTTP GET 请求。然后,我们等待一段时间,直到服务器返回响应,并将响应保存在一个字符串中。
在 `parseBilibiliData()` 函数中,我们使用 ArduinoJson 库解析 JSON 数据,获取 Bilibili 粉丝数。
请注意,此示例代码仅供参考。你需要根据你的具体情况进行修改,例如更改 SSID、密码、UID 等。同时,你还需要将 OLED 显示屏连接到正确的引脚上。
阅读全文