ESP8266+SSD1306显示B站粉丝数量

2023-10-31

在这里插入图片描述

说明

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

这次给大家带来通过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();
}


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ESP8266+SSD1306显示B站粉丝数量 的相关文章

  • 如何在观察者中处理具有不同状态值类型的 Observables

    首先是上下文和问题 框架代码在帖子底部 我们正在创建并实现一个 C 框架 以便在 Arduino 等环境中使用 为此 我想使用观察者模式 其中任何对传感器状态变化感兴趣的组件 Observables 可以注册自己 并且它将通过 Observ
  • 批处理文件:从串口接收数据并将其写入txt文件

    我正在尝试通过 USB 串行端口从 Arduino 提取一些数据并将其写入 txt 文件 因此 我使用批处理文件 Windows 7 普通cmd 它发送例如 d 从 Arduino 请求所需的数据 收到 d 后 Arduino 开始向 PC
  • 在 Android 上将 USB 波特率从 9600 更改为 115200

    我有一个 Arduino 它以 115200 波特率串行发送数据 有一个应用程序以 9600 波特率从 Arduino 接收数据 代码是 Arduino USB serial converter setup Set control line
  • Fedora 中的 Arduino 上传错误“stk500_recv(): 程序员没有响应”

    我正在尝试上传库存Blink在 Fedora Core 15 Linux 中使用 Arduino IDE 绘制草图 我收到此错误 avrdude stk500 recv 程序员没有响应 要重现该问题 通过 USB 线插入 Arduino U
  • ARDUINO 常数有什么用?以前是22,现在是100

    我正在使用热电偶并下载了 MAX6675 库 我想知道以下几行中 ARDUINO 常量的值是做什么用的 if ARDUINO gt 100 lcd write byte 0 else lcd print 0 BYTE endif lcd p
  • PySerial 从 Arduino 读取线路的延迟

    我正在使用带有基本 DigitalReadSerial 设置的 arduino uno 如下所述 http arduino cc en Tutorial DigitalReadSerial http arduino cc en Tutori
  • 如何将 ASCII char 转换为其 ASCII int 值?

    我想将 char 转换为它的ASCII http en wikipedia org wiki ASCIIint 值 我可以用所有可能的值填充一个数组并与其进行比较 但这对我来说似乎不正确 我想要类似的东西 char mychar k pub
  • Java RXTX 库不加载本机库

    基本上我想使用 Arduino 编写一个简单的通信工具java 的 RXTX 库 http rxtx qbang org wiki index php Main Page并且在加载动态库时严重失败 我的系统规格 操作系统 OS X 优胜美地
  • C-如何使用PROGMEM存储和读取char数组

    我有三个字符数组 我不希望 Arduino 将它们存储在SRAM http en wikipedia org wiki Static random access memory 所以我想使用PROGMEM来存储和读入flash http en
  • ESP32 Arduino-ide如何获取唯一id

    我试图自动为每个 esp32 设置一个唯一的 id 在我使用提供该方法的 ESP IDF 框架对设备进行编程之前esp efuse mac get default 这将返回一个 8 字节值 该值在我手上的所有设备上都是唯一的 在arduin
  • 如何实现Android Open Accessory模式即服务?

    我一直在研究 Android 开放配件开发套件 依照指示Google 提供的 DemoKit 示例 http developer android com guide topics usb accessory html 我在使解决方案适应我的
  • 使用串口通过 Arduino 将多个值发送到 Raspberry

    我有一个关于 Arduino 和 Raspberry Pi 之间串行通信的问题 事实上 我想使用 Arduino 将 2 个变量发送到 Raspberry Pi 并以不同的方式使用它们 这是我的 Arduino 草图 int one 1 i
  • ESP8266 I2C从机不确认数据

    我有一个 TM4C123 处理器作为 I2C 主处理器 一个 ESP8266 作为从处理器 对于 ESP 我使用的是 Arduino IDE 并在 2 5 2 版安装了 ESP8266 支持 它应该支持 I2C 从模式 但是 我无法让它工作
  • 从 iBeacon 接收 BLE 信号到 Bluno(arduino with BLE)

    我想从 iBeacon 到 Bluno 接收 rssi 信号和 UUID Arduino 板具有 BLE 对此有一些疑问 有没有从 BLE 到 BLE 接收 UUID 和 rssi 的解决方案 两个BLE设备可以互相通信吗 我想找一些网站来
  • Arduino串口数据解析

    我正在编写一个应用程序 通过蓝牙用我的 Android 手机控制我的机器人 一切都很顺利 数据得到回显和验证 但我在协议方面遇到了一些问题 特别是我希望我的机器人的轮子在我发送时转动一个命令 例如s 10 100 or s 30 10 数值
  • 在链接时合并全局数组/从多个编译单元填充全局数组

    我想定义一系列的东西 比如事件处理程序 的内容 该数组在编译时是完全已知的 但定义在 多个编译单元 分布在多个库中 至少在最终 静态 链接之前是相当解耦的 我想要 也保持这种方式 因此添加或删除编译单元将 还可以自动管理事件处理程序 而无需
  • 使用 Arduino 来操作 Android [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 有人尝试过让 Android 和 Arduino 相互通信吗 我在网上找到了几个项目 Amarino http www amarino tool
  • ESP32:dsb1820 温度传感器给出恒定的负 127 读数

    我正在尝试使用连接到 esp32 微控制器的单个 dsb1820 温度传感器来获取温度读数 传感器连接到 esp32 的 GPIO 4 我打算将温度读数发送到云端 我面临的问题是温度读数总是给出值 127 我在网上某处读到 当 dsb182
  • 类中的易失性变量:“‘易失性’之前预期有非限定 ID”?

    我有两个static volatile我的类中定义的变量ADC 该类写为 裁剪以节省空间 pragma once include PeriodicProcess PeriodicProcess h include
  • Arduino 引导加载程序

    有人可以解释一下如何Arduino引导加载程序 http code google com p arduino source browse tags 0019 hardware arduino bootloaders atmega ATmeg

随机推荐

  • 上传了ipa但在苹果App Store中没有看到构建版本的问题

    AU上传ipa出现下图红框提示说明成功上传 但有时App Store后台没有出现构建版本 请查看下面详细说明 一 首先登录iTunes Connect 后台 查看ipa构建情况 https appstoreconnect apple com
  • 点击.txt文件显示"不是有效的Win32应用程序"处理方法

    方法是 我的电脑 工具 文件夹选项 文件类型 找到txt文件 新建 操作为open 命令行为 C WINDOWS system32 NOTEPAD EXE 1 然后检查 windows system32文件夹下有没有NOTEPAD EXE
  • VMware Fusion Pro v10.1.6 苹果虚拟机免费版及解锁许可证

    说到虚拟机可以说现在市场上VM牌子的虚拟机是最为强大的一款没有之一 虽然还有一款德国软件公司InnoTek所开发的 VirtualBox 免费开源轻量级虚拟机软件 但是VMware 是这些虚拟机无法比拟的 Windows 平台 VMware
  • k8s 二进制安装多master节点高可用集群

    k8s 集群环境规划 系统统一使用 CentOS 7 9 192 168 1 10 k8s m1 控制节点1 192 168 1 11 k8s m2 控制节点2 192 168 1 20 k8s w1 node节点1 192 168 1 2
  • gtest测试用例

    google tf测试框架代码 https github com google googletest tree 2fe3bd994b3189899d93f1d5a881e725e046fdc2 跑单个测试例 test gtest filte
  • shell中if语句特殊参数

    shell中if语句特殊参数 d 判断制定的是否为目录 z 判断制定的变量是否存在值 n 判断指定的变量是否为null f 判断制定的是否为文件 L 判断制定的是否为符号链接 r 判断制定的是否可读 s 判断存在的对象长度是否为0 w 判断
  • 2023_Spark_实验九:Scala函数式编程部分演示

    需求 1 做某个文件的词频统计 某个单词在这个文件出现次数 步骤 1 文件单词规律 空格分开 2 单词切分 3 单词的统计 k v gt k 单词 V 数量 4 打印 框架 1 单例对象 main 2 创建CONF 3 创建SC gt 读取
  • Python--matplotlib绘图可视化知识点整理

    本文作为学习过程中对matplotlib一些常用知识点的整理 方便查找 强烈推荐ipython无论你工作在什么项目上 IPython都是值得推荐的 利用ipython pylab 可以进入PyLab模式 已经导入了matplotlib库与相
  • 在nginx的配置文件中,设置故障转移的策略、、配置健康检查

    要保证客户端在访问时不出错 可以采取以下几种方法 1 使用负载均衡器 在nginx服务器的前面添加一个负载均衡器 负载均衡器可以将客户端的请求分发到多个后端服务器上 当其中一个服务器宕机时 负载均衡器会自动将请求转发到其他正常运行的服务器上
  • thinkPHP 文件上传(文件太大不成功)

    thinkPHP 文件上传 文件太大不成功 补充一下上次说的文件上传 如果我们上传的文件太大而导致失败 我们可以在 php ini 这个配置文件修改两个字段 upload max filesize 50m post max size 50m
  • centos对已存在的文件夹创建软连接

    描述 由于 目录可用空间 即将存在不够用的情况 需要将 opt data 文件夹 应用中的一些 数据会不断的在此文件夹中累加 中创建软连接 将其直到 data opt data 进而 保证 目录不用爆满 文件系统 容量 已用 可用 已用 挂
  • 【云原生进阶之PaaS中间件】第二章Zookeeper-2-安装部署

    1 Zookeeper安装配置 环境准备 一台安装有jdk的虚拟机 192 168 152 130 1 1 安装 1 1 1 下载 cd software wget http mirror bit edu cn apache zookeep
  • Android logcat 命令小结

    logcat 是 Android 开发最常用的 debug 方式 记录下常用的命令 1 清除缓冲区 logcat c 2 查看缓冲区大小 logcat g 3 修改缓冲区大小 logcat G 10m 有些机器的缓冲区很小 不修改的话 有可
  • Go+Together——Go+1.0发布会暨Go+开发者基金会启动仪式重磅来袭!

    你想参与iPhone13抽奖吗 你想和大咖面对面交流吗 你想收获最前沿的行业动态吗 10 月15 日 Go Together Go 1 0发布会暨Go 开发者基金会启动仪式重磅来袭 活动中除七牛云 CEO Go 语言发明人许式伟以及Go 开
  • 感知机(Perceptron)-----最详细记录感知机

    1 前言 感知机是1957年 由Rosenblatt提出会 是神经网络和支持向量机的基础 感知机是有生物学上的一个启发 他的参照对象和理论依据可以参照下图 我们的大脑可以认为是一个神经网络 是一个生物的神经网络 在这个生物的神经网络里边呢
  • uniapp nvue页面 map地图全屏设置

    nvue页面 100vh 以及百分比不可用 1 可以获取当前屏幕高度 然后赋值
  • C++11新增语法特性及标准库简介

    1 core language features 1 1 C99 preprocessor C99的预处理器宏可以支持一些复杂的操作 VS2015支持部分特性 VS2019支持更多 很多大型C项目 像CPython ffmpeg等 需要支持
  • springboot项目接入支付宝支付

    在写项目中为了功能完善我们经常会用到支付宝 现在用支付宝沙箱模拟 首先导入依赖
  • 量子位系列栏目「最“in”大模型」|全新角度解析&展望大模型

    in 是近年来兴起的一个网络用语 通常是in fashion的简称 意指走在潮流最前沿 作为科技圈顶流之一的大模型 它最in的打开方式应该是什么样的 为了使大模型可以更in practice 英特尔给出了哪些够in的技术路径或解题思路 大家
  • ESP8266+SSD1306显示B站粉丝数量

    说明 太久没更新博文了 生活和工作让我迷失了方向 一直都停滞不前 可能是过完年口袋里又没钱了 又想起来要努力了吧 从新开始更新博客内容 这次给大家带来通过8266 SSD1306显示屏来显示bilibili粉丝数量 这个其实网上都能找到一大