从零玩转Micropython+ESP32(三) 点亮一个LED灯

经过前面的不懈努力, 我们已经完成了固件的烧录和编程环境的搭建, 现在, 我们可以正式的进入MicroPython+ESP32的学习了.

img

如同学习任何编程语言我们都从hello world开始类似, 学习任何(单片机)硬件我们都要从点亮LED灯开始!

一. 如何点亮一个灯??

有同学说: 是这样

image-20220216151407986

说的没错, 就是这样, 事实上, 我们只要在灯泡的两级之间形成电压,有电流流过, 灯泡自然会发光, 这就是直流电灯的原理, 据说是爱迪生发明的

image-20220216152535546

我们的ESP32开发板上就有一个灯, 上一篇我们已经点亮过它了 (红色的是自带电源灯, 不是我们想点亮的灯)

image-20220216152847902

这颗灯和我们刚刚介绍的灯泡不太相同, 它是一颗LED灯, 和传统灯泡的区别是: 它其实是一个发光二极管, 特点是:

  1. 有正反方向
  2. 接通时内阻特别小, 就像导线一样小

因为二极管内阻特别小, 所以如果我们像接灯泡一样接通二极管, 就相当于把电源和地直接连接在一起, 电流直接从正极流到负极引发短路, 结局可想而知

解决办法是: 我们给LED灯串上一个电阻, 这样即使LED灯接通, 也不至于短路 (这个电阻起到的是限制电流作用, 所以可以称之为"限流电阻",目的是为了防止短路)

现在我们明白了, 如果一个LED灯, 一边接上电源, 一遍接地, 再串入一个电阻, 就可以发光了, 我们的ESP32亮灯实验就是这个原理!

二. GPIO引脚

原理讲完了, 我们到底该如何让ESP32亮灯呢?

别急, 这里要先介绍一下ESP32的引脚,

1. 引脚

引脚又叫管脚,英文叫Pin, 就是从集成电路(芯片以及一些电子元件)内部电路引出与外围电路的接线的接口

image-20220216160844610

再我们的ESP32开发板上, 我们可以把这些称为引脚, 这些引脚其实是从ESP32芯片内部引出来的, 我们可以看到每个引脚都标了自己独特的名字

2. GPIO引脚

其中有一类引脚叫GPIO引脚, 负责输入/输出电压. 开发板上D开头的引脚都是这种引脚, 比如 D2, D4, D15等等

输入我们暂时不讲, 这里我们先讲一下输出

简单来说, 每个GPIO都可以输出高低电平, 什么叫高低电平呢?

一般规定低电平为电压0~ 0.25V,高电平为电压3.5~5V, 一般高电平用1表示, 低电平用0表示

image-20220216162613549

(考考你) 假如一个GPIO引脚输出了如下的一段电信号, 大家能看出下面这段电信号代表数字几吗?

3. 如果把GPIO引脚接上LED灯...

如果我们选一个GPIO引脚(比如D2), 接上LED灯... 同学们想想会发生什么呢?

答: 如果D2输出高电平, 灯就会亮, 如果输出低电平,灯就会灭

三. 使用MicroPython点亮LED灯

前面的铺垫终于完成, 现在我们来点亮LED灯,

先告诉大家一个好消息, 在ESP32开发板上, 板上电路已经把D2引脚, 串联了电阻并与蓝色LED灯连在一起了, 所以我们不需要搭建电路了(如果你想用其他引脚实现, 就需要自己搭建电路, 这个我们后面会讲.)

现在, 我们来学习如何用MicroPython控制GPIO

要控制GPIO, 我们只需要三部

  1. 引入machine库里的Pin

    首先我们要用的就是machine库里的Pin类, 这个库是MicroPython官方库, 无需下载安装

    我们在互动模式下输入实例化一个Pin

    from machine import Pin
  2. 我们使用如下代码

    led = Pin(2, Pin.OUT)

​ 其中 2 代表引脚2, Pin.OUT是设置引脚为输出模式

  1. 输出高电平点亮

    led.value(1)

    意思就是把led的值设为1

  2. 接下来就是见证奇迹的时刻, 可以看到我们成功点亮了蓝灯

image-20220216171024202

  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)

©本文首发于 菁英编程爱好者, 转载请注明出处.
菁英编程爱好者 » 从零玩转Micropython+ESP32(三) 点亮一个LED灯

发表评论

提供最优质的资源集合

立即查看 了解详情