【Arduino05】抢答器实验

准备器件

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】抢答器实验成品演示

总结

        在本次实验开始时,我直接连好全部线路进行实验。这就导致了,当出现问题时,我找不到问题出现在哪。所以,我只能重新开始实验,将线路与代码进行分段测试。通过一步步的测试,我发现了问题出现在按键上。使用杜邦线模拟按键开关后,实验不再出现问题。

        在进行较复杂的实验时,我们应该分步进行。这样,我们能够及时解决问题,减少排查问题的时间。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值