原文连接:https://www.shuaihuajun.com/article/arduino-led/
我现在手里有一套Ruff开发板套件和一套Arduino开发板套件。把Ruff开发套件中的所有传感器用了一个遍之后没玩够,于是开始把玩Arduino。没有对比就没有伤害真的是,虽然我真正接触Arduino时间不长,但就我自己的感觉来说,Arduino不论从程序角度还是从硬件角度上来讲都比Ruff更底层也就更加灵活,从长远来看Arduino更具学习和研究价值。所以果断弃坑Ruff,拥抱Arduino。
不过Ruff基于JavaScript语言编写控制硬件的程序确实勾起我对宏大的物联网世界的兴趣。Ruff更适合快速做出原型,但无法进入生产环境,这满足不了我对物联网世界更底层的好奇。所以再见,Ruff,你好,Arduino。
Arduino IDE
Arduino集成开发环境支持语法检查、上传程序到开发板、串口监视器等主要功能,最常使用的就是这三个功能。
一个Arduino程序需要包含一个setup函数和一个loop函数,loop函数会在程序运行期间反复执行,setup函数只会在程序开始运行时执行一次。学习就是一个不断循环重复的过程。
创意构思
不管做什么事情,在开始之前,都有在脑海里先有一个大致的轮廓,虽然在实际操作过程中会萌生新的想法,但一开始就有一个想法是好的。
因为是入门Arduino,所以目的很单纯,就是点亮一个LED灯这么简单,当成功点亮了一个LED等,可以试着点亮一排LED灯,还可以让这些LED灯拼成一个符号,不停的闪烁也蛮不错的,或者一个接着一个的点亮和熄灭。
先在脑子里画一个电路。
对于我这么个刚入门的小白来说,还能记得初中物理的电路知识,也是很值得鼓励的。如果我没有说错的话,上图中的情况叫做并联电路。之所以加一块220欧的电阻,是因为LED承受不住太强的电流。
可以把Arduino开发板看作是一块电池,我将8号引脚的模式设置为输出,可以看作是电池的正极,LED灯并联起来,汇集到Arduino的负极接地引脚。
我先脑子里有个大致的想法,然后一边摆弄电路再一边晚上想法,因为当时连接电路的时候也是不断地尝试,怎么连接线路能更美观,最终连成了这个样子,并且LED灯最终也点亮了。
我认为学习的过程应该是,理解消化前人总结的东西,真正理解之后再去记忆吸收,然后不断的模仿和重复,再创新,最后将创新总结起来并分享出去,等待那些识得你所创造的价值的人的理解。创新很难,能走到不断模仿和重复这一步已经很不简单。
组装电路
根据脑子里想象的样子,摸索着如何连接电路,过程中会不断改进和完善先前的想法。
一组LED灯插在面包板上杜邦线连接Arduino开发板通过编程线连接电脑
连接好电路,接下来就是编程。使用pinMode(8, OUTPUT)函数将8号引脚作为电平的输出端口即为正极,在loop函数中不断变换8号引脚的电平。
因为电路只有通和断两个状态,要么开,要么关,所以digitalWrite()第二个参数只有中可能,要么HIGH要么LOW。当执行digitalWrite(8, HIGH)的时候,通电,电路中有电压产生,所以就有运动的电流,电流从LED阳极流向阴极,LED就会发光;当执行digitalWrite(8, LOW)的时候,断电,电路中没有电压,也就没有运动的电流,LED灯就不亮。
intled =8;voidsetup(){// 这里写初始化配置,只执行一次:pinMode(led, OUTPUT);}voidloop(){// 这里写主要代码,会重复执行:digitalWrite(led, HIGH); delay(500); digitalWrite(led, LOW); delay(500);}
digitalWrite(8, HIGH)执行后,电路通电,LED亮,此时执行delay(500)函数主程序会暂停500毫秒在执行,LED就会亮500毫秒,然后digitalWrite(8, LOW)执行,LED灭,主程序再暂停500毫秒,至此一个循环完毕,立即进入下一个循环。
我就看到面包板上的一排LED灯每1秒完成亮和灭的表演。
我还发现,如果将LED灯门串联起来,每一个LED发的光都很微弱,将LED灯并联起来每一个LED发的光一样而且很亮。