MicroPython ESP32machine.Pin类函数以及参数详解
Posted perseverance52
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MicroPython ESP32machine.Pin类函数以及参数详解相关的知识,希望对你有一定的参考价值。
【MicroPython ESP32】machine.Pin类函数以及参数详解
- ✨本案例基于Thonny平台开发。✨
🔖通过Shell调试窗口查询Pin类的的相关帮助信息
from machine import Pin
- 📍 value – 不带参数为获取状态,带参数为赋值
- 📍 off – 赋值0
- 📍 on – 赋值1
- 📍 irq – 中断函数
- 📍 IN – 输入模式
- 📍 OUT – 输出模式
- 📍 OPEN_DRAIN – 开漏输出
- 📍 PULL_UP – 上拉状态
- 📍 PULL_DOWN – 下拉状态
- 📍 PULL_HOLD – 浮空?
- 📍 IRQ_RISING – 中断触发条件,上升沿触发
- 📍 IRQ_FALLING --中断触发条件,下降沿触发
- 📍 WAKE_LOW – 中断触发条件,低电平触发
- 📍 WAKE_HIGH – 中断触发条件,高电平触发
📝引脚输入输出状态
🧧 esp32引脚说明
- 📌GPIO0 和 GPIO2 为strapping引脚,这类引脚可影响启动
- 📌引脚1和3分别是串口交互(REPL)的TX和RX。
- 📌0-19, 21-23, 25-27, 32-39.分别对应ESP32芯片的实际引脚
- 📌引脚6, 7, 8, 11, 16, 和 17 are 连接到模块的Flash,不建议做其它用途。
- 📌引脚 34-39 只允许输入, 没有内部上拉电阻。
⛳示例代码
引脚1和3分别是串口交互(REPL)的TX和RX。
0-19, 21-23, 25-27, 32-39.分别对应ESP32芯片的实际引脚
引脚6, 7, 8, 11, 16, 和 17 连接到模块的Flash,不建议做其它用途。
引脚 34-39 只允许输入, 没有内部上拉电阻。
部分引脚的pull值可以设置为 Pin.PULL_HOLD 以降低深度睡眠时候的功耗
'''
from machine import Pin
from utime import sleep #延时
p0 = Pin(32, Pin.OUT) # 创建对象p0,对应GPIO0口输出
p0.on() # 设置引脚为 "on" (1)高电平
p0.off() # 设置引脚为 "off" (0)低电平
p0.value(1) # 设置引脚为 "on" (1)高电平
p2 = Pin(22, Pin.IN) # 创建对象p2,对应GPIO2口输入
print(p2.value()) # 获取引脚输入值, 0(低电平) 或者 1(高电平)
p4 = Pin(4, Pin.IN, Pin.PULL_UP) # 打开内部上拉电阻
#p5 = Pin(5, Pin.IN, value=1) # 初始化时候设置引脚的值为 1(高电平)
p12 = Pin(12, Pin.IN,Pin.PULL_UP)
p23 = Pin(23, Pin.IN,Pin.PULL_UP)
def blink(pin):
print('Tri',pin)
for i in range(2):
p0.value(not p0.value())
sleep(0.5)
p23.irq(lambda pin:print("IRQ with flag:", pin.value()),trigger=Pin.IRQ_FALLING) # 下降沿中断
p12.irq(trigger=Pin.IRQ_RISING | Pin.IRQ_FALLING,handler=blink) # 上升沿或下降沿中断
while True:
pass
中断函数示例
当GPIO23引脚拉低时,触发中断,板载led灯亮3秒熄灭。
from machine import Pin
from time import sleep
State = False
# 回调函数
def handle_interrupt(pin):
global State
State = True
global interrupt_pin
interrupt_pin = pin
led = Pin(2, Pin.OUT)
pir = Pin(23, Pin.IN,Pin.PULL_UP)
# 上升沿中断
pir.irq(trigger=Pin.IRQ_RISING, handler=handle_interrupt)
while True:
if State:
print('Interrupt caused by:', interrupt_pin)
led.value(1)
sleep(3)
led.value(0)
print('Tri!')
State = False
以上是关于MicroPython ESP32machine.Pin类函数以及参数详解的主要内容,如果未能解决你的问题,请参考以下文章
ESP32 MicroPython开发之旅 设备篇② ——machine Signal,点亮一个LED灯