昨天半夜刷手机看见个电子蜡烛的视频,心里直痒痒。想着这玩意儿要是搁阳台一闪一闪的,半夜上厕所也不至于摸黑撞脚趾头。说干就干,今儿个非得把它鼓捣出来不可。
材料就手头这些破烂
翻箱倒柜半天:
- 捡的破LED小灯珠,红绿黄各一个,也不知道还能亮不
- 落灰的面包板,上次玩还是半年前
- 一堆花花绿绿的杜邦线,好多头都秃了
- 淘宝撸羊毛买的 Arduino Uno 板子,包装都没拆
- 数据线还是问老婆要的旧手机线
得,材料齐活儿,凑合着搞。
插得乱七八糟开始瞎试
先抓起那个红色LED,往面包板上一杵,两只脚随便戳俩洞里。扭头把 Arduino 插电脑上,那破旧数据线接触不良,捅咕三回才亮灯。打开 IDE 敲了几行基础闪灯代码:
void setup() { pinMode(13, OUTPUT); //13号脚输出
}
void loop() {
digitalWrite(13, HIGH); //亮
delay(1000); //愣一秒
digitalWrite(13, LOW); //灭
delay(1000); //再愣一秒
上传完等编译那会儿,烟都抽完半根。结果面包板上的小灯珠稳如泰山,连眼皮都不眨巴。心里咯噔一下——该不会第一步就翻车?
灯不亮血压升高
赶紧拔了线,抓起镊子翻来覆去看灯珠。豁,发现那俩腿插反了!长脚短脚根本没看,胡乱怼进去的。掉个方向重新插再通电,红灯唰地亮了!心里刚美,它慢悠悠闪了两下,滋一声…冒烟了。一股子焦味,得,灯泡烧了。这才想起来忘了串电阻,面包板上还躺着的200欧小黄条算是白买了。
重头再来长记性
老实给剩下俩灯珠都串上电阻,接线都多绕半圈。代码改成让不同引脚轮着亮:
pinMode(10, OUTPUT); pinMode(11, OUTPUT);
//loop里轮着点灯灭灯
上传完屏住呼吸看——绿灯先亮,黄灯接着闪,这回不冒烟了。就是闪得太机械,跟节拍器似的,半点蜡烛味儿没有。
调个乱闪才像样
把延迟时间换成乱数函数:
delay(random(200, 800)); //随机等0.2-0.8秒
再烧程序进去,两个灯开始抽风式闪烁:绿灯刚亮0.3秒灭,黄灯过了0.6秒又抽筋似的亮。有那味儿了!就是亮度太死板,看着像故障灯。
又从代码里翻出模拟信号输出,插上电位器拧着玩:
analogWrite(ledPin, random(50, 200)); //亮度随机跳
这下稳了,昏黄的灯光忽明忽暗,还真有点蜡烛被风吹的劲儿。
成果与后续摆拍
把面包板塞进吃完的果冻盒里,电线从底下扯出来,拍个视频发家庭群。老婆回了句:“又鼓捣破烂,洗手吃饭”。挺下次再琢磨加个开关,省得老拔数据线。
还没有评论,来说两句吧...