Arduino篇—按键中的秘密

电子说

1.2w人已加入

描述

课程目标

  • 布尔类型的概念与应用
  • 求余的灵活应用
  • while循环的应用

电路搭建

所需材料

ArduinoUno * 1
任意颜色LED * 1
按键模块 * 2
杜邦线若干

程序编写

练习一:两个按键控制开关灯

按键1按下时,LED灯开,按键2按下时,LED灯关。

电路连接:

按键控制

图形化方式:

按键控制

代码方式:

/* 项目名称:双按键控制开关灯
 * 项目时间:2022.02.25
 * 项目作者:MRX
 */
const int switch1_Pin = 3;
const int switch2_Pin = 8;
const int led_Pin = 7;
bool switch1 = LOW;
bool switch2 = LOW;
void setup() {
  pinMode(switch1_Pin,INPUT);
  pinMode(switch2_Pin,INPUT);
  pinMode(led_Pin,OUTPUT);
}
void loop() {
  switch1 = digitalRead(switch1_Pin);
  switch2 = digitalRead(switch2_Pin);
  if (switch1 == HIGH) {
    digitalWrite(led_Pin,HIGH);
  }
  if (switch2 == HIGH) {
    digitalWrite(led_Pin,LOW);
  }
}

**布尔变量:**当我们需要记录一些只有两种状态的事情时,比如开或者关,冷或者热。布尔变量是最佳的记录方式,因为布尔变量只有两个值,0(false,假,低)或者1(true,真,高)。

*练习二:单按键开关灯

在学习第八课按键控制的时候,我们布置了一个课后练习,要求使用单个按键实现按一下开灯,再按一下关灯的功能。这里我们就来讲解一下。

电路连接:

按键控制

图形化方式:

按键控制

代码方式:

/* 项目名称:单按键控制开关灯
 * 项目时间:2022.02.25
 * 项目作者:MRX
 */
const int switch_Pin = 3;
const int led_Pin = 7;
bool switch_value = LOW;
void setup() {
  pinMode(switch_Pin,INPUT);
  pinMode(led_Pin,OUTPUT);
}
void loop() {
  if(digitalRead(switch_Pin)){
    switch_value = !switch_value;
    delay(500);
  }
  if (switch_value == HIGH) {
    digitalWrite(led_Pin,HIGH);


  }
  if (switch_value == LOW) {
    digitalWrite(led_Pin,LOW);
  }
}

练习三:单按键多功能灯

制作一个单按键控制的多功能灯,要求按一下微亮,再按一下最亮,按第三下灭,长按住开关闪烁,松开开关熄灭。

电路连接:

按键控制

图形化方式:

按键控制

代码方式:

/* 项目名称:单按键多功能灯
 * 项目时间:2022.02.25
 * 项目作者:MRX
 */
const int switch_Pin = 3;
const int led_Pin = 6;
int switch_value = 0;
void setup() {
  pinMode(switch_Pin,INPUT);
  pinMode(led_Pin,OUTPUT);
}
void loop() {
  if(digitalRead(switch_Pin)){
    delay(500);
    switch_value = (switch_value + 1) % 3;
    if (switch_value == 1) {
      analogWrite(led_Pin,120);
    }
    if (switch_value == 2) {
      analogWrite(led_Pin,255);
    }
    if (switch_value == 0) {
      analogWrite(led_Pin,0);
    }
    while (digitalRead(switch_Pin)) {
      digitalWrite(led_Pin,HIGH);
      delay(100);
      digitalWrite(led_Pin,LOW);
      delay(100);
      switch_value = 0;
    }
  }
}

while循环: while循环将会连续、无限循环,直到括号()内的表达式变为false。必须用一些东西改变被测试的变量,否则while循环永远不会退出。Arduino中while循环常见的用法包括传感器测试、传感器的校准、可变增量等。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分