本站改版新增arduino频道

Micropython
Arduino

arduino 控制 GPIO 输入 - 按键实验


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