Arduino数字骰子项目:74HC595与LED数码管实践
1. 项目背景与核心思路这个数字骰子项目特别适合作为创客教育的入门实践。我和一位12岁的小创客一起完成了这个项目整个过程既锻炼了动手能力又学习了基础的编程逻辑。选择这个项目有几个重要原因首先骰子是孩子们熟悉的游戏道具能激发兴趣其次项目涉及硬件连接和简单编程难度适中最重要的是通过这个项目可以学习到Arduino开发的核心概念。数字骰子的核心功能很简单按下按钮后LED数码管随机显示1-6的数字模拟传统骰子的效果。但实现这个功能需要解决几个关键技术点如何用最少的引脚控制数码管、如何生成随机数、如何设计简洁的电路。我们选择了74HC595移位寄存器来解决引脚数量问题这是很多创客项目中的经典方案。提示对于初学者来说74HC595可能听起来有点复杂但其实它就像一个引脚扩展器让我们用3个Arduino引脚就能控制8个输出这在制作需要多个LED的项目时特别有用。2. 硬件准备与电路设计2.1 所需材料清单我们使用了以下硬件组件Arduino Uno开发板最基础的型号就够用1位共阴极LED数码管74HC595移位寄存器芯片220欧姆电阻用于限流保护LED10k欧姆电阻用于按钮上拉轻触开关按钮面包板和若干跳线选择这些组件时特别考虑了初学者的易用性。比如Arduino Uno是最常见且文档丰富的开发板共阴极数码管比共阳极的更常见且接线简单74HC595是性价比极高的串行转并行芯片价格便宜且稳定。2.2 电路连接详解电路连接是项目的关键难点特别是74HC595与数码管的配合。具体接线如下74HC595连接DS串行数据输入接Arduino D2SH_CP时钟脉冲接Arduino D3ST_CP锁存脉冲接Arduino D4VCC接5VGND接地数码管连接共阴极引脚接地各段(a-g,dp)通过220欧姆电阻接74HC595的输出Q0-Q7按钮连接一端接5V另一端通过10k电阻接地同时接Arduino D5这里有个实用技巧在面包板上先单独测试数码管各段是否正常发光可以用跳线直接连接5V测试确保没有坏段。我们第一次做时就发现有个数码管的b段不亮幸好提前测试发现了。3. 软件实现与代码解析3.1 基础代码框架Arduino代码主要分为三部分引脚定义、数码管显示模式和主循环。我们先来看最核心的数码管显示部分// 定义74HC595控制引脚 const int dataPin 2; // DS const int clockPin 3; // SH_CP const int latchPin 4; // ST_CP // 定义按钮引脚 const int buttonPin 5; // 数码管各数字对应的段码共阴极 byte digitPatterns[10] { B00111111, // 0 B00000110, // 1 B01011011, // 2 B01001111, // 3 B01100110, // 4 B01101101, // 5 B01111101, // 6 B00000111, // 7 B01111111, // 8 B01101111 // 9 };这段代码定义了数字0-9在数码管上显示所需的段码。每个字节的8位分别对应数码管的8个段包括小数点。比如数字0需要a、b、c、d、e、f段亮对应的二进制就是00111111。3.2 核心功能实现随机数生成和显示是项目的核心功能。我们使用Arduino内置的随机数函数但需要注意设置随机种子void setup() { pinMode(dataPin, OUTPUT); pinMode(clockPin, OUTPUT); pinMode(latchPin, OUTPUT); pinMode(buttonPin, INPUT); // 用未连接的模拟引脚作为随机种子 randomSeed(analogRead(0)); } void loop() { if (digitalRead(buttonPin) HIGH) { rollDice(); delay(200); // 防抖延时 } } void rollDice() { int number random(1, 7); // 生成1-6的随机数 showNumber(number); // 添加骰子滚动动画效果 for (int i 0; i 10; i) { showNumber(random(1, 7)); delay(100 i * 20); // 动画逐渐变慢 } showNumber(number); }这里有几个值得注意的细节使用analogRead(0)获取噪声作为随机种子这样每次启动的随机序列都不同按钮检测加入了200ms的防抖延时避免误触发rollDice()函数中实现了简单的动画效果让数字快速变化模拟骰子滚动3.3 74HC595驱动函数向74HC595发送数据的函数是这个项目的关键void showNumber(int num) { digitalWrite(latchPin, LOW); shiftOut(dataPin, clockPin, MSBFIRST, digitPatterns[num]); digitalWrite(latchPin, HIGH); }这个函数的工作流程是先将latchPin拉低准备接收数据使用shiftOut函数将数据一位一位地移入74HC595最后将latchPin拉高将数据并行输出到数码管注意MSBFIRST参数表示先发送最高位这与74HC595的数据输入顺序一致。如果数码管显示乱码很可能是段码顺序不对应。4. 项目优化与扩展思路4.1 常见问题排查在实际制作过程中我们遇到了几个典型问题数码管显示不全或乱码检查段码定义是否正确确认数码管是共阴极还是共阳极测试74HC595输出是否正常按钮不灵敏检查是否接了上拉/下拉电阻增加防抖延时确认按钮接线正确随机数重复确保正确设置了随机种子避免在短时间内连续调用random()4.2 功能扩展建议基础功能实现后可以考虑以下扩展添加声音效果使用蜂鸣器模拟骰子滚动声不同数字对应不同音效多位数显示使用2-3位数码管显示骰子组合需要增加74HC595芯片级联无线控制添加蓝牙模块实现手机控制使用红外遥控器触发物理互动改进用震动传感器替代按钮添加倾斜开关摇动设备触发4.3 教学反思与经验分享通过这个项目我总结了几个对青少年创客教育特别重要的点可视化反馈很重要数码管能立即显示代码效果比单纯的串口打印更有吸引力适度挑战74HC595的概念对初学者有点难度但通过具体应用场景讲解更容易理解分步实现先让数码管显示固定数字再添加随机数最后做动画效果鼓励创新在基础功能完成后让孩子们自己提出改进想法这个项目最让我惊喜的是小创客自己想到了添加双骰子模式的想法通过快速按两次按钮可以同时显示两个随机数。我们通过修改代码用长按和短按来区分不同模式这比原计划的功能更有趣。

相关新闻

3倍效率革命:全网资源一键捕获的降维打击方案

3倍效率革命:全网资源一键捕获的降维打击方案

3倍效率革命:全网资源一键捕获的降维打击方案 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader 你是否曾为了一节重…

2026/10/14 15:58:51 阅读更多 →
桌面端 AI 智能助手 OpenClaw v2.7.9 完整搭建手册(含安装包)

桌面端 AI 智能助手 OpenClaw v2.7.9 完整搭建手册(含安装包)

快速搭建 OpenClaw 本地智能体|可视化部署方案,告别繁琐环境配置 前言 在 AI 办公快速普及的当下,本地自动化智能体成为很多用户提升效率的核心工具。OpenClaw 作为一款开源桌面智能工具,凭借本地独立运行、图形化可视化操作、自…

2026/10/11 8:03:42 阅读更多 →
SpringBoot+Vue智能停车场管理系统:Java全栈实战项目部署与开发指南

SpringBoot+Vue智能停车场管理系统:Java全栈实战项目部署与开发指南

这次我们来看一个基于 SpringBoot Vue 的智能停车场管理系统。这是一个典型的 Java Web 全栈实战项目,非常适合作为课程大作业、毕业设计或者个人技术练手。项目本身提供了完整的源码、数据库脚本和文档,意味着你可以直接下载、配置、运行,并…

2026/10/14 2:50:53 阅读更多 →

最新新闻

窗函数法设计FIR滤波器:原理、步骤、代码与避坑指南

窗函数法设计FIR滤波器:原理、步骤、代码与避坑指南

FIR滤波器和IIR滤波器,是数字信号处理里躲不开的两个大类。最近整理自己多年攒下来的滤波器设计笔记,发现项目里最常用的还是窗函数法。这个方法算是数字滤波器设计的入门第一课,就算后面等纹波设计、最小二乘设计讲得再多,不少工…

2026/10/15 16:49:55 阅读更多 →
C#医院网站源码实战:从部署到二次开发全流程

C#医院网站源码实战:从部署到二次开发全流程

简介:这是一套基于ASP.NET的医院网站源码,面向需要学习C# Web开发或搭建医疗类站点的开发者,尤其适合具备一定.NET基础、希望研究完整业务系统实现思路的中级学习者。源码围绕医院日常业务组织页面,涵盖挂号、实验室等部门管理&am…

2026/10/15 16:49:55 阅读更多 →
ADRC自抗扰控制SIMULINK仿真模型搭建与参数整定避坑指南

ADRC自抗扰控制SIMULINK仿真模型搭建与参数整定避坑指南

简介:这份资源面向控制算法学习者和自抗扰控制(ADRC)入门研究者,提供一套可直接运行的SIMULINK仿真模型,重点针对二阶惯性环节进行控制器设计与验证。包内包含1个m脚本、1个mdl模型文件和1份PDF参考文献,压…

2026/10/15 16:49:55 阅读更多 →
51单片机动态数码管显示:原理、消隐与定时器扫描实现

51单片机动态数码管显示:原理、消隐与定时器扫描实现

如果你玩51单片机做过几个基础实验,点灯、按键、中断都跑通之后,多半会走到数码管这一步。网上很多教程会让你先点亮一位数码管,然后告诉你它还有个升级玩法叫“动态扫描显示”。老实说,我第一次看到动态显示的代码是有点懵的&…

2026/10/15 16:49:55 阅读更多 →
Vector CAN/CAN FD/LIN库:工业级协议栈胶水层解析

Vector CAN/CAN FD/LIN库:工业级协议栈胶水层解析

简介:本资源是面向汽车电子与工业自动化领域开发者的Vector官方通信协议集成开发包,聚焦CAN、CAN FD及LIN总线协议在C#、C和VB等主流语言中的工程化落地。资源提供完整的跨语言调用示例与底层驱动支持,解决嵌入式通信开发中协议适配难、API封…

2026/10/15 16:49:55 阅读更多 →
一网统飞定义、痛点、逻辑与落地试点

一网统飞定义、痛点、逻辑与落地试点

基层低空政务治理中长期存在一个典型痛点现象:城管、水利、公安、应急、自然资源等政务部门,各自独立采购无人机、机巢、地面站等硬件设备,各自搭建专属管理系统、各自组建运维队伍、各自开展飞行作业。各部门设备独立管控、飞行独立审批、数…

2026/10/15 16:48:54 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →