一、入坑
众所周知,嵌入式编程学习入门的第一课为打印“Hello World!”,第二课就是我们今天的实验点亮LED。
LED的应用场景在嵌入式领域无处不见,有做电源指示灯、跑马灯、呼吸灯、信号通信灯、工作指示灯和网络灯等等,要实现这些功能,首先得把LED点亮。
用C、C++或者Java的方法相信大家已经见多了吧,那么接下来我们来学下如何使用QuecPython的方法点亮LED。近几年,Python的热度一直居高不减,是目前最受欢迎的编程语言之一,语法简洁且可读性强,chatGPT也是这么认为。QuecPython不仅保留了Python的优点,而且还能在移远通信模组上面运行,给物联网开发者提供了极大的便利。
我们言归正传,想要点亮LED,首先要搭建硬件环境。硬件接线可参考下图,供电采用单独的电源,模组的IO驱动能力较弱,不建议将IO接到LED供电或者负极,R34为限流电阻,Q2作为一个开关,通过模组IO输出高低电平实现打开关闭的效果。
硬件搭建完成后接下来就是软件编写了,我们先看看用C的方法是如何实现的,这里参考了STC89C51单片机的写法,定义LED驱动引脚和延时函数,接着在主函数里面调用,
如下图所示:
那么再看看用Python的方法是如何实现,首先导入GPIO和utime的库,定义需要控制的Pin.GPIO,接着定义一个方法,在这个方法里面对LDE的控制脚输出高低电平,实现LED灯的亮灭。代码如下图所示,在之前的文章里有提到过如何将Python脚本下载到模组,咱们不需要编译,主打的就是方便快捷。
实验结果如下图所示,PWM指示灯实现1S亮灭:
二、进阶玩法
以上我们已经成功将LED点亮,接下来我们实现LED进阶的玩法,流水灯、呼吸灯等等。
1、流水灯实验
首先第一个是实现流水灯效果。想要实现流水灯效果,得需要两个以上的LED,正巧EC600X_QuecPyhton_EVB开发板上就有两个可以自定义的LED,硬件条件有了,接下来我们来编写驱动脚本。把LED驱动引脚放到一个List,再定义一个PIN方法,往里面传LED驱动引脚和输出的高低电平,实验代码和实验结果如下图所示:
2、呼吸灯实验
所谓呼吸灯,就是指LED灯在MCU的控制下完成由亮到暗再由暗到亮的逐渐变化,感觉就像是人在呼吸。实现的原理是将使能引脚电压逐渐减小再逐渐增加,普通的GPIO引脚只能输出0和1实现“眨眼睛”的效果,因此这里我们需要用到PWM的功能,当我们随着时间不断改变PWM的占空比就能实现呼吸的效果,以下是用QuecPython实现的代码和结果:
3、网络灯功能
很多小伙伴们拿到移远小内存的模组(EC800MCNLF/EC800ECNLE)刷了QuecPyhton固件后,发现网络灯不亮了,或者变成了常亮。心里是不是想着,“我才入坑第一步啊!咋就出问题了“。
莫慌,这是正常的现象,小内存方案的模组资源有限,网络灯功能就没有加到固件。但是,今天学了LED进阶后,是不是可以自己实现网络灯功能?
写一个判断当前网络状态的脚本,并且定义两种LED显示的方式,当网络状态正常时调用一种LED的状态,当网络异常时调用另一种状态,网络灯的显示是否已经有眉目了,那么这个就当作今天的“作业“咯。