美文网首页
ESP8266+SSD1306显示B站粉丝数量

ESP8266+SSD1306显示B站粉丝数量

作者: Lengff | 来源:发表于2023-02-15 22:34 被阅读0次
    1.png

    说明

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

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

    接线图

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

    接线方式如下:

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

    接线图如下:

    3.png

    代码

    • 获取代码之前,需要先去获取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();
    }
    
    
    

    相关文章

      网友评论

          本文标题:ESP8266+SSD1306显示B站粉丝数量

          本文链接:https://www.haomeiwen.com/subject/khwukdtx.html