写一个按键按下时只执行一次函数1,检测到按键还在按下一直执行函数2的代码
时间: 2024-02-12 09:03:01 浏览: 34
这是一个简单的按键检测程序,能够检测按键是否按下,并且只在按下瞬间执行函数1,在按键按下期间一直执行函数2。
```python
import RPi.GPIO as GPIO
import time
# 设置 GPIO 模式为 BCM
GPIO.setmode(GPIO.BCM)
# 设置按键引脚和 LED 引脚
button_pin = 18
led_pin = 23
# 设置按键引脚为输入模式,上拉电阻
GPIO.setup(button_pin, GPIO.IN, pull_up_down=GPIO.PUD_UP)
# 设置 LED 引脚为输出模式
GPIO.setup(led_pin, GPIO.OUT)
# 定义变量,用于记录按键状态和上一次的按键状态
button_state = False
last_button_state = False
# 定义函数1,只在按键按下瞬间执行一次
def function1():
print("Button pressed!")
# 定义函数2,当按键一直按下时一直执行
def function2():
GPIO.output(led_pin, True)
time.sleep(0.5)
GPIO.output(led_pin, False)
time.sleep(0.5)
# 主循环
while True:
# 读取按键状态
button_state = GPIO.input(button_pin)
# 检测按键状态是否发生变化
if button_state != last_button_state:
# 如果按键状态变为按下,则执行函数1
if button_state == False:
function1()
# 如果按键状态变为释放,则不执行任何操作
else:
pass
# 如果按键仍然处于按下状态,则执行函数2
if button_state == False:
function2()
# 记录上一次的按键状态
last_button_state = button_state
# 等待一段时间
time.sleep(0.01)
```
注:本程序使用的是树莓派的 GPIO 引脚,如果你使用的是其他开发板或者单片机,请根据具体情况修改代码。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)