MicroPython ESP32 GPIO引脚输入输出示例

MicroPython ESP32 GPIO引脚输入输出示例


  • 在线仿真演示gpio作为外部输入中断
    在这里插入图片描述

GPIO引脚输入输出状态设置属于machine模块中的类

from machine import Pin #引入引脚模块,才可以控制esp32引脚

GPIO相关的功能函数以及参数

>>> from machine import Pin
>>> help(Pin)
object <class 'Pin'> is of type type
  init -- <function>
  value -- <function>
  off -- <function>
  on -- <function>
  irq -- <function>
  IN -- 1
  OUT -- 3
  OPEN_DRAIN -- 7
  PULL_UP -- 2
  PULL_DOWN -- 1
  IRQ_RISING -- 1
  IRQ_FALLING -- 2
  WAKE_LOW -- 4
  WAKE_HIGH -- 5
  DRIVE_0 -- 0
  DRIVE_1 -- 1
  DRIVE_2 -- 2
  DRIVE_3 -- 3

函数说明

  • Pin.on():设置引脚为高电平
  • Pin.off():设置引脚为低电平
  • Pin.value(0/1):设置引脚为高电平或者低电平
  • Pin.irq():中断函数设置
  • GPIO输入输出设置:
  IN -- 1
  OUT -- 3
  • GPIO引脚输入输出模式:
  OPEN_DRAIN -- 7
  PULL_UP -- 2
  PULL_DOWN -- 1

  • GPIO作为中断引脚时设置的触发方式:
  IRQ_RISING -- 1
  IRQ_FALLING -- 2
   WAKE_LOW -- 4
  WAKE_HIGH -- 5

GPIO引脚作为外部输入中断引脚示例代码

from machine import Pin

def callback(p):
    mypin.value(mypin.value() ^ 1)  # 状态取反

btn = Pin(22, Pin.IN, Pin.PULL_UP) # 作为外部中断输入信号引脚
mypin = Pin(2, Pin.OUT)  # 作为发生中断时,响应的状态指示灯
btn.irq(trigger=Pin.IRQ_FALLING, handler=callback) # 设置中断,中断触发方式、回调函数

print("Hello, ESP32!")
while True:
    pass
  • 在线仿真地址:https://wokwi.com/projects/339885688536171090
以下是一个使用MicroPython-ESP32实现硬件并行的代码示例: ```python import machine import time # 定义按钮引脚和LED引脚 button_pin = machine.Pin(0, machine.Pin.IN, machine.Pin.PULL_UP) led_pin = machine.Pin(2, machine.Pin.OUT) # 定义信号对象 signal = machine.Signal(0) # 定义按键任务 def button_task(): while True: # 检测按钮状态 if button_pin.value() == 0: # 设置信号为1 signal.value(1) else: # 设置信号为0 signal.value(0) time.sleep(0.01) # 定义LED任务 def led_task(): while True: # 检测信号状态 if signal.value() == 1: # 设置LED亮起 led_pin.value(1) else: # 设置LED关闭 led_pin.value(0) time.sleep(0.01) # 创建两个线程并分别运行按键任务和LED任务 _thread.start_new_thread(button_task, ()) _thread.start_new_thread(led_task, ()) ``` 在这个例子中,我们使用`machine.Pin`模块来控制GPIO引脚0和2的状态,其中引脚0用于连接按钮,引脚2用于连接LED灯。我们还创建了一个`machine.Signal`对象,用于在两个任务之间传递信号。在`button_task`任务中,我们检测按钮的状态,并将信号设置为1或0。在`led_task`任务中,我们检测信号的状态,并相应地设置LED灯的状态。这两个任务在不同的线程中运行,因此它们可以并行处理。 当您运行这个程序时,您将看到当按下按钮时,LED灯会亮起。这是因为两个任务在并行运行,当按钮被按下时,`button_task`任务会将信号设置为1,`led_task`任务会检测到该信号,并相应地设置LED灯的状态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值