01 - LED实验

本节课我们将学习如何使用 ESP32 的 machine.Pin类来实现 IO 操作。
machine.Pin类是machine模块中的一个硬件接口类,专门用于配置和控制 GPIO(通用输入输出)引脚。每个Pin类对象都与一个物理引脚直接对应,可以用来驱动输出电压或读取输入电压。通过掌握Pin类的使用,你可以灵活地控制 ESP32 的输入输出功能,为你的项目添加更多互动性。

本节课目标:

        通过编程控制开发板上的LED灯,以500ms间隔交替闪烁,实现类似跑马灯的动态效果。

本节课内容:

    1. machine.Pin类简介
    2. time模块
    3. 硬件设计
    4. 软件设计
    5. 下载验证

一、machine.Pin类

    Pin 类提供了设置引脚模式(输入或输出)的方法,以及获取和设置引脚数字逻辑值(0 或 1)的方法。要创建一个 Pin 对象,我们需要指定一个标识符,该标识符用于唯一标识特定的输入/输出引脚。标识符可以是一个整数、字符串,或者是一个包含端口和引脚号码的元组。

下面是MicroPython库的machine.Pin类链接。

类引脚 – 控制 I/O 引脚 — MicroPython latest 文档

1. machine.Pin类的构造对象

构造对象方法如下:

class machine.Pin(id, mode=-1, pull=-1,value=None)

使用示例:led = machine.Pin(2, Pin.OUT, value = 1)

构造函数的参数描述如下:

参数

描述

id

id是必需的,可以是任意对象。在可能的值中 类型包括:int (内部 Pin 标识符)、str (Pin 名称) 和 tuple (一对 [port,pin])。

mode

  • Pin.IN- Pin 配置为输入。如果被视为输出,则引脚 处于高阻抗状态
  • Pin.OUT- 引脚配置为 (正常) 输出
  • Pin.OPEN_DRAIN- 引脚配置为漏极开路输出。开漏 output 的工作方式如下:如果 output value 设置为 0,则 pin 在较低级别活跃;如果 output 值为 1,则 pin 处于高阻抗状态。并非所有 ports 都实现此模式,或者有些 ports 可能仅在某些 pins上实现
  • Pin.ANALOG- Pin 配置为模拟输入

pull

  • None- 无上拉或下拉电阻。
  • Pin.PULL_UP- 上拉电阻使能。
  • Pin.PULL_DOWN- 下拉电阻使能。

value

仅对 Pin.OUT Pin.OPEN_DRAIN模式有效,并指定初始 output pin 值(如果给定),否则 pin peripheral 的状态保持不变

返回值:Pin 类对象

2. machine.Pin类的方法

(1)初始化引脚

方法原型如下:

led.init(mode=Pin.OUT, pull=None, value=None)

方法的参数描述如下:

参数

描述

mode

  • Pin.IN- Pin 配置为输入。如果被视为输出,则引脚 处于高阻抗状态
  • Pin.OUT- 引脚配置为 (正常) 输出
  • Pin.OPEN_DRAIN- 引脚配置为漏极开路输出。开漏 output 的工作方式如下:如果 output value 设置为 0,则 pin 在较低级别活跃;如果 output 值为 1,则 pin 处于高阻抗状态。并非所有 ports 都实现此模式,或者有些 ports 可能仅在某些 pins上实现
  • Pin.ANALOG- Pin 配置为模拟输入

pull

  • None- 无上拉或下拉电阻。
  • Pin.PULL_UP- 上拉电阻使能。
  • Pin.PULL_DOWN- 下拉电阻使能。

value

仅对 Pin.OUT Pin.OPEN_DRAIN模式有效,并指定初始 output pin 值(如果给定),否则 pin peripheral 的状态保持不变

返回值:无

(2)获取或设置管脚输出电平

方法原型如下:

led.value([x])

方法的参数描述如下:

参数

描述

x

  • 有参数:设置输出电平
  • 无参数:获取管脚电平

返回值:管脚电平

(3)设置管脚输出高电平

方法原型如下:

led.on()

返回值:无

(4)设置管脚输出低电平

方法原型如下:

led.off()

返回值:无

二、time模块

1. 延时

  • time.sleep(seconds):秒级的延时
  • time.sleep_ms(ms):毫秒的延时
  • time.sleep_us(us):微秒的延时

三、硬件设计

1. 例程功能

        通过编程控制开发板上的LED灯,以500ms间隔交替闪烁,实现类似跑马灯的动态效果。

2. 硬件资源

  • LED 灯:GPIO2 --> LED 【高电平:亮; 低电平:灭】

3. 原理图

四、软件设计

1. 程序流程图

2. 程序

from machine import Pin
import time


def led():
    """
    控制开发板上的LED灯,以500ms间隔交替闪烁
    """
    # 构造 Pin 对象
    led = Pin(2, Pin.OUT, value=0)

    while True:
        led.value(1)            # 设置 LED 亮
        time.sleep_ms(500)      # 延时 500ms
        led.value(0)            # 设置 LED 灭
        time.sleep_ms(500)      # 延时 500ms


led()

五、下载验证

可以看到开发板上的LED灯以500ms周期闪烁。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值