Arudion学习——按键用作开关

前言

在arduion的学习过程中,我们可以通过长按或放开按键来实现控制LED灯的亮灭,那我们是否可以把按键当作开关,从而达到实现按一次按键,LED灯亮;再按一次按键,LED灯熄灭的效果呢?在这篇文章中,将会讲解如何实现该功能及其注意事项。

一、目标实现

将按键当作开关使用,从而实现通过开关控制LED灯的亮与灭

二、实验器件

  • 开发板:arduion
  • 红色LED灯: 1 个
  • 10K电阻:1 个
  • 220欧电阻:1 个
  • 按键开关:1 个
  • 面包板:1 个
  • 多彩杜邦线:若干

三、接线

接线原理如下图所示

实验接线如图所示

四、代码程序

在正式写程序前,我们首先要了解一个概念:消抖

我们在按下按键时,难免会出现手抖动或者接触不稳定,但如果不消抖,按键按下的瞬间将会产生成百上千次按键有效的结果,最终的现象不可预料,所以有必要进行消抖。

int Switch = 7;  //定义数字2接口为按键的引脚编号
int LED = 10;    //定义数字5接口为灯泡的引脚编号
int control = 0;//定义一个变量comtral,用于存储按钮的当前状态
void setup()
{
  pinMode(LED, OUTPUT);    //定义LED灯接口为输出接口
  pinMode(Switch, INPUT);  //定义按键接口为输入接口
  Serial.begin(9600);
}

void loop()
{
  if (digitalRead(Switch_1) == HIGH) //按下按钮
  {
    control_1 = !control_1;        //控制灯是否亮起,当control为1时灯泡亮起,为0时灯泡熄灭
    digitalWrite(LED_1, control_1);
    delay(200);                    //通过延时来消抖
  }
}

以下是某位大佬的代码,里面的消抖设置更为有效,可以更有效的实现消抖,大家也可以参考下。

const int buttonPin = 2;    // 定义一个常量buttonPin,其值为2,表示按钮连接的引脚编号。
const int ledPin = 10;      // 定义一个常量ledPin,其值为10,表示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的值,为下一次循环做准备。
}

Gitte源码仓库:https://gitee.com/chen_xy_chen/arduion_c.git

五、最终效果

具体效果视频就不在此展示了,感兴趣的伙伴可以自行接线复制代码进行实验。

  • 13
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Arduino是一种简单易用的微控制器,它可以通过编程实现各种电子设备的控制。其中,按键控制LED灯是一项非常基础和重要的任务。 在这个任务中,我们需要将一个按键连接到Arduino的数字输入端口,并将LED灯连接到数字输出端口。通过编写程序,可以使得按键按下时,控制LED灯的状态发生改变。具体步骤如下: 1.将按键的一端连接到数字输入端口,另一端接地。将LED灯的一端连接到数字输出端口,另一端接地。 2.定义数字输入和输出端口。对于按键,可以使用digitalRead()函数读取数字输入端口的状态。对于LED灯,可以使用digitalWrite()函数设置数字输出端口的状态。 3.编写程序实现按键控制LED灯。可以使用if语句判断按键的状态,如果按键按下,则将LED灯的状态改变。 4.测试程序,观察LED灯的状态是否能够随着按键的状态而改变。 总的来说,按键控制LED灯是一项基本的电子实验任务,通过这个任务可以学习到Arduino的数字输入和输出操作,以及简单的逻辑控制语句。深入掌握这些基础知识,可以进一步实现各种复杂的电子控制系统。 ### 回答2: Arduino是一种基于开源硬件和软件的微控制器平台,可以用于实现各种电子项目,其中包括按键控制LED灯。按键控制LED灯的基本原理是在Arduino板子上设置一个按钮和一个LED灯,当按钮按下时,LED灯亮起,当按钮释放时,LED灯熄灭。 实现这个任务的关键在于如何编写代码。以下是一个基本的代码示例: ``` int ledPin = 13; //定义LED灯的引脚为13 int buttonPin = 2; //定义按键的引脚为2 void setup() { pinMode(ledPin, OUTPUT); //将LED引脚设置为输出 pinMode(buttonPin, INPUT); //将按键引脚设置为输入 } void loop() { int buttonState = digitalRead(buttonPin); //读取按键的状态 if (buttonState == HIGH) { //如果按键被按下 digitalWrite(ledPin, HIGH); //将LED灯引脚输出高电平,即点亮LED灯 } else { //如果按键被释放 digitalWrite(ledPin, LOW); //将LED灯引脚输出低电平,即熄灭LED灯 } } ``` 在上述代码中,首先通过`pinMode()`函数将LED灯引脚和按键引脚设置为输出和输入,然后在`loop()`函数里采用`digitalRead()`函数读取按键的状态,如果按键被按下,通过`digitalWrite()`函数将LED灯引脚输出高电平,点亮LED灯,如果按键被释放,则将LED灯引脚输出低电平,熄灭LED灯。 需要注意的是,如果按键被按下时,由于按钮可能会反弹导致多次触发,因此可以采用延时函数或者添加一个状态变量来消除反弹。同时,如果需要实现多个按键控制多个LED灯,可以使用多个引脚和对应的代码来实现。 总之,通过编写简单的代码,可以轻松地实现按键控制LED灯的功能。 ### 回答3: 在实现arduino按键控制led灯的过程中,需要一些相关的硬件和软件准备。首先,需要准备好一个arduino主板以及一个led灯和一个按钮开关。接着,需要连接按钮开关的一端到ground,另一端连接到arduino主板的数字引脚。最后,需要将led灯连接到arduino主板的数字引脚上。 在软件方面,需要使用arduino IDE进行编程。首先需要定义两个变量,一个表示按钮引脚,一个表示led灯引脚。然后设置这两个引脚的输入和输出模式。接着,在主循环中,通过digitalRead()函数获取按钮引脚的状态。如果按钮被按下,则digitalWrite()函数会将led引脚设置为高电平,从而让led灯点亮。如果按钮没有被按下,则digitalWrite()函数会将led引脚设置为低电平,从而让led灯熄灭。 在代码编写过程中,还需要考虑到防止按钮抖动的问题。这可以通过设置一定的延迟来解决。具体来说,在每次检测到按钮状态改变后,可以等待一小段时间,再进行下一次检测,从而避免因为按钮抖动而产生错误。 总的来说,arduino按键控制led灯是一项比较简单的任务,只需要一些基础的硬件和软件准备,以及一些基本的编程知识和技能即可实现。这项任务可以帮助我们了解如何使用arduino进行硬件控制,并且为我们今后进行更复杂的arduino项目打下基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值