esp32一个按键按第一下点亮第一个灯按第二下点亮第二个灯
时间: 2024-11-09 13:30:36 浏览: 12
在ESP32中,实现一个按键同时控制两个LED灯,可以使用中断或者软件延时的方式来区分按键的不同触发。这里提供一种简单的软件延时方法示例:
首先,假设你的LED1连接在GPIO13,LED2连接在GPIO14,而按键还是连接在GPIO0。我们需要两个独立的计数变量来对应每个LED的点亮状态:
```python
import machine
import time
# 初始化LEDs
led1 = machine.Pin(13, machine.Pin.OUT)
led2 = machine.Pin(14, machine.Pin.OUT)
# 初始化按键
button = machine.Pin(0, machine.Pin.IN, pull=machine.Pin.PULL_UP)
led_states = [False, False] # 保存LED的状态
last_press = 0 # 上次按键按下时间
while True:
current_time = time.ticks_ms()
# 检查按键是否按下
if not button.value() and current_time - last_press > 200: # 按键持续按下超过200毫秒视为有效按下
last_press = current_time
index = (time.ticks_cpu() % 2) # 根据CPU时间获取奇偶数,交替切换LED
led_states[index] = not led_states[index] # 切换状态
# 更新LED状态
led1.value(led_states[0])
led2.value(led_states[1])
# 稍微延迟避免频繁检测
time.sleep_us(100)
```
在这个例子中,每次按键按下后会等待200毫秒,然后切换第一个LED和第二个LED的亮灭状态。`time.ticks_cpu()`返回当前CPU时间,% 2操作使其取模后得到0或1,表示LED1和LED2。
阅读全文