按键按下,OLED 上的数字跳了一下。程序有没有在跑,这一刻不需要猜------屏幕上写着。
单片机入门,真正要过的第一关不是寄存器和时序,是不知道程序跑到哪了。在电脑上写程序,答案来得便宜:终端会回话,报错有颜色。单片机没有终端。它上电之后走到哪一行,芯片不会主动开口。
人机交互,是人和程序之间的两扇门
"人机交互"这个名字听着大,落到眼前这块板子上,就是输入、程序、输出,再加一个坐在旁边的人:
text
按键(人 → 机) -> 程序 -> LED / OLED(机 → 人)
按键把"我想让它动"翻译成一个电平,这是人往机器里递话。LED 亮灭、OLED 上的数字,是机器把内部状态递回给人。方向不同,缺一不可:只有输入没有输出,人按了一下午,也不知道程序听没听见;只有输出没有输入,屏幕亮得再好看,也只是一块自说自话的电子表。
一颗灯和一个屏幕,差的是信息量
LED 会说"亮了",也会说"灭了"。一个字。
OLED 会说数字。按键按了几次,值停在几,哪一颗灯在亮------状态一行行摆出来。灯是哑巴式的回答,屏幕是肯开口的回答。
信息量差在哪?一颗灯只能告诉人"有没有",屏幕能告诉人"是多少、差多少"。而"知道差多少",是后面一切修正动作的起点。人改一行代码,屏幕上多一个数,或者少一个数,因果链当场可见。
成就感从哪来:每一步都有回音
写一段代码烧进去,屏幕应声变化------这是一次"我改的代码,确实让世界动了一小块"的确认。确认攒多了,人敢动下一个地方;下一个地方又应声变化,再攒一次确认。
反过来,没有反馈的学习是什么样?程序烧进去,板子沉默。人不知道是自己代码错了,还是烧录没成功,还是板子根本没上电。每一个"不知道"都在磨损继续下去的意愿。
屏幕的存在,让"不知道"变少:改错了,屏幕停在旧值;注释掉一行,屏幕停在上一格。
这个环转起来之后,还有个更大的东西在里头:成就感。它来自"我改的东西确实按我的意思动了"。单片机恰好是这种成就感最便宜的地方------一块几十块钱的板子,一行代码,就能让物理世界亮起来。
为什么顺序要反过来:先用,再拆
学一样东西有两种排法:把原理讲透,再让它动起来;或者先让它动起来,原理后面补。
这套顺序选了后者。屏幕先当"黑盒"用:只调用现成的显示函数,把现象立起来,原理一概往后放。先让屏幕"应该长什么样"这件事立住,后面再拆内部怎么写字,原理回来时就有现象可以对照------比先背协议、再等一个模糊的亮屏踏实。
这也是离线调试的意义:不依赖电脑上的任何输出口,板子自己就能把话说清楚。往后每一章都会往这块屏上送新的数字:时间走了多久,轮子转了多少圈,目标和实际差多少。屏幕要一直用到后面每一章,它就是看现象的那扇窗户。装置摆上桌,接上电,现象自己开口。
这套"先给反馈、再讲道理"的思路,我的启蒙来自江协科技。
最后橘猫说
单片机不会说话。人机交互排在最前面,是给程序装一张嘴、给学习者装一只眼睛:每一步改动都有回音,正反馈的环才能转起来;转起来之后,成就感才有了落脚的地方。屏幕先当黑盒用,原理后面补------现象在前,原理在后,这是这套顺序的全部理由。
最后蜘蛛说
椅子瘫坐在原子弹、氢弹、二向箔身上,仿佛看见我爆炸。AI越发展,闭环就越重要,人机交互是一个人与机器互相反馈闭环的过程,那么我们是不是应该也需要探索一下怎么才能实现机器与机器互相反馈闭环呢,那么名字应该是?......qwq