从屏幕到物理世界:为什么要学硬件编程
Scratch 里的小猫再生动,也只活在浏览器里。当孩子第一次亲手写一段程序、按下下载键,看到桌上那块小板子上的 LED 真的亮起来、真的因为他摇晃板子而改变显示时,那种代码让物理世界动起来的震撼,是纯软件课给不了的。这就是硬件编程的魅力。
micro:bit 是英国 BBC 为青少年计算机教育设计的一块巴掌大的开发板。它把 LED 点阵、两个按钮、加速度计、磁力计、蓝牙都塞进一块带 USB 接口的小板子里,孩子只需要用 Scratch 风格的积木拖一拖,就能让板子执行各种动作。它不需要焊接、不需要插线到面包板就能跑起来,门槛极低。
硬件编程不是为了让孩子变成电工,而是让他理解:程序不是虚拟玩具,它可以控制真实世界的开关、灯和动作。
- LED 点阵板子正面 5×5 共 25 颗小灯,可以逐颗点亮成图案。
- 按钮事件板子上有 A、B 两个物理按键,对应 Scratch 里的"当按下 A"。
- 加速度计感知板子朝哪个方向倾斜、有没有被摇晃。
- 下载运行把积木编译成 hex 文件,拖进板子的 U 盘盘符即可执行。
认识 micro:bit:一块掌心大小的单片机
把板子翻到正面,最先看到的是 25 颗排成 5 行 5 列的小灯,这就是 LED 点阵。点阵下方左边写着 A、右边写着 B,这是两个物理按钮。板子背面有一根 USB 口,插上线就能给电脑识别成一个 U 盘,同时供电。
打开浏览器访问 micro:bit 官方的 MakeCode 编辑器,界面就是孩子熟悉的积木世界。左边是积木分类,中间是脚本区,右边是一块仿真板子——在下载到真实硬件之前,孩子可以先在仿真板子上试效果。
| 部件 | 位置 | 编程作用 |
|---|---|---|
| LED 点阵 | 正面中央 | 显示图案、数字、文字滚动 |
| A / B 按钮 | 点阵下方 | 当按下时触发对应事件积木 |
| 加速度计 | 板子内部 | 感知摇晃、倾斜、自由落体 |
| USB 接口 | 板子边缘 | 供电并把程序文件拖进去运行 |
第一次使用时,用一根 USB 数据线把板子连到电脑。电脑会把它识别成一个叫 MICROBIT 的 U 盘。以后写完程序点"下载",把生成的 .hex 文件拖进这个 U 盘,板子自动重启,新程序立刻生效。
第一块板子:让 LED 点阵亮起一颗星
在 MakeCode 里,所有程序都从"当开机时"这块事件积木开始。我们先让板子一启动就显示一个爱心图案。
当开机时
显示 爱心
点下载、拖进 U 盘,板子上 25 颗小灯里,指定的几颗会亮成一颗心形。孩子会立刻反应过来:原来 LED 点阵是一个二维网格,每颗灯都有自己的坐标。
再玩一步,让心一秒钟亮一秒钟灭,做出心跳效果:
当开机时
重复执行
显示 爱心
等待 500 毫秒
清除显示
等待 500 毫秒
这里"清除显示"就是把 25 颗灯全关掉。孩子可以自己改数字:把 500 改成 200,心跳就变快;改成 1000,心跳就变慢。这种即时反馈和 Scratch 里改小猫速度一模一样,孩子零门槛上手。
按钮与事件:按 A 画笑脸,按 B 画哭脸
板子上的 A、B 两个按钮是物理输入。我们用事件积木把它们绑到不同的画面上:
当 按钮 A 被按下
显示 笑脸
当 按钮 B 被按下
显示 哭脸
下载后,孩子按 A,板子显示笑脸;按 B,板子显示哭脸。这就是硬件版的事件驱动——和 Scratch 里"当空格键被按下"逻辑完全一样,只是触发器从键盘换成了板子上的物理按键。
再加一个小挑战:同时按 A 和 B 怎么办?MakeCode 里有"当按钮 A+B 被按下"的积木。让它显示一个问号图案,就组成了一个三态小表情切换器。孩子会开始意识到:同一个硬件可以被不同的输入触发不同的反应。
加速度计:摇晃它,骰子就转起来
micro:bit 内部藏着一个加速度计,能感知板子有没有被摇晃、朝哪个方向倾斜。这是做小游戏最有意思的传感器。我们来做一个电子骰子:
当 被摇晃时
显示数字 随机从 1 到 6
下载后,孩子把板子拿在手里摇一下,点阵上就随机亮起 1 到 6 的数字,像真骰子一样。这里"随机从 1 到 6"是运算积木,"被摇晃时"是加速度计事件积木,两个一组合就是一个完整的物理小玩具。
再进阶一步:让板子根据倾斜方向让一颗光点移动。孩子把板子往左歪,光点就往左;往右歪,光点就往右。这其实就是把物理世界的动作映射成屏幕上的坐标变化,和成年后做手机重力感应游戏用的是同一套原理。
- 事件当被摇晃时、当按钮被按下,都是硬件事件触发器。
- 随机数运算积木里的"随机从 1 到 6",是骰子的灵魂。
- 传感器加速度计把物理动作翻译成数字信号给程序。
- 输出LED 点阵把数字信号翻译回人眼能看到的图案。
外接小灯与蜂鸣器:让作品会发光会响
板子边缘有一圈金属圆环,叫 GPIO 引脚。用鳄鱼夹线可以把外接小灯、蜂鸣器、小马达接到这些引脚上。孩子可以做一个"报警装置":当加速度计检测到板子被移动,蜂鸣器就响、红灯就亮。
当开机时
重复执行
如果 被摇晃
设置 引脚 0 为高电平
播放 音调 440 赫兹 1 拍
否则
设置 引脚 0 为低电平
这里"高电平"就是让这个引脚输出 3.3 伏电压,接在上面的小灯就亮;"低电平"就是 0 伏,小灯就灭。这个概念听起来很硬件,但孩子用积木拖拽就能理解,以后学 Arduino 或单片机 C 语言时,会立刻认出同样的逻辑。
外接蜂鸣器之后,孩子还能做一个简易电子琴:按 A 出一个音,按 B 出另一个音,同时按出第三个音。这种把输入、逻辑、输出串起来的小项目,是真正的系统思维训练。
把作品带回家:从实验桌到生活场景
硬件编程最好玩的地方是,作品可以直接用在生活里。孩子可以做一个"坐姿提醒器":把板子放在书桌上,通过加速度计感知板子是否被倾斜(也就是孩子有没有趴下来),一旦倾斜角度过大,LED 就变红、蜂鸣器就响。
还可以做一个"环境光小夜灯":接一个光敏电阻,环境越暗,点阵越亮;白天自动熄灭。或者做一个"步数计数器":靠加速度计感知走路时的上下颠簸,累计步数显示在点阵上。
- 从模仿开始:先照着官方示例做三五个小项目,把每个积木分类玩一遍。
- 再做小改造:把示例里的数字、图案、反应方式改一改,观察变化。
- 最后做原创:从生活里找一个小痛点,用板子和传感器做一个小工具解决它。
硬件编程的终点不是会用 micro:bit,而是建立"输入—逻辑—输出"的系统直觉。有了这个直觉,孩子以后学任何嵌入式、机器人、物联网项目都不会发怵。