从零玩转Micropython+ESP32(三) 点亮一个LED灯
经过前面的不懈努力, 我们已经完成了固件的烧录和编程环境的搭建, 现在, 我们可以正式的进入MicroPython+ESP32的学习了.
如同学习任何编程语言我们都从hello world
开始类似, 学习任何(单片机)硬件我们都要从点亮LED灯开始!
一. 如何点亮一个灯??
有同学说: 是这样
说的没错, 就是这样, 事实上, 我们只要在灯泡的两级之间形成电压,有电流流过, 灯泡自然会发光, 这就是直流电灯的原理, 据说是爱迪生发明的
我们的ESP32开发板上就有一个灯, 上一篇我们已经点亮过它了 (红色的是自带电源灯, 不是我们想点亮的灯)
这颗灯和我们刚刚介绍的灯泡不太相同, 它是一颗LED灯, 和传统灯泡的区别是: 它其实是一个发光二极管, 特点是:
- 有正反方向
- 接通时内阻特别小, 就像导线一样小
因为二极管内阻特别小, 所以如果我们像接灯泡一样接通二极管, 就相当于把电源和地直接连接在一起, 电流直接从正极流到负极引发短路, 结局可想而知
解决办法是: 我们给LED灯串上一个电阻, 这样即使LED灯接通, 也不至于短路 (这个电阻起到的是限制电流作用, 所以可以称之为"限流电阻",目的是为了防止短路)
现在我们明白了, 如果一个LED灯, 一边接上电源, 一遍接地, 再串入一个电阻, 就可以发光了, 我们的ESP32亮灯实验就是这个原理!
二. GPIO引脚
原理讲完了, 我们到底该如何让ESP32亮灯呢?
别急, 这里要先介绍一下ESP32的引脚,
1. 引脚
引脚又叫管脚,英文叫Pin, 就是从集成电路(芯片以及一些电子元件)内部电路引出与外围电路的接线的接口
再我们的ESP32开发板上, 我们可以把这些称为引脚, 这些引脚其实是从ESP32芯片内部引出来的, 我们可以看到每个引脚都标了自己独特的名字
2. GPIO引脚
其中有一类引脚叫GPIO引脚, 负责输入/输出电压. 开发板上D开头的引脚都是这种引脚, 比如 D2, D4, D15等等
输入我们暂时不讲, 这里我们先讲一下输出
简单来说, 每个GPIO都可以输出高低电平, 什么叫高低电平呢?
一般规定低电平为电压0~ 0.25V,高电平为电压3.5~5V, 一般高电平用1表示, 低电平用0表示
(考考你) 假如一个GPIO引脚输出了如下的一段电信号, 大家能看出下面这段电信号代表数字几吗?
3. 如果把GPIO引脚接上LED灯...
如果我们选一个GPIO引脚(比如D2), 接上LED灯... 同学们想想会发生什么呢?
答: 如果D2输出高电平, 灯就会亮, 如果输出低电平,灯就会灭
三. 使用MicroPython点亮LED灯
前面的铺垫终于完成, 现在我们来点亮LED灯,
先告诉大家一个好消息, 在ESP32开发板上, 板上电路已经把D2引脚, 串联了电阻并与蓝色LED灯连在一起了, 所以我们不需要搭建电路了(如果你想用其他引脚实现, 就需要自己搭建电路, 这个我们后面会讲.)
现在, 我们来学习如何用MicroPython控制GPIO
要控制GPIO, 我们只需要三部
-
引入
machine
库里的Pin
类首先我们要用的就是
machine
库里的Pin类, 这个库是MicroPython官方库, 无需下载安装我们在互动模式下输入实例化一个Pin
from machine import Pin
-
我们使用如下代码
led = Pin(2, Pin.OUT)
其中 2 代表引脚2, Pin.OUT是设置引脚为输出模式
-
输出高电平点亮
led.value(1)
意思就是把led的值设为1
-
接下来就是见证奇迹的时刻, 可以看到我们成功点亮了蓝灯
-
如果我们想关闭蓝灯, 就输入
led.value(0)
四. 使用文件模式编写第一个亮灯程序
现在我们使用文件模式创建亮灯程序
我们只需要按照上一篇的方法创建文件, 写入如下代码即可
from machine import Pin
led = Pin(2, Pin.OUT)
led.value(1)
五. 小实验: 让LED灯闪烁
学习了上面的内容后, 相信大家已经完全学会了如何控制LED灯, 下面交给大家一个小作业:让LED灯闪烁起来(每秒钟亮/灭一次)
答案:
点击查看答案
from machine import Pin
import time
led = Pin(2, Pin.OUT)
while True:
led.value(not led.value())
time.sleep(1)