设计一个抢答器,支持4个小组同时抢答,每组分配一个按钮和一个发光二极管。哪个小组先按下各自的按钮谁就取得回答问题的资格,对应的发光二极管点亮,并在一个数码管上显示对应的小组编号(1,2,3,4),此时其他小组再按按钮无效。主持人按开始抢答按钮后进入新一轮的抢答,数码管和发光二极管均熄灭。画出仿真图并写出代码
时间: 2023-06-09 14:06:27 浏览: 139
首先需要用到Arduino UNO板子,连接4个按钮、4个发光二极管和一个数码管,连接方式如下:
按钮1——PIN2
按钮2——PIN3
按钮3——PIN4
按钮4——PIN5
发光二极管1——PIN6
发光二极管2——PIN7
发光二极管3——PIN8
发光二极管4——PIN9
数码管SCLK——PIN10
数码管RCLK——PIN11
数码管DIO——PIN12
代码如下:
#include <TM1637.h>
#define CLK 10
#define DIO 12
TM1637 tm1637(CLK,DIO);
int button1 = 2;
int button2 = 3;
int button3 = 4;
int button4 = 5;
int led1 = 6;
int led2 = 7;
int led3 = 8;
int led4 = 9;
int group = 0;
int flag = 0;
void setup() {
tm1637.init();
tm1637.set(BRIGHT_TYPICAL);
pinMode(button1,INPUT);
pinMode(button2,INPUT);
pinMode(button3,INPUT);
pinMode(button4,INPUT);
pinMode(led1,OUTPUT);
pinMode(led2,OUTPUT);
pinMode(led3,OUTPUT);
pinMode(led4,OUTPUT);
digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
digitalWrite(led3,LOW);
digitalWrite(led4,LOW);
}
void loop() {
if(!flag) {
digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
digitalWrite(led3,LOW);
digitalWrite(led4,LOW);
group = 0;
if(digitalRead(button1) == HIGH) {
group = 1;
flag = 1;
}
if(digitalRead(button2) == HIGH) {
group = 2;
flag = 1;
}
if(digitalRead(button3) == HIGH) {
group = 3;
flag = 1;
}
if(digitalRead(button4) == HIGH) {
group = 4;
flag = 1;
}
if(group) {
tm1637.display(group);
digitalWrite(led1,group==1?HIGH:LOW);
digitalWrite(led2,group==2?HIGH:LOW);
digitalWrite(led3,group==3?HIGH:LOW);
digitalWrite(led4,group==4?HIGH:LOW);
}
} else {
if(!(digitalRead(button1) == HIGH || digitalRead(button2) == HIGH || digitalRead(button3) == HIGH || digitalRead(button4) == HIGH)) {
flag = 0;
delay(500);
tm1637.clearDisplay();
}
}
delay(10);
}
画出仿真图如下:
注:部分模块如发光二极管和数码管暂无法在此处画出,但可以通过文字和线条表示其连接关系。
阅读全文