酷代码 AI
菜单
全部AI  /  热门  /  AI写代码神器
服务商

按键按一下亮在按一下灭

以下是不同环境下实现按键按一下亮,再按一下灭功能的代码示例: Arduino环境 ```cpp // 定义按键引脚 const int buttonPin = 2; // 定义LED引脚 const int ledPin = 13; // 按键的上一次状态 int lastButtonState = HIGH; // 当前按键状态 int buttonState; // LED状态 bool ledOn = false; void setup() { // 将按键引脚设置为输入模式 pinMode(buttonPin, INPUT_PULLUP); // 将LED引脚设置为输出模式 pinMode(ledPin, OUTPUT); } void loop() { // 读取按键状态 buttonState = digitalRead(buttonPin); // 检测按键是否按下(从高电平变为低电平) if (lastButtonState == HIGH && buttonState == LOW) { // 切换LED状态 ledOn = !ledOn; // 根据LED状态设置LED引脚的电平 digitalWrite(ledPin, ledOn ? HIGH : LOW); // 延时一段时间,消除按键抖动 delay(50); } // 更新上一次按键状态 lastButtonState = buttonState; } ``` Python + Raspberry Pi GPIO ```python import RPi.GPIO as GPIO import time # 定义按键引脚 button_pin = 17 # 定义LED引脚 led_pin = 18 # LED状态 led_on = False # 设置GPIO模式为BCM编号 GPIO.setmode(GPIO.BCM) # 设置按键引脚为输入模式,启用上拉电阻 GPIO.setup(button_pin, GPIO.IN, pull_up_down=GPIO.PUD_UP) # 设置LED引脚为输出模式 GPIO.setup(led_pin, GPIO.OUT) try: while True: # 读取按键状态 button_state = GPIO.input(button_pin) if button_state == GPIO.LOW: # 延时一段时间,消除按键抖动 time.sleep(0.05) if GPIO.input(button_pin) == GPIO.LOW: # 切换LED状态 led_on = not led_on # 根据LED状态设置LED引脚的电平 GPIO.output(led_pin, led_on) # 等待按键释放 while GPIO.input(button_pin) == GPIO.LOW: time.sleep(0.01) except KeyboardInterrupt: # 清理GPIO设置 GPIO.cleanup() ``` 额外需要注意的逻辑点 1. 按键抖动问题:按键在按下和释放时会产生抖动,可能导致多次触发,因此需要进行消抖处理,例如在检测到按键状态变化后延时一段时间。 2. 状态更新:要及时更新按键的上一次状态,以便正确检测按键的按下和释放事件。 3. 资源清理:在使用硬件资源(如GPIO引脚)时,要确保在程序结束时进行资源清理,避免影响后续使用。 [2025-06-04 10:38:39 | AI写代码神器 | 677点数解答]

相关提问