本站改版新增arduino频道
arduino 控制 GPIO 输入 - 按键实验
// 定义 LED 与 按键引脚 int led_pin = 2; int button_pin = 14; // 定义 LED 逻辑值 int led_logic = 0; // 判断 LED 的状态是否改变过 bool status = false; void setup() { pinMode(led_pin, OUTPUT); pinMode(button_pin, INPUT_PULLDOWN); } void loop() { // 按键消抖 if (digitalRead(button_pin)) { // 睡眠 10ms,如果依然为高电平,说明抖动已消失。 delay(10); if (digitalRead(button_pin) && !status) { led_logic = !led_logic; digitalWrite(led_pin, led_logic); // led 的状态发生了变化,即使我持续按着按键,LED 的状态也不应该改变。 status = !status; }else if (!digitalRead(button_pin)) { status = false; } } } 程序中可以使用宏定义来指定要使用的引脚,而不是写出具体的数字,从而使代码更具可读性:#define LED_PIN 2 #define BUTTON_PIN 14 // 定义 LED 逻辑值 int led_logic = 0; // 判断 LED 的状态是否改变过 bool status = false; void setup() { pinMode(LED_PIN, OUTPUT); pinMode(BUTTON_PIN, INPUT_PULLDOWN); } void loop() { // 按键消抖 if (digitalRead(BUTTON_PIN)) { // 睡眠 10ms,如果依然为高电平,说明抖动已消失。 delay(10); if (digitalRead(BUTTON_PIN) && !status) { led_logic = !led_logic; digitalWrite(LED_PIN, led_logic); // led 的状态发生了变化,即使我持续按着按键,LED 的状态也不应该改变。 status = !status; }else if (!digitalRead(BUTTON_PIN)) { status = false; } } }
Copyright © 2014 ESP56.com All Rights Reserved
晋ICP备14006235号-22 晋公网安备14108102001165号
执行时间: 0.0096390247344971 seconds