LED灯:3个
按键开关:4个
220欧电阻:7个
面包板:1个
杜邦线:13根
1、将三个发光二极管插在面包板上;
2、用三个电阻将发光二极管的负极分别接到面包板横排有减号的一排插口;
3、用三根杜邦线将红黄绿三个发光二极管的正极分别接到开发板的6、7、8引脚;
4、将四个开关插入面包板;
5、用四个电阻将四个按键的一端接到面包板横排有加号的一排插口;
6、用四根杜邦线将按键与电阻相连的一端分别接到开发板的2、3、4、5引脚;
7、用四根杜邦线将四个按键的另一端接到面包板横排有减号的一排插口;
8、用一根杜邦线将面包板横排有减号的一排插口接到GND接口;
9、用一根杜邦线将面包板横排有加号的一排插口接到5V接口;
int resetpin = 2;//复位按键引脚
int redpin = 3;//红色按键引脚
int yellowpin = 4;
int greenpin = 5;
int redled = 6;//红色led灯引脚
int yellowled = 7;
int greenled = 8;
int color;//判断什么灯亮
void setup(){
pinMode(resetpin,INPUT);
pinMode(redpin,INPUT);
pinMode(yellowpin,INPUT);
pinMode(greenpin,INPUT);
pinMode(redled,OUTPUT);
pinMode(yellowled,OUTPUT);
pinMode(greenled,OUTPUT);
}
void loop(){
color = judgment();//判断哪个按键被按下
switch (color){
case 1:
RED();//红灯亮,其它灯不亮
break;
case 2:
YELLOW();//黄灯亮
break;
case 3:
GREEN();//绿灯亮
break;
default:
LEDCLOSE();//全部灯都不亮
break;
}
}
int judgment(){
if ( digitalRead(redpin) == LOW ){//按下红灯按键,返回1
return 1;
}
else if ( digitalRead(yellowpin) == LOW ){//按下黄灯按键,返回2
return 2;
}
else if ( digitalRead(greenpin) == LOW ){//按下绿灯按键,返回3
return 3;
}
else{//否则返回0
return 0;
}
}
void RED(){
while (1){
if ( digitalRead(resetpin) == LOW ){//如果按下复位键,则灯都不能亮
break;
}
digitalWrite(redled,HIGH);//如果不按下复位键,红灯一直亮
}
LEDCLOSE();
}
void YELLOW(){
while (1){
if ( digitalRead(resetpin) == LOW ){//如果按下复位键,则灯都不能亮
break;
}
digitalWrite(yellowled,HIGH);//如果不按下复位键,黄灯一直亮
}
LEDCLOSE();
}
void GREEN(){
while (1){
if ( digitalRead(resetpin) == LOW ){//如果按下复位键,则灯都不能亮
break;
}
digitalWrite(greenled,HIGH);//如果不按下复位键,绿灯一直亮
}
LEDCLOSE();
}
void LEDCLOSE(){//全部灯都不亮
digitalWrite(redled,LOW);
digitalWrite(yellowled,LOW);
digitalWrite(greenled,LOW);
}
在本次实验中,有一个四脚开关坏了,所以我使用杜邦线模拟四脚开关进行实验。
按下红灯按键后,红灯被点亮,再按其它按键不会点亮其它LED灯。按下复位键后,LED灯熄灭。
按下黄灯按键后,黄灯被点亮,再按其它按键不会点亮其它LED灯。按下复位键后,LED灯熄灭。
按下绿灯按键后,绿灯被点亮,再按其它按键不会点亮其它LED灯。按下复位键后,LED灯熄灭。
【Arduino05】抢答器实验成品演示
在本次实验开始时,我直接连好全部线路进行实验。这就导致了,当出现问题时,我找不到问题出现在哪。所以,我只能重新开始实验,将线路与代码进行分段测试。通过一步步的测试,我发现了问题出现在按键上。使用杜邦线模拟按键开关后,实验不再出现问题。
在进行较复杂的实验时,我们应该分步进行。这样,我们能够及时解决问题,减少排查问题的时间。