micropython+ESP32示例(1)——点亮LED灯

摘要

ESP32上面自带2个LED灯,一个在通电时会亮起,另一个可以通过程序点亮,本文将介绍如何通过代码控制该LED的亮灭、频闪。

所需硬件

1、电脑

2、ESP32开发板

3、USB数据线(要能传输的线,不能是只能充电的线)

前提

完成环境部署,具体可参考文章micropython ESP32环境部署-CSDN博客

了解Thoney基本操作,Thonny安装-CSDN博客

一、点亮LED灯

USB线连接ESP32和电脑,打开Thonny,解释器选择MicroPython(ESP32)

可以看到,此时ESP32只有一个LED灯是亮的

在代码编辑区输入如下三行代码


import machine
led = machine.Pin(2,machine.Pin.OUT)
led.value(1)

运行程序,此时ESP32两个LED灯都亮了

下面分析下这三行代码

第1行 import machine

导入machine包,machine包是ESP32硬件功能的基础包,里面包含了ESP32一系列功能,只要开发ESP32程序,都必须要引入这个包

第2行 led = machine.Pin(2,machine.Pin.OUT)

定义一个变量led,指向ESP32的GPIO2引脚,类型为输出,GPIO2即蓝色LED灯对应的引脚,machine.Pin.OUT表明我们要对该GPIO引脚进行输出,即设置其为高电平还是低电平

第3行 led.value(1)

将GPIO2设为高电平,此时蓝色LED灯亮起,如果执行led.value(0)会将该GPIO设为低电平,此时,蓝色LED灯灭

二、设置LED灯闪烁

想要让LED灯闪烁,只需设置让灯亮一会,灭一会,再亮一会,灭一会,依次循环,所以很容易想到用循环控制语句来实现

其代码为

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

点击运行,此时,我们可以看到蓝灯一直闪烁

下面我们分析下代码

第2行 import time

导入包time,该包用于让程序暂停一定时间,达到控制灯持续亮一段时间或持续灭一段时间的效果

第6和第8行 time.sleep(1)

该行的作用是让程序暂停1秒钟,程序暂停期间灯的亮灭状态不变

因此第5-8行的作用就是

让灯亮、程序暂停1秒钟,让灯灭,程序暂停1秒钟

结合外面的循环体,效果就是 灯亮1秒钟、灯灭1秒种、灯亮1秒钟、灯灭1秒种……,于是就看到灯闪烁的样子

注意:代码第8行即最后一行的time.sleep(1)不能省略,否则就变成

让灯亮、程序暂停1秒钟,让灯灭、让灯亮、程序暂停1秒钟,让灯灭……,灯灭了马上就亮,人眼看到的效果就是灯一直亮着。

修改程序的暂停时间可以控制灯闪烁的频率,比如,将第6和第8行改成 time.sleep(2),让灯亮2秒再灭2秒,就闪烁的比之前慢了,

将第6和第8行改成time.sleep_ms(500),让灯亮500毫秒再灭500毫秒,就闪烁的比之前快了

三、按钮控制灯的亮灭

ESP32自带两个按钮,EN按钮和BOOT按钮,其中BOOT按钮可以实现用户定义功能,在按下时触发用户自定义的逻辑。

在这里我们让每次按下BOOT按钮时都改变灯的亮灭状态。

其代码为

import machine
led = machine.Pin(2,machine.Pin.OUT)
def changeLed(pin):
    led.value(not led.value())
btn = machine.Pin(0, machine.Pin.IN)
btn.irq(trigger=machine.Pin.IRQ_FALLING, handler=changeLed)

代码共6行

第1行 import machine

导入machine包,machine包是ESP32硬件功能的基础包,里面包含了ESP32一系列功能,只要开发ESP32程序,都必须要引入这个包

第2行 led = machine.Pin(2,machine.Pin.OUT)

定义一个变量led,指向ESP32的GPIO2引脚,类型为输出,GPIO2即蓝色LED灯对应的引脚,machine.Pin.OUT表明我们要对该GPIO引脚进行输出,即设置其为高电平还是低电平

第3、第4行,定义一个函数,在函数内对led的值取反,原本是1变成0,原本是0变成1,即改变LED灯的亮灭状态

第5行 btn = machine.Pin(0, machine.Pin.IN)

定义一个变量btn,指向ESP32的GPIO0引脚,类型为输入,GPIO0引脚即ESP32上USB口右边的BOOT按钮,类型为输入,表明我们要读取其状态

第6行 btn.irq(trigger=machine.Pin.IRQ_FALLING, handler=changeLed)

设置按钮的中断,trigger=machine.Pin.IRQ_FALLING指定当检测到引脚输入信号下降沿时触发中断程序,handler=changeLed表明中断服务程序是咱们前面第3行、第4行定义的函数changeLed,这样当我们按下按钮时,就会调用函数changeLed,修改灯的状态。

至此,我们实现了控制灯的亮灭和闪烁。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值