当前位置:首页 > 工业控制 > 电路设计项目集锦
[导读]Smart Dice 是一款基于 ESP32 构建的 3D 数字骰子摇器,其设计灵感源自非洲卢多(ludo)游戏规则,这种游戏深深根植于尼日利亚和西非文化之中。该骰子在 240x240 TFT 显示屏上呈现为一个真实可旋转的三维立方体。轻轻晃动设备即可触发掷骰,效果与真实骰子一致。本项目支持最多四名玩家,并采用经典规则:连续掷出三个6则会暂停一轮游戏。

Smart Dice 是一款基于 ESP32 构建的 3D 数字骰子摇器,其设计灵感源自非洲卢多(ludo)游戏规则,这种游戏深深根植于尼日利亚和西非文化之中。该骰子在 240x240 TFT 显示屏上呈现为一个真实可旋转的三维立方体。轻轻晃动设备即可触发掷骰,效果与真实骰子一致。本项目支持最多四名玩家,并采用经典规则:连续掷出三个6则会暂停一轮游戏。

这是我第一次在Hackster.io上发布作品,完全使用Arduino IDE编写,代码通过多个文件进行模块化拆分。

它是如何运作的

3D立方体渲染

立方体由三维空间中的8个顶点定义。每个帧中,顶点会先通过X、Y和Z旋转矩阵进行旋转,然后使用透视投影投射到二维屏幕上。通过画家算法将面按顺序从后往前排序,使近处的面始终覆盖远处的面。TFT_eSprite(离屏缓冲区)仅渲染立方体区域,同时保持周围所有UI文本不出现闪烁。

摇晃检测

MPU6050 在每次循环迭代中读取原始加速度传感器数据。通过三个轴的数值计算出总加速度大小,当其超过 SHAKE_THRESHOLD(默认为 25.0 m/s²)时,将触发滚转检测。为了提高随机性,随机数生成器的种子由 millis() 和实时加速度数据组合生成。

滚动结果与面部对齐

滚动动画完成后,stopRolling() 会逐渐减速立方体,并通过线性插值(lerp)将其角度调整至与结果匹配的面的已知朝向。这确保了动画结束时始终能清晰可见正确的面,不会出现部分或模糊的面。

布线

•ST7789 TFT 显示屏

•SCL(SCK)为 GPIO 18

•SDA(MOSI)为 GPIO 23

•RES(RST)为 GPIO 4

•DC 转 GPIO 2

•CS 为 GND(始终选中,单个显示)

•BLK 至 3.3V(背光始终开启)

所需库

通过Arduino IDE库管理器安装所有库:

•Bodmer 的 TFT_eSPI

•Adafruit MPU6050(或 ElectronicCats 用于克隆型号的 MPU6050)

•Adafruit 统一传感器

•SPI(内置)

•线缆(内置)

游戏规则

Smart Dice 实现了这些非洲骰子游戏规则:

•每位玩家摇动设备来掷骰子

•一次或两次掷骰可额外获得一次掷骰机会

•连续三次掷出6点,将导致一轮完整暂停

•转弯时悬架会自动升起

•六连击计数器在任何非6的点数时重置

主要挑

最大的挑战是3D面的对齐问题。立方体会减速并停止,但可见的面很少与预期结果一致。三个独立的问题导致了这一情况:目标角度表未与面值映射对齐,每次掷骰时都会覆盖值映射,从而将结果强行固定在某个特定面上,以及对齐函数在未检查实际对应面的情况下,直接将角度四舍五入到最接近的90度。最终的解决方案是搜索面值数组以找到结果数值,确定其索引,并使用线性插值(lerp)将角度调整至该面预设的方向。

内存是另一个挑战。一个完整的240x240 16位精灵需要115KB的连续RAM。ESP32总RAM足够,但堆栈碎片化导致通常无法存在连续的内存块。解决方案是将精灵的颜色深度设置为8位,并仅将其尺寸调整为立方体区域,而不是整个屏幕。

本文编译自hackster.io

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读

使用ESP32开发板、MAX98357A I2S音频放大器以及WitAITTS库,构建一个基于实时AI的文本转语音转换器。本项目通过Wi-Fi将ESP32连接至Wit.ai云平台,实现对输入文字的实时转换为自然流畅的语音...

关键字: AI 音频放大器 ESP32

Home Assistant 是基于事件驱动的——每个自动化都会响应自身的触发条件,彼此之间并不真正了解。这就使得构建一个共享输出变得异常困难,例如让一盏灯按优先级向多个事件发出信号。你最终不得不同时处理输入布尔值、辅助...

关键字: PLC RGB 灯光 传感器

RealSpace™ Elevate 是可授权的 Windows APO,它使 OEM 厂商能够打造差异化的品牌空间音频体验,同时降低开发成本和复杂性

关键字: 游戏耳机 PC 音频 传感器

导轨式电源重新定义:如今控制柜中,电源的额定功率已不再是唯一考量。市场需要紧凑型导轨电源,可稳定承载负载峰值、在严苛环境下稳定运行,并轻松融入现代电源架构,无需额外改造。

关键字: 导轨式电源 传感器 工业自动化

TDK株式会社(东京证券交易所代码:6762)6月25日宣布,将以全新品牌“In Everything, Better”亮相于2026年7月1日到3日举办的2026慕尼黑上海电子展,全面展示面向AI生态、汽车电子、信息通...

关键字: AI 汽车电子 传感器

全新 PXI/PXIe 模块实现高密度波形生成、DAC 输出及热电偶模拟

关键字: 信号源 传感器 热电偶

在现代检测与控制系统中,振动是判断设备运行状态的核心特征之一:电机运转的振动幅度、桥梁结构的振动频率、手机屏幕敲击的振动反馈,都需要通过专用器件捕捉转换,这就是振动传感器的作用。振动传感器是一种能将机械振动信号转换为可测...

关键字: 振动传感器 传感器

在物联网、智能家居、环境监测等领域,温湿度是最基础也最核心的两个环境参数。想要低成本快速获取环境温湿度数据,DHT系列传感器几乎是很多嵌入式开发者的第一选择。从早期的DHT11到升级款的DHT22(也叫AM2302),这...

关键字: DHT传感器 传感器

全球向可持续交通的转型正在加速,而电动出行解决方案——例如电动滑板车、电动自行车、电动踏板车和电动三轮车——正处在这次变革的前沿。这些创新车辆不仅减少了污染,还为日益拥挤的城市环境提供了更高效、更便捷的出行方式。根据《T...

关键字: 电动三轮车 电机控制 传感器

这是一个基于LILYGO TTGO T-Display(ESP32 + 1.14英寸IPS LCD)的小型常驻桌面小工具,可直观显示您的Claude.ai使用额度,通过绿色/黄色/红色的色彩编码,让您随时了解已消耗了多少...

关键字: LCD显示屏 ESP32 电路板
关闭