视频连接
点亮led是嵌入式工程师的“hello world”。
Micropython操作lO口使用machine模块下的Pin模块。
笔者手中的led接到esp32的pin2口。
1.4.1. 确认板载led的IO口
拿到一款新的单片机板后,如果没有技术资料,如有板载led,那如何确认板载LED的IO呢?
思路:扫描1~n(如n=10)号IO口,打印当前IO口,并点亮,演示1s,如果打印和led亮灯同步(肉眼观察),则可判断led的IO口。
注:不知道什么原因,i=2/6时会引起单片机复位(WDT复位)。
本文中用到的单片机板,打印2时led点亮,故可判断led的控制IO为2。此时按下“ctrl+c”退出当前程序,进入命令行等待命令状态“就绪状态1”。
1.4.2. 命令行测试
Micropython应用程序的开发可分为两步:1.在命令行中测试;2.将测试成功的代码存入到文件中(包括boot.py、main.py及其他模块文件)。
例程描述:要求Led按1Hz的频率闪烁,亮、灭时间各占一半;
需求分析:与“每秒打印一次‘hell world’”主体类似,区别是打印“hello world”部分改为操作led;
代码实现:
命令行操作实验如下,可以观察到蓝色Led按1Hz频率闪烁。
这里,首次涉及到Pin(IO口)模式设置,Pin模式如何选择?什么时候用Pin.OUT?什么时候用Pin.IN?
原则:单片机掌握主动权时用Pin.OUT,单片机不掌握主动权时用Pin.IN。如控制Led时命令是由单片机发出,单片机掌握主动权,所以用Pin.OUT。而在驱动开关时,开关状态的切换是有外界发出的,不由单片机控制,单片机只能读取IO口的电平值,所有用Pin.IN。
备注:在命令行模式下,可以通过help(?)简单查询模块的信息,如下所示:
1.4.3. 保存为文件
将上节命令行的代码复制,粘贴到文件中。确认无误后,ctl+s保存,选择保存到“micropython设备”,文件名“main.py”。重启单片机,可以看到Led按1Hz的频率闪烁。