esp32s3一个按键控制三种模式第一种模式点亮一个灯第二种模式点亮二个灯第三种模式点亮三个灯用python
时间: 2024-11-12 10:33:40 浏览: 21
在ESP32-S3单片机上,你可以使用Python编程语言来控制GPIO端口,并通过按键触发不同模式下的灯光亮灭。首先,你需要设置按键的中断,当按键按下时进入中断服务函数。这里是一个简单的示例:
```python
import machine # 导入machine模块用于操作GPIO
# 定义按键和LED引脚
BTN_PIN = const(0) # 按键
LED_1_PIN = const(2) # 第一个LED
LED_2_PIN = const(3) # 第二个LED
LED_3_PIN = const(4) # 第三个LED
# 初始化GPIO
btn = machine.Pin(BTN_PIN, machine.Pin.IN, machine.Pin.PULL_UP)
led1 = machine.Pin(LED_1_PIN, machine.Pin.OUT)
led2 = machine.Pin(LED_2_PIN, machine.Pin.OUT)
led3 = machine.Pin(LED_3_PIN, machine.Pin.OUT)
def led_mode_handler(pin):
if pin.value() == 0: # 按键按下
global current_mode # 全局变量,记录当前模式
current_mode += 1 # 切换模式,范围0-2(注意加法溢出)
current_mode %= 3 # 循环处理,防止超过最大值
# 根据当前模式控制LED灯
if current_mode == 0:
led1.on() # 点亮第一个LED
led2.off()
led3.off()
elif current_mode == 1:
led1.on()
led2.on()
led3.off()
else: # current_mode == 2
led1.on()
led2.on()
led3.on()
# 绑定按键的中断处理函数
btn.irq(trigger=machine.Pin.IRQ_FALLING, handler=led_mode_handler)
while True:
pass # 等待按键触发
```
在这个示例中,按键触发时会调用`led_mode_handler`函数,根据当前模式更改LED的状态。记住,实际应用中可能需要添加延时或者其他错误处理机制。
阅读全文