• 1.4. 板载LED控制


    视频连接

    点亮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复位)。

    wps9

    本文中用到的单片机板,打印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;

    代码实现:

    from machine import Pin
    
    led = Pin(2,Pin.OUT)
    
    from time import sleep
    
    while True:
        led.on()
        sleep(0.5)
        led.off()
        sleep(0.5)

    命令行操作实验如下,可以观察到蓝色Led按1Hz频率闪烁。

    这里,首次涉及到Pin(IO口)模式设置,Pin模式如何选择?什么时候用Pin.OUT?什么时候用Pin.IN?

    原则:单片机掌握主动权时用Pin.OUT,单片机不掌握主动权时用Pin.IN。如控制Led时命令是由单片机发出,单片机掌握主动权,所以用Pin.OUT。而在驱动开关时,开关状态的切换是有外界发出的,不由单片机控制,单片机只能读取IO口的电平值,所有用Pin.IN。

    备注:在命令行模式下,可以通过help(?)简单查询模块的信息,如下所示:

    wps11

    其中value函数,当参数为0时读IO口的当前值(注意读到的是输出寄存器)。当参数为01时,设定Pin口为参数中的值,所以代码还可以用如下方式实现:

    from machine import Pin
    
    led = Pin(2,Pin.OUT)
     
    from time import sleep
    
    while True:
        led.value(1-led.value())
        sleep(0.5)
        led.value(1-led.value())
        sleep(0.5)

    Led IO口翻转分析:

    1. 当前值=0时,led.value(1-led.value())=led.value(1-0)=led.value(1)
    2. 当前值=1时,led.value(1-led.value())=led.value(1-1)=led.value(0)
    1.4.3. 保存为文件

    将上节命令行的代码复制,粘贴到文件中。确认无误后,ctl+s保存,选择保存到“micropython设备”,文件名“main.py”。重启单片机,可以看到Led按1Hz的频率闪烁。

    ----*----*----*----*----*----*----*----*----*----*----*----
    史久超 email:shijiuchao1983@163.com tel:15999550975 qq:157185173
  • 相关阅读:
    定时任务框架APScheduler学习详解
    Python list 和 str 互转
    python多个变量赋值
    python数据类型转换
    jquery datetimepicker 配置参数
    c#判断是否为合法的email地址
    SQL的四种连接-左外连接、右外连接、内连接、全连接
    SQL表连接查询(inner join、full join、left join、right join)
    简单的日期转换
    递归
  • 原文地址:https://www.cnblogs.com/horal/p/15526758.html
Copyright © 2020-2023  润新知