763| 0
|
[ESP8266/ESP32] 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 mini MIP 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[currentColor]); 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[currentColor]); y -= rectHeight; currentColor++; if(currentColor > NUMBER_COLORS - 1) currentColor %= NUMBER_COLORS; } if(startColor < NUMBER_COLORS - 1) startColor++; else startColor = 0; } 模拟了一下效果,准备上车试试,更多功能想想怎么锦上添花[这个屏好,阳光越亮,它越亮] |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed