AI脑洞板
完整教案
自学课件
第 5 课 · 共 35 课

点亮一个灯

你好呀,我是吴老师。

前面四课,你都是在"用"板子。从今天开始,我们换个身份:你来"做"它。

不用怕。今天全部要你写的,加起来可能就十来行,而且大头是让 AI 帮你写。 你要做的是两件事:说清楚你想要什么,和 看懂它给你的是什么。

那我们从哪儿开始呢?

从板子上最小的那件东西开始 —— 一颗小灯。

读完之后,你应该能:说出颜色的三个数分别管什么;分清 screen.rgb 和 board.rgb(这俩最容易搞混);让板上的小灯亮出你想要的任何颜色;解释屏幕上那个大方块和板上的灯为什么是同一个颜色。

用时:约 50 分钟。准备:板子、数据线、电脑(Python 和 pyserial 装好了)。

看不懂的地方,整段复制给 AI,加一句"请一次只解释一个概念,讲完问我一个小问题"。


一、先找找那颗灯在哪儿

把板子翻过来,找一颗很小很小的、透明的小灯。

找到了吗?它平时是灭的,看不见。它在等着你叫它。

⚠️ 它和屏幕不是一回事。 屏幕是那块 240×320 的大画布,能画画写字; 这颗灯只有一颗,它只会做一件事:亮成某种颜色。

今天我们要让两个一起动起来 —— 屏幕上一块大色块,板上一颗小灯, 亮的是同一种颜色。这样你才看得清:它们俩是分别被点亮的,不是一回事。

二、光是怎么来的:三原色是"加"出来的

先问一个听起来有点怪的问题:

"黄色",到底是个什么东西?

对眼睛来说它是黄色。但对板子来说,它一点都不"黄" —— 它是三盏灯一起亮出来的结果。

板子上这颗小灯里面,其实藏着三颗更小的灯:一颗红的、一颗绿的、一颗蓝的。

它们之间不像颜料那样"混",而是叠 ——

⭐ 光是"加"出来的。 多开一盏灯,就多一份亮。

下面的小实验,你可以拖那三根滑杆,看三盏灯叠在一起的地方变成什么颜色:

把滑杆拉来拉去,你会发现一条很值得记住的规律:

哪几盏灯开着叠出来是什么颜色
只开红红
红 + 绿黄
红 + 蓝粉紫
绿 + 蓝青
红 + 绿 + 蓝 全开白

⚠️ 这跟调色盘正好相反。

拿颜料试试:红颜料加绿颜料,越混越黑、越混越脏,怎么混也混不出黄色。 因为颜料是"减"的 —— 每加一种颜料,就是又挡住了一部分光。

而板子上这颗灯是发光的,所以它是"加"的:三盏一起开到最亮,就是白。

三、颜色,就是三个数

上面那个实验里,三盏灯的亮度是可以调的。

那板子怎么知道"现在三盏灯各开多亮"?

——用三个数。

颜色就是三个数

看这张图里的三行例子:

红绿蓝出来是什么颜色
25500红(只开红灯,开到最满)
2552550黄(红 + 绿 = 黄)
0128255天蓝(蓝全开,绿开一半)

两个词记住就行:

  • 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 线或者蓝牙选你的板子,几秒就装好了。 装完板子会自己打开它,不用按任何按键,也不用去桌面上翻页找。

想看它是怎么写出来的,点卡片上的「查看源码」。

本节演示

三色灯

三色灯

红、绿、蓝,每 1.5 秒换一个

彩虹灯

彩虹灯

颜色沿着彩虹环慢慢转