你好呀,我是吴老师。
前面四课,你都是在"用"板子。从今天开始,我们换个身份:你来"做"它。
不用怕。今天全部要你写的,加起来可能就十来行,而且大头是让 AI 帮你写。 你要做的是两件事:说清楚你想要什么,和 看懂它给你的是什么。
那我们从哪儿开始呢?
从板子上最小的那件东西开始 —— 一颗小灯。
读完之后,你应该能:说出颜色的三个数分别管什么;分清
screen.rgb和board.rgb(这俩最容易搞混);让板上的小灯亮出你想要的任何颜色;解释屏幕上那个大方块和板上的灯为什么是同一个颜色。用时:约 50 分钟。准备:板子、数据线、电脑(Python 和 pyserial 装好了)。
看不懂的地方,整段复制给 AI,加一句"请一次只解释一个概念,讲完问我一个小问题"。
一、先找找那颗灯在哪儿
把板子翻过来,找一颗很小很小的、透明的小灯。
找到了吗?它平时是灭的,看不见。它在等着你叫它。
⚠️ 它和屏幕不是一回事。 屏幕是那块 240×320 的大画布,能画画写字; 这颗灯只有一颗,它只会做一件事:亮成某种颜色。
今天我们要让两个一起动起来 —— 屏幕上一块大色块,板上一颗小灯, 亮的是同一种颜色。这样你才看得清:它们俩是分别被点亮的,不是一回事。
二、光是怎么来的:三原色是"加"出来的
先问一个听起来有点怪的问题:
"黄色",到底是个什么东西?
对眼睛来说它是黄色。但对板子来说,它一点都不"黄" —— 它是三盏灯一起亮出来的结果。
板子上这颗小灯里面,其实藏着三颗更小的灯:一颗红的、一颗绿的、一颗蓝的。
它们之间不像颜料那样"混",而是叠 ——
⭐ 光是"加"出来的。 多开一盏灯,就多一份亮。
下面的小实验,你可以拖那三根滑杆,看三盏灯叠在一起的地方变成什么颜色:
把滑杆拉来拉去,你会发现一条很值得记住的规律:
| 哪几盏灯开着 | 叠出来是什么颜色 |
|---|---|
| 只开红 | 红 |
| 红 + 绿 | 黄 |
| 红 + 蓝 | 粉紫 |
| 绿 + 蓝 | 青 |
| 红 + 绿 + 蓝 全开 | 白 |
⚠️ 这跟调色盘正好相反。
拿颜料试试:红颜料加绿颜料,越混越黑、越混越脏,怎么混也混不出黄色。 因为颜料是"减"的 —— 每加一种颜料,就是又挡住了一部分光。
而板子上这颗灯是发光的,所以它是"加"的:三盏一起开到最亮,就是白。
三、颜色,就是三个数
上面那个实验里,三盏灯的亮度是可以调的。
那板子怎么知道"现在三盏灯各开多亮"?
——用三个数。
看这张图里的三行例子:
| 红 | 绿 | 蓝 | 出来是什么颜色 |
|---|---|---|---|
| 255 | 0 | 0 | 红(只开红灯,开到最满) |
| 255 | 255 | 0 | 黄(红 + 绿 = 黄) |
| 0 | 128 | 255 | 天蓝(蓝全开,绿开一半) |
两个词记住就行:
- 0 = 一点都不给(这颗灯关着)
- 255 = 给满(这颗灯最亮)
💡 为什么是 255 不是 100? 因为它是一格一格数的,一共 256 格(0 到 255)。 就像尺子上最小的一格是 1 毫米 —— 这里的"最小一格"就是 1。
三个数各 0~255,能配出一千六百多万种颜色。 比你能叫出名字的颜色多得多。 所以别背颜色名 —— 想要什么颜色,就去调这三个数。
四、第一个:三色灯
现在动手。先跟 AI 说清楚你要什么:
请帮我做一个「三色灯」:
板子上的小灯每 ____ 秒换一个颜色,颜色依次是 ______、______、______;
屏幕上同时显示一个一样颜色的大方块,并在下面写出这个颜色的三个数。
长按板上的小按键就退出。请用中文注释。
先自己把那几个空填上,再发给 AI。
- 空里的秒数,你打算填多少?(太快看不清,太慢会着急)
- 三种颜色,你想让它亮哪三种?
📌 三种颜色的三个数是多少? 翻回上一节那张表看一看。 也可以自己编 —— 比如橙色是
255, 128, 0。编出来的才是你自己的。
改完让 AI 帮你装上板子 —— 它会自己打开,不用去桌面上翻页找。
打开之后,屏幕上应该长这样:

填不出来?点这里看一个参考(这不是标准答案)
请帮我做一个「三色灯」:
板子上的小灯每 1.5 秒换一个颜色,颜色依次是 红、绿、蓝;
屏幕上同时显示一个一样颜色的大方块,并在下面写出这个颜色的三个数。
长按板上的小按键就退出。请用中文注释。
红是 255, 0, 0,绿是 0, 255, 0,蓝是 0, 0, 255。
你自己挑的颜色一定更好 —— 因为那是你想的。
程序里在干什么
拿到 AI 给你的代码,别急着翻页。看这三块就够了:
COLORS = [('红', 255, 0, 0), ('绿', 0, 255, 0), ('蓝', 0, 0, 255)]
第一块:一个表,把三种颜色的名字和三个数放在一起。想换颜色?改这张表就行。
board.rgb(r, g, b) # 点板上的灯
screen.fill_rect(40, 60, 160, 120, screen.rgb(r, g, b)) # 屏幕上画方块
第二块:这两行是两件不同的事 —— 一个去点板子上的那颗灯,一个在屏幕上画方块。 名字很像,但一个点灯、一个画画,别写混。
while True:
...
time.sleep_ms(1500)
第三块:while True 的意思是 "下面这些事,一直重复做"。
最后的 sleep_ms(1500) 是 "歇 1500 毫秒"(1.5 秒)再从头来。
💡 如果删掉 sleep 那一行会怎样? 它会一秒钟换几百次颜色 —— 快到你的眼睛只能看到一片混在一起的闪。 "歇一下"不是可有可无的,它在决定节奏。
五、第二个:让它转起来
三色灯是"跳"着变的:红,然后"啪"一下变绿。
那能不能慢慢变?——红,慢慢变成橙,再变成黄……
能。这个要认识的词叫 mix(混合):在两个颜色之间取中间色。
def mix(a, b, t):
"""在颜色 a 和 b 之间取中间色。t 从 0 到 256。"""
t = 0 就是完完全全的 a,t = 256 就是完完全全的 b,中间的 128 就是一半一半。
六个颜色首尾相接,就是一个环:
红 → 黄 → 绿 → 青 → 蓝 → 紫 → 红 → ……
沿着这个环一步一步走,颜色就一直变,永远走不完。试试:
请帮我做一个「彩虹灯」:
颜色沿着 红→黄→绿→青→蓝→紫→红 的环慢慢转动。
屏幕上方画一条静态的彩虹色带;
屏幕中间画一个圆,颜色跟着环走;板子上的小灯也一起变色。
请用中文注释。

💡 上面那条彩虹带,只画了一次。 因为它从头到尾不变 —— 所以不用每帧重画,只动下面那个圆就行。 等你以后做动画时会反复用到这个想法:能不动的地方就别动。
六、动手做
现在轮到你了。做之前先回答一个预测题:
三色灯和彩虹灯,哪个"花的力气大"? 为什么?
(提示:数一数,每换一次颜色,各自要重新画多少东西。)
只改一个条件
挑一个来改,先说出你的预测,再动手:
| 我改的条件 | 我预测会怎样 | 实际怎样 |
|---|---|---|
把 sleep_ms(1500) 改成 sleep_ms(5000) | ||
把绿灯那行改成 ('青', 0, 255, 255) | ||
把三色灯里 board.rgb 那行删掉 | ||
把 board.rgb 那行的三个数改成 (0, 0, 0) | ||
彩虹灯里把 pos + 4 改成 pos + 40 |
第三、四行是这一课的重点考察: 一个考你"删了会怎样",一个考你"全 0 是什么颜色"。 自己想,别急着试。 想完再动手,错的印象比对的印象更值钱。
七、自检小测
八、还想玩点什么
| 方向 | 可以描述给 AI 的效果 | 值得继续想 |
|---|---|---|
| 呼吸灯 | 颜色不变,但亮度慢慢变亮、再慢慢变暗 | 亮度是三个数一起变大,还是只改一个? |
| 心跳 | 只用红这一个通道,一亮一暗,像心跳 | 为什么只用红色,看起来更像心跳? |
| 心情灯 | 快乐是黄色,生气是红色,难过是蓝色 | 怎么让它"知道"你现在的心情? |
| 调色盘 | 屏幕上三个方块,红绿蓝各一个,慢慢轮流变 | 它和彩虹灯是同一件事吗? |
倒数第二行那道题我留给你慢慢想 —— 它牵着的,是后面很多课都要用的东西: 板子怎么知道你是什么意思?
这一课的两个作品,就在上面那几张卡片里 —— 点「装到板子上」,用 USB 线或者蓝牙选你的板子,几秒就装好了。 装完板子会自己打开它,不用按任何按键,也不用去桌面上翻页找。
想看它是怎么写出来的,点卡片上的「查看源码」。