Ardiuno(二)按钮控制小灯开关

        本文章将教会大家如何使用Arduino使按按钮后对小灯进行开关。

一、目标实现:

        使用Arduino编程,使得按下按钮后小灯可以进行开关。

二、前期准备:

        软件准备:Arduino 18.8

        硬件准备:Arduino开发板,LED灯,220Ω电阻,面包板,杜邦线,2k电阻,按钮。

三、接线:

        如下图

        

四、编写程序:

const int buttonPin = 2;    // 定义一个常量buttonPin,其值为2,表示按钮连接的引脚编号。
const int ledPin = 13;      // 定义一个常量ledPin,其值为13,表示LED灯连接的引脚编号。

int ledState = HIGH;       // 定义一个变量ledState,初始值为HIGH(即1),表示LED灯初始状态为高电平(亮)。
int buttonState = LOW;           // 定义一个变量buttonState,用于存储按钮的当前状态(HIGH或LOW)。
int lastButtonState = LOW; // 定义一个变量lastButtonState,初始值为LOW,用于存储按钮的上一个状态。

unsigned long lastDebounceTime = 0;  // 定义一个无符号长整型变量lastDebounceTime,初始值为0,用于记录上一次按钮状态变化的时间。
unsigned long debounceDelay = 50;    // 定义一个无符号长整型变量debounceDelay,其值为50,表示消抖延迟时间(单位可能是毫秒)。

void setup() {
  pinMode(buttonPin, INPUT);  // 将buttonPin设置为输入模式。
  pinMode(ledPin, OUTPUT);   // 将ledPin设置为输出模式。
  digitalWrite(ledPin, ledState); // 将ledPin设置为ledState的值,即点亮LED灯。
}

void loop() {
  int reading = digitalRead(buttonPin); // 读取buttonPin的值,存储在reading变量中。


  /*消抖是一个重要的概念,特别是在处理物理按钮输入时。因为物理按钮在按下或释放时可能会产生快速的、多次的状态变化(即抖动),如果不进行适当的处理,
    这些抖动可能会被误读为多次按钮操作。通过引入消抖延迟,程序可以等待一段时间,以确保按钮的状态变化是稳定的,然后再进行后续操作。*/
  if (reading != lastButtonState) {//有状态变化
    lastDebounceTime = millis(); // 如果reading和lastButtonState不同,则记录当前时间(毫秒)。1000ms/2000ms
  }

  if ((millis() - lastDebounceTime) > debounceDelay) { // 如果从上一次按钮状态变化到现在的时间超过了消抖延迟时间。

    if (reading != buttonState) { // 如果reading和buttonState不同,说明按钮状态真的发生了变化。
      buttonState = reading;      // 更新buttonState为reading的值。
      if (buttonState == HIGH) { // 如果按钮被按下(即buttonState为HIGH)。
        ledState = !ledState;    // 切换ledState的值,即LED灯的状态。
      }
    }
  }

  digitalWrite(ledPin, ledState); // 根据ledState的值,控制LED灯的亮灭。
  lastButtonState = reading;       // 更新lastButtonState为reading的值,为下一次循环做准备。
}

五、成果展示:

  • 33
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值