esp8266b站粉丝显示器

2023-10-31

本文教程是转载

本文教程是转载

本文教程是转载

仅仅当做笔记使用

如有侵权会立即删除

原来视频网址:https://www.bilibili.com/video/av55551802?t=194

以及他的github:

使用ESP-01S模块和1.3"OLED制作Bilibili粉丝数显示器。 关于线路原理图和PCB可以在代码目录中查看。 代码地址: https://github.com/hungtcs-lab/bilibili-follower-viewer ArduinoJSON: https://arduinojson.org/ esp8266-oled-ssd1306: https://github.com/ThingPulse/esp8266-oled-ssd1306

 

/*
开发环境arduino IDE
*/
#include <SH1106.h>
#include <Ticker.h>
#include <ArduinoJson.h>
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>

const char* ssid = "iPhonex";
const char* passwd = "1234567899";
const char* userId = "384495859";

uint8_t count = 0;//起到计时的作用
uint8_t refreshing = 0;//标志型变量,用来标志当前有没有请求数据

/*接下来分别对3个类型进行实例化*/
Ticker ticker;//声明一个系统变量
SH1106 display(0x3C, 2, 0);//实例化一个oled1106驱动库的变量,在变量的函数里我们需要制定i2c的从器件地址,制定SDA和SCL的
HTTPClient http;

//我们来调用显示函数库,用来显示Message
void showMessage(String message = "loading") {
  display.clear();
  display.setFont(ArialMT_Plain_24);
  display.setTextAlignment(TEXT_ALIGN_CENTER);
  display.drawString(64, 18, message);
  display.display();
}

//判断wifi是否链接
boolean isWIFIConnected() {
  return !(WiFi.status() == WL_CONNECT_FAILED || WiFi.status() == WL_CONNECTION_LOST || WiFi.status() == WL_DISCONNECTED);
}

//用来链接wifi,需要传入两个参数,一个是wifi的ssid,一个是passwd
void wifiConnect(const char* ssid, const char* passwd) {
  WiFi.begin(ssid, passwd);
  Serial.printf("Connecting to %s\n", ssid);
  showMessage("Connecting");
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println();
  Serial.printf("Connected to %s\n", ssid);
}
//请求bilibili粉丝数
uint32_t requestBNumber(const char* userId) {
  int httpCode;
  http.begin("api.bilibili.com", 80, "/x/relation/stat?vmid=" + String(userId));//请求API接口,接口地址api.bilibili.com,路径/x/relation/stat?vmid,userId,你的账号id
  httpCode = http.GET();//接下来就会返回一个数据
  if(httpCode == HTTP_CODE_OK) {
    DynamicJsonDocument doc(1024);
    deserializeJson(doc, http.getString());
    JsonObject response = doc.as<JsonObject>();
    return response["data"]["follower"].as<uint32_t>();//首先获取dat变量下的follower,然后转成uint32类型,然后返回
  } else {
    Serial.println(http.getString());
    delay(3000);
    Serial.printf("start retry....");
    if(!isWIFIConnected()) {
      wifiConnect(ssid, passwd);
    }
    return requestBNumber(userId);
  }
}

//刷新屏幕用来显示粉丝数
void refreshBNumber() {
  uint32_t number = requestBNumber(userId);
  showMessage(String(number));
}

//首先开启串口
void setup() {
  Serial.begin(115200);
  Serial.println();

 //利用系统滴答,每一秒给count加1
  ticker.attach(1, []() {
    count ++;  
  });
  
  display.init();//初始化显示器
  display.flipScreenVertically();//配置显示参数
  display.setFont(ArialMT_Plain_10);//配置显示参数

//设置wifi模式为WIFI_STA模式
  WiFi.mode(WIFI_STA);
  wifiConnect(ssid, passwd);//连接wifi
  refreshBNumber();//刷新屏幕
}

//
void loop() {
  //判断wifi是否连接成功,如果不成功的话需要重新进行连接
  while(!isWIFIConnected()) {
    Serial.printf("Reconnecting...\n");
    wifiConnect(ssid, passwd);
  }

//每30秒请求一次bilibili服务器
  if(count % 30 == 0) {
    if(refreshing != count) {
      refreshing = count;
      refreshBNumber();
    }
  }
}

如果你用的是这种的,那就太好了,直接看一下原理图接线就可以了

 

 

 

但是你用的是下面这种模块化的那么就,需要下面这张图的对照了 

 

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

esp8266b站粉丝显示器 的相关文章

随机推荐

  • js 奇淫巧技

    各种 js 的奇淫巧技 在这里记录一下 也分享给广大网友 目录 js 可选链 sleep函数实现 函数劫持 自动执行函数 任意值转换为 boolean 数组 查找 过滤 更改 console输出表格 js 可选链 a b 对象 a 访问属性
  • C语言之数字处理中的常见问题

    C语言之数字处理中的常见问题 问题1 如何统计一个数字n是几位数 算法思想 定义一个记录数字位数的变量t 计数器 并初始化0 每丢弃一次个位数字时 计数器 1 直到被处理的数字n 0 源代码 int Count long long int
  • 大数据Kafka:构建Kafka集群及编写Shell启动命令脚本

    Kafka是一个分布式流处理平台 广泛用于处理大规模数据流 本文将详细介绍如何构建Kafka集群并编写Shell启动命令脚本 一 Kafka集群搭建 以下是构建Kafka集群的步骤 安装Java和Kafka 首先 确保在所有集群节点上安装了
  • 基本的数据类型(Java/C++)

    本科时候用C 说oj上面的题目比较多 从c 到java感觉二则语言上还是有所不同的 作为基础中的基础在此总结一下 Java的八种基本数据类型的大小 以及他们的封装类是什么 1 Java的基本数据类型 2 数据类型之间的转换 3 基本数据类型
  • Java web:Servlet实战开发

    Java web Servlet实战开发 推荐本人原创专栏 Servlet JDBC实战开发书店系统 如果你对Java Web开发中的Servlet和数据库操作感兴趣 那么我强烈推荐你阅读我撰写的专栏 Servlet JDBC实战开发 书店
  • 信息技术教育和培训领域的领导者,

    信息技术教育和培训领域的领导者 具有卓越的竞争力和稳定的业绩增长 传智教育成立于2012年9月 主要从事非学历 应用型计算机信息技术 IT 教育培训 主要从事计算机信息技术 IT 高等教育培训 在 传智专业学院 平台上提供2 5至4年的IT
  • 微信小程序的数据缓存

    当我们做 微信小程序开发的时候 我们经常要与后台打交道 做一些数据缓存的工作 用到的方法为 wx setStorage wx getStorage wx clearStorage 第一步 存储数据 首先我们要定义初始化的值 默认为空 js中
  • 阿里在职5年,一个女测试工师的坎坷之路

    几年前进入到IT行业 现在发现学习软件测试的人越来越多 今天我想根据自己的行业经验给大家提一些建议 跟其他行业相比 做软件测试的岗位确实算是高薪职业 我们那个时候起步的工资并不高 而看现在很多毕业的学生薪资都是8000起步 工资越来越高是肯
  • 听书会-富爸爸穷爸爸

    1 为啥白领的钱总不够花 金钱观念 拼命学习技能 找个好单位 升职加薪 这些都是为了钱 变成钱的奴隶 最终导致把职业当成事业 学校才是背锅侠 富人关注事业 关心资产 穷人关注职业 关心收入 穷人拿工资 保持收支平衡 好好工作并不能解决钱的问
  • C#自定义控件的创建

    C 自定义控件的创建 在编程过程中 现有的c 控件远远不能满足我们的需要 这时候就需要我们自己来开发控件了 本人在开发自定义控件时走了一些弯路 写下此篇 希望能够给有需要的朋友一些帮助 也借此加深自己的印象 1 创建自定义控件 选择 经典桌
  • cpu相关知识

    缓存行 读数据一块一块的的读 缓存行 缓存行越大 局部性空间效率越高 但读取时间慢缓存行越小 局部性空问效率越低 但读取时间快取一个折中值 目前多用 64字节 volatile MSI MESI MOSI Synapse Firefly D
  • Socket通讯工具类【SocketTools】

  • 神经网络编程

    init 初始化函数 需要指定一个学习率 train 训练函数 query 函数接受神经网络的输入 返回网络的输出 神经网络代码 class neuralNetwork def init self inputnodes hiddennode
  • 求两数的最大公约数的三种方法(python实现)

    求两个数的最大公约数 有三种方法 分别是 短除法 辗转相除法 更相减损法 短除法 运用短除法找到两个数的最大公约数 具体过程是逐步找出两个数的所有公约数 再把这些公约数累乘起来 就得到两个数的最大公约数 def func1 a int in
  • Web前端期末大作业---新农村建设网页设计

    作者简介 一名普通本科大三的学生 致力于提高前端开发能力 个人主页 前端小白在前进的主页 个人社区 个人交流社区 学习格言 打不倒你的会使你更强 前言 期末来咯 很多小伙伴们苦苦难受在老师的多要求 难受在老师要求的页面有点多 HTML网页无
  • 出现missing function-prototype警告、requires ANSI-style prototype报错

    报错 warning C206 Delay us missing function prototype error C267 Delay us requires ANSI style prototype 解决方法 添加文件路径即可 也就是你
  • 《动手学深度学习 Pytorch版》 6.1 从全连接层到卷积

    6 1 1 不变性 平移不变性 translation invariance 不管检测对象出现在图像中的哪个位置 神经网络的前面几层应该对相同的图像区域具有相似的反应 即为 平移不变性 局部性 locality 神经网络的前面几层应该只探索
  • saltstack匹配minion以及自定义用户组nodegroup

    转载 http blog itpub net 30129545 viewspace 1456748 前提 操作在master在进行 minion id minion的唯一标示 默认情况minion id是minion的主机名 FQDN 你可
  • 你不知道的JavaScript-------值

    目录 数组 字符串 数字 不是值的值 特殊的数字 零值 值和引用 数组 1 delete运算符可以将单元从数组中删除 但length属性不会发生变化 2 数组通过数字进行索引 但数组也是对象 所以也可以包含字符串键值和属性 不过不计算在数组
  • esp8266b站粉丝显示器

    本文教程是转载 本文教程是转载 本文教程是转载 仅仅当做笔记使用 如有侵权会立即删除 原来视频网址 https www bilibili com video av55551802 t 194 以及他的github 使用ESP 01S模块和1