ESP8266+SSD1306显示B站粉丝数量

在这里插入图片描述

说明

太久没更新博文了,生活和工作让我迷失了方向,一直都停滞不前。可能是过完年口袋里又没钱了,又想起来要努力了吧,从新开始更新博客内容。

这次给大家带来通过8266 + SSD1306显示屏来显示bilibili粉丝数量,这个其实网上都能找到一大把,但是我还是贡献一篇较为完整的内容吧。

接线图

我买的是下图这种四脚的SSD1306显示屏

在这里插入图片描述

接线方式如下:

GND—G
VCC—3V
SCL—D1
SDA—D2

接线图如下:

在这里插入图片描述

代码

  • 获取代码之前,需要先去获取B站用户的UID,这个点到UP主的主页,浏览器地址栏就可以看到。
    如:https://space.bilibili.com/385237224 ,其中【385237224】就是我的bilibili粉丝UID,将代码中的UID改成自己的即可。

  • 注意:代码烧录过程中可能会报缺少库的错误,这些【ArduinoJson,Adafruit_GFX,Adafruit_SSD1306】库是需要自己手动去搜索库文件安装一下就可以了。


#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>
#include <ESP8266HTTPClient.h>

#include <WiFiClient.h>
#include <ArduinoJson.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <WiFiClientSecureBearSSL.h>

#define SCREEN_WIDTH 128 // OLED显示器宽度(像素)
#define SCREEN_HEIGHT 64 // OLED显示器高度(像素)
// 初始化SSD1306
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

const uint8_t fingerprint[20] = {0x40, 0xaf, 0x00, 0x6b, 0xec, 0x90, 0x22, 0x41, 0x8e, 0xa3, 0xad, 0xfa, 0x1a, 0xe8, 0x25, 0x41, 0x1d, 0x1a, 0x54, 0xb3};

// 这里设置B站的用户ID
#define BILIBILI_UID 385237224

ESP8266WiFiMulti WiFiMulti;

void setup() {
  Serial.begin(115200);
  if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
    Serial.println(F("SSD1306初始化失败"));
    while (true) {};
  }
  display.clearDisplay();
  display.setTextColor(WHITE);
  // 开始连接wifi
  WiFi.mode(WIFI_STA);
  WiFiMulti.addAP("你家wifi名称,只支持2.4Gwifi", "你加wifi密码");

}

void loop() {
  // 等待WiFi连接
  if ((WiFiMulti.run() == WL_CONNECTED)) {
    std::unique_ptr<BearSSL::WiFiClientSecure>client(new BearSSL::WiFiClientSecure);
    client->setFingerprint(fingerprint);
    client->setInsecure();

    HTTPClient http;
    Serial.print("开始调用接口获取bilibili粉丝接口!\n");
    http.begin(*client, "https://api.bilibili.com/x/relation/stat?vmid=" + BILIBILI_UID);
    int httpCode = http.GET();
    // 出错时httpCode将为负数
    if (httpCode > 0) {
      // HTTP标头已发送,服务器响应标头已处理
      Serial.printf("[HTTP]code: %d\n", httpCode);
      if (httpCode == HTTP_CODE_OK || httpCode == HTTP_CODE_MOVED_PERMANENTLY) {
        String json = http.getString();
        Serial.println(json);
        DynamicJsonDocument doc(2048);
        deserializeJson(doc, json);
        // 获取bilibili粉丝数量
        long follower = doc["data"]["follower"];
        showBilibiliFollower(follower);
      }
    } else {
      Serial.printf("[HTTP] 调用获取bilibili粉丝接口失败,失败原因: %s\n", http.errorToString(httpCode).c_str());
    }
    http.end();
  }
  delay(1000);
}

/**
   显示bilibili粉丝数量
*/
void showBilibiliFollower(long follower) {
  // 显示
  display.clearDisplay();
  display.setTextSize(4);
  display.setCursor(0, 15);
  display.print(follower);
  //刷新显示
  display.display();
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值