763浏览
查看: 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;
}



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

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

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


FriApril-202404195441..png
FriApril-202404193840..png
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail