电子说
课程目标
电路搭建
所需材料
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循环常见的用法包括传感器测试、传感器的校准、可变增量等。
全部0条评论
快来发表一下你的评论吧 !