|
|
所谓电子骰子,不过是这个传统六面体的赛博硬件版:
在这个手机 Rand() 都差不多泛滥的年代,实体骰子除了麻将大致还剩这个。
犹记得掷出6点的喜悦,与飞机被干掉的懊恼:
【启发】
转眼玩飞行棋的日子越来越少,但掷骰子的情怀不曾磨灭。 偶然看到这个心中一动:
原理上一眼就能看明白,但思路的巧妙性不亚于第一次看懂数码管。
NE555 + CD4017/4022 这类计数器构建个硬件流水灯,然后接线排列出特定字形:
发光管呈 H 形排列,实则是兼顾1点~6点六种字形,类似于数码管:
【6点基础版】
产品已经有了,但这么巨大一坨 PCB 还得外挂电池盒,显然是不优雅的。
压缩体积、内嵌电池成了手搓骰子的第一要务。
仔细观察字形,发现 1点~6点 中,LED可以分为四组(红/黄/绿/蓝),组内同步亮灭:
相当于 4xGPIO 即可静态驱动全部字形,再加个开关输入,一片 DIP8 的单片机足够。
说干就干, ATTINY13A 走起。 布了个准单面板,方便热专业/打样二合一:
程序上老规矩 ICCAVR,反正就是几个 rand() 的事儿。
实现起来需要使用 AVR 的低功耗休眠,确保熄灯后可以 SLEEP 到下次按键动作:
一顿操作下来终于亮灯,效果有点赛博麻将的意味:
【10点扩展版-AVR】
然而快乐总是那么稍纵即逝,就算翻出飞行棋盘,掷出赛博骰子,也总感觉缺点啥。
应该是骰子太粗糙,需要仔细盘他。
小时候玩过20面骰子,原本是产生十进制真随机数抽样用,大致长这样:
正二十面体可以写 0-9 或者 1-20,几何对称性决定了十进制下真随机、真均匀分布。
若电子骰子能支持正二十面的 0-9 点模式,想必玩起来更爽快。
这就抓紧研究字形,发现只要增加第五组 LED,即可完美解决 0-9 点字形:
其中0点不能使用全熄灭,会与休眠模式相混淆;随便找个能显示的特殊符号即可。
继续画板+打样+ICCAVR:
这次用上了 ATTINY13A 最后的 RST 脚,DIP8 所有的 GPIO 都被用完。
编程方面还是 ICCAVR,有两个范式可用: KEY=RST / KEY=GPIO.
前者可用常规 AVRISP 下载器,后者必须用 AVR 高压编程器才能调试。
正巧手头有手搓的 AVR-HVPP 高压编程器,索性用 KEY=GPIO 范式彻底编程:
【10点扩展版后记-AVR】
这么一顿折腾,只是获得了个十进制随机数发生器,快乐又跑完了,电子骰子开始吃灰。
后来疫情就把这事忘记了,直到阳过后整理屋子,发现个还插着电池的电子骰子,功能正常:
这块电池连续休眠 6.5 年,测量空载电压 3.2v,工作电压 2.6-2.7v,显然内阻已不小。
现代单片机的休眠模式(<0.5uA)真不是盖的,这 CR2032 也够给力,完全不漏液。
【10点祖国版-STC】
转眼祖国和美帝闹矛盾,ATMEL/Microchip 也开始紧俏了,经典的设计需要向祖国版靠拢。
早期手推车 STC15F104E 的 INT0-BUG 阴影也逐步退却,这次选择 STC8G1K17:
宽压供电 1.9-5.5V,休眠 <0.5uA,DIP8 含 6xGPIO,完美平替 ATTINY13A.
布线只要微调,适配 AVR-STC 的引脚差异即可:
开发 IDE 也换成 KEIL,逻辑层基本平移,硬件抽象层 HAL 啃了一阵子手推车手册:
一顿手推车烧录,终于祖国版骰子也成功掷出。
短按掷骰子,长按切换6点/10点双模式,一个骰子两种玩法:
【继续画个壳】
到此本该画上休止符,奈何骰子放键盘旁总觉得缺点啥,细想来少个壳子。
注塑的折腾太大,3D打印的还没玩熟练(需要有开关连杆、正面要透光材质),还是亚克力走起吧。
CAD 量量画画折腾一晚上,好在 PCB 尺寸都是现成的:
加工加工继续丢去加工,得到了两套精度不错的激光切割亚克力:
底板与 PCB 配合良好,装上侧壁配合良好:
最终封顶,原打算撕膜做成纯透明的,但这个磨砂感的膜意外和骰子很配:
至此终于贤者时间,白天掷一发不瞌睡,晚上掷一发睡得香:
【资料开源】
附上祖国版完整图纸+代码(PCB+KEIL+CAD):
资料仅在这里开源,算给数码坛做点贡献。
-------------------------------------------------------------------------------------------------------
以上,记那些年手搓过的电子骰子,从粗糙一路搓到圆润能盘,特来分享下。
最后祝大家折腾愉快!
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
打赏
-
查看全部打赏
|