ESP32-C6 手搓一个自行车码表
本帖最后由 大肋密探 于 2024-4-19 15:35 编辑一、 概要Beetle ESP32-C6是一款基于ESP32-C6芯片设计的迷你体积的Arduino低功耗物联网开发板,该开发板仅有硬币大小(25*20.5mm)。ESP32-C6搭载160MHz的高性能RISC-V 32位处理器,支持Wi-Fi 6、Bluetooth 5、Zigbee 3.0、Thread 1.3通讯协议,可接入多种通讯协议的物联网网络,适合作为Matter终端设备。该开发板集成锂电池充电管理,无需外围模块即可对锂电池进行充电,可以使项目体积更加小巧,非常适合可穿戴应用。高度集成,超小尺寸Beetle ESP32-C6在仅硬币大小的体积上引出了多达13个IO口,制作项目时不必担心IO不够用的情况。Beetle ESP32-C6集成锂电池充电管理功能,可以安全的对锂电池进行充电,该开发板还支持电池电压监测,以便在电量不足时采取措施,确保设备持续运行。
结合目前手里的物料,二、 实现环境编程语言:arduino IDE物料:FireBeetle 2 ESP32-C6 miniMIP SHARP MEMROY LCD x1霍尔传感器(临时使用开关导通测试)
三、 实现代码 先点亮屏幕,接个电池,注入框架https://github.com/Gbertaz/JDI_MIP_Display 参考文档
#include <JDI_MIP_Display.h>
#define NUMBER_COLORS 8
const uint16_t colors[NUMBER_COLORS] = {COLOR_BLACK, COLOR_BLUE, COLOR_GREEN, COLOR_CYAN, COLOR_RED, COLOR_MAGENTA, COLOR_YELLOW, COLOR_WHITE};
JDI_MIP_Display jdi_display;
// 每个矩形的高度
int rectHeight = jdi_display.height() / NUMBER_COLORS;
// 每个矩形的宽度
int rectWidth = jdi_display.width() / 2;
// 开始颜色的索引
int startColor = 0;
// 当前颜色的索引
int currentColor = 0;
// 帧数
int fps = 0;
// 帧数计数器
unsigned int frames = 0;
// 计时器开始时间
unsigned long startMillis = 0;
void setup() {
jdi_display.begin();
delay(50);
jdi_display.displayOn();
jdi_display.frontlightOn(); // 根据显示器型号,可能是可选的
jdi_display.clearScreen(); // 清空屏幕
jdi_display.refresh(); // 更新显示内容
startMillis = millis();
}
void loop() {
scrollingColors();// 滚动显示颜色
jdi_display.fillCircle(jdi_display.width() / 2, jdi_display.height() / 2, 60, COLOR_BLUE); // 在屏幕中央绘制蓝色圆形
int xPos = (jdi_display.width() / 2) - 25;
int yPos = (jdi_display.height() / 2) - 45;
jdi_display.setTextColor(COLOR_BLACK, COLOR_WHITE);
jdi_display.setTextSize(3);
jdi_display.setCursor(xPos, yPos);
jdi_display.print("fps");// 显示文字 "fps"
if(fps >= 10) xPos -= 20;
jdi_display.setTextColor(COLOR_WHITE);
jdi_display.setTextSize(8);
jdi_display.setCursor(xPos + 5, yPos + 30);
jdi_display.print(fps);// 显示当前帧率
jdi_display.refresh(); // 更新显示内容
fps = frames / ((millis() - startMillis) / 1000);
frames++;
}
void scrollingColors(){
int y = 0;
currentColor = startColor;
// 从顶部开始绘制矩形
for(int i = 0; i < NUMBER_COLORS; i++){
jdi_display.fillRect(0, y, rectWidth, rectHeight, colors);
y += rectHeight;
currentColor++;
if(currentColor > NUMBER_COLORS - 1) currentColor %= NUMBER_COLORS;
}
currentColor = startColor;
y = jdi_display.height() - rectHeight;
// 从底部开始绘制矩形
for(int i = 0; i < NUMBER_COLORS; i++){
jdi_display.fillRect(rectWidth, y, rectWidth, rectHeight, colors);
y -= rectHeight;
currentColor++;
if(currentColor > NUMBER_COLORS - 1) currentColor %= NUMBER_COLORS;
}
if(startColor < NUMBER_COLORS - 1) startColor++;
else startColor = 0;
}
模拟了一下效果,准备上车试试,更多功能想想怎么锦上添花[这个屏好,阳光越亮,它越亮]
页:
[1]