ESP32-C6 手搓一个自行车码表

2024-04-193636
AI 快速预览详细 收起
本文介绍了如何使用Beetle ESP32-C6和MIP SHARP MEMROY LCD制作一个自行车码表。首先介绍了Beetle ESP32-C6的特点,然后详细说明了所需的物料和实现环境。接着提供了完整的代码示例,展示了如何点亮屏幕、绘制图形和显示帧率。通过这些步骤,用户可以轻松实现一个功能齐全的自行车码表,提升骑行体验。


一、 概要

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;
}



ESP32-C6 手搓一个自行车码表图1

ESP32-C6 手搓一个自行车码表图2

模拟了一下效果,准备上车试试,更多功能想想怎么锦上添花[这个屏好,阳光越亮,它越亮]
ESP32-C6 手搓一个自行车码表图3


FriApril-202404195441..png (327.58 KB, 下载次数: 3130)

自行车码表 · Beetle ESP32-C6 DIY教程_image_3.webp

FriApril-202404193840..png (335.2 KB, 下载次数: 3097)

自行车码表 · Beetle ESP32-C6 DIY教程_image_6.webp

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(0)
- 没有更多了 -