说起这个“一闪一闪亮晶晶王力宏”,还真让我想起好几年前我捣鼓过的一个小玩意儿。
那会儿我在一个小厂子干活,啥都得干点。有一次接了个活儿,客户要求做一个产品的状态指示灯。要求也不复杂,就是正常的时候绿灯慢闪,出问题了红灯快闪。听着挺简单是?我开始也这么觉得。
动手开搞
我就找了个单片机,弄了俩LED灯,开始吭哧吭哧写代码。先让绿灯按要求的频率闪起来,“一闪、一闪”,得,挺顺利。然后又写红灯快闪的逻辑,触发一下,红灯也按要求“闪闪闪闪”,看着也没毛病。
麻烦来了
问题出在哪?等我把所有逻辑都整合到一起,再模拟各种正常、异常状态切换的时候,那灯就跟抽风了一样。有时候绿灯闪着闪着,突然抽搐几下,变成红灯瞎闪。有时候红灯报警,解决了问题该变回绿灯慢闪了,它却卡在那儿不动了,或者红绿一起亮,给我整不会了。
那几天真是头大。我对着那块小破板子,一会儿查代码逻辑,看看是不是哪里状态判断写错了;一会儿拿个万用表测电压、测信号,怀疑是不是硬件哪里接触不好或者干扰。旁边工位的老张看我天天对着那俩小灯眼都快看瞎了,还跟我开玩笑,说:“你这灯搞得这么复杂,一闪一闪的,是不是想整成王力宏演唱会舞台灯光效果?还亮晶晶!”
当时我忙得焦头烂额,也没心思搭理他这茬,心里就想着赶紧把这破问题解决了。那俩灯确实是一闪一闪,但一点也不“亮晶晶”,简直是“气死人”。
折腾过程
- 查代码: 逐行检查状态机逻辑,加了一堆打印信息看流程。
- 测硬件: 检查焊接点,换了几个LED灯,甚至怀疑单片机引脚有问题。
- 看时序: 用示波器看了看控制灯的引脚波形,好像也没啥大问题,但就是不稳定。
咋解决的
搞了好几天,人都快麻了。你猜怎么着?发现是单片机电源滤波没做旁边有个功率稍微大点的器件一启动,电压稍微一抖,单片机就不太稳定,导致程序跑飞或者状态出错。加了俩电容,世界清净了。那灯终于老老实实地,该绿就绿,该红就红,按节奏“一闪一闪”了。
虽然问题解决了,但老张那句玩笑话算是给我留下印象了。后来好长一段时间,我看到闪烁的LED灯,尤其是那种状态指示灯,脑子里就不自觉地冒出“一闪一闪亮晶晶”,后面还得自动跟上个“王力宏”。你说这事儿闹的,一个挺烦人的调试过程,就跟这句歌词和这个名字莫名其妙地绑定了。
实践记录嘛就是这样,有时候解决了一个技术问题,留在记忆里的可能不是技术本身,反而是过程中那些不搭嘎的人和事儿,挺有意思的。