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站粉丝数量 的相关文章

  • VSCode 上的 PlatformIO 未编译:collect2.exe:错误:ld 返回 1 退出状态

    我最近不得不擦拭我的计算机 在一切准备就绪并运行之后 是时候打开我之前正在处理的一些 ESP32 程序了 发现 VSCode 上的 Platform IO 将不再编译 运行编译器后 我收到以下错误 Compiling pio build e
  • Arduino F()宏的实现

    我试图了解 Arduino 中的 F 宏实际上对 PGMEM 和 RAM 做了什么以及运行时的影响是什么 有人可以指出定义这个宏的文件吗 这可能是旧版本 但定义它的一个地方是Wstring h as in here http andybro
  • Arduino:将数据存储在 EEPROM 中的轻量级压缩算法

    我想将大量数据存储到我的 Arduino 上ATmega168 http www atmel com devices atmega168 aspx ATmega328 http www atmel com devices atmega328
  • 如何使用arduino从sim900模块的RTC读取日期和时间数据?

    include SIM900 h include
  • 如何将 char 数组定义为常量?

    这里是 C C 菜鸟 我已经在头文件中定义了它 typedef unsigned char BitChar 9 8 data bytes chars and one width byte char extern BitChar BitFon
  • 如何在 Arduino 上比较 __FlashStringHelper* 和 char*?

    我有一个将文本行输出到串行的板 我需要将这些文本行与我所知道的文本进行比较 本质上 我想做strcmp thestring F knownstring 但是似乎没有一个采用 FlashStringHelper 类型的 strcmp 版本 有
  • PySerial 从 Arduino 读取线路的延迟

    我正在使用带有基本 DigitalReadSerial 设置的 arduino uno 如下所述 http arduino cc en Tutorial DigitalReadSerial http arduino cc en Tutori
  • Arduino:使用串口和软件串口与蓝牙模块

    我的目的是使用 Arduino 通过 HC 05 蓝牙模块在 PC 和 Android 设备之间建立通信 我使用 PC 和 Arduino 串行监视器 之间的 USB 通信以及 SoftwareSerial 来连接到 HC 05 我的问题是
  • 如何将 ASCII char 转换为其 ASCII int 值?

    我想将 char 转换为它的ASCII http en wikipedia org wiki ASCIIint 值 我可以用所有可能的值填充一个数组并与其进行比较 但这对我来说似乎不正确 我想要类似的东西 char mychar k pub
  • 是否有通用 I2C 命令来查看设备是否仍然存在于总线上?

    是否有通用的 I2C 命令来查看设备在初始化一次后是否仍然存在于总线上 例如 OLED 显示器 我问这个的原因是为了避免主程序由于库代码中存在无限循环而冻结 当设备断开连接时 例如 Wire 库 在 MCU 启动时 我想检查设备是否可用 并
  • 使用串口通过 Arduino 将多个值发送到 Raspberry

    我有一个关于 Arduino 和 Raspberry Pi 之间串行通信的问题 事实上 我想使用 Arduino 将 2 个变量发送到 Raspberry Pi 并以不同的方式使用它们 这是我的 Arduino 草图 int one 1 i
  • Arduino:连接字符串时崩溃和错误

    我尝试将 AES 256 加密的输出连接到一个字符串 将此字符串与从 Android 手机发送的加密字符串进行比较 基本上 连接似乎有效 但在几次运行后会出现错误 不可读的字符 字符串变得更短而不是更长 或崩溃 它是可重现的 重启后在同一点
  • 将浮点数转换为字节数组的 C 函数

    我正在尝试创建一个函数来接受浮点变量并将其转换为字节数组 我找到了一段有效的代码片段 但如果可能的话 希望在函数中重用它 我也在使用 Arduino 环境 但我知道它接受大多数 C 语言 目前工作 float variable 1 11 b
  • 使用 Java 控制 Arduino

    我正在寻找一个LED http en wikipedia org wiki Light emitting diode用Java程序打开和关闭 我用 C 完成了这个项目大约 5 分钟 但用 Java 似乎更具挑战性 我让 Arduino 等待
  • 如何提高 PySerial 读取速度

    我目前正在构建一台使用 Arduino Mega2560 作为主控制器的机器 Arduino 通过串口连接 获取命令 执行它并每 1ms 吐出一堆测量数据 我有一个运行 Python 的 Raspberry Pi 为用户提供一个漂亮的 GU
  • 通过iPhone音频插孔读取数据

    我正在寻找一种方法来读取通过 iPhone 的音频插孔从 Arduino 发送的原始数据 我搜索了很多并发现this https github com sanjibahmad Is Headphone Plugged In tree mas
  • Arduino串口数据解析

    我正在编写一个应用程序 通过蓝牙用我的 Android 手机控制我的机器人 一切都很顺利 数据得到回显和验证 但我在协议方面遇到了一些问题 特别是我希望我的机器人的轮子在我发送时转动一个命令 例如s 10 100 or s 30 10 数值
  • Arduino 高低

    我有一个 Arduino 我想知道到底是什么HIGH and LOW意思是 就实际值而言 它们是否有符号ints unsigned ints unsigned char是 他们的价值观是什么 我猜HIGH and LOW可能是unsigne
  • Arduino 错误:未命名类型?

    我已经编写了一个库 但遇到错误未命名类型的问题 我已经尝试了一切 搜索了几个小时 但没有运气 库放置在arduino sketch文件夹的 libraries 文件夹中 请帮忙 我使用的是 OSX 但 Windows 上也出现同样的问题 这
  • 带 firebase 的 Nodemcu(ESP8266)

    这是我上传到 ESP8266 以连接到 firebase 的代码 include

随机推荐

  • 上传了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粉丝数量 这个其实网上都能找到一大