检测四个开关S1~S4的状态,开关S1合上时,数码管显示1,开关S2合上时,数码管显示2,依次轮下去,当开关没有合上或合上的开关多于1个时,数码管均显示0。
时间: 2023-05-18 17:03:09 浏览: 74
这个问题可以通过编写一个简单的程序来解决。以下是一个可能的解决方案:
```
int s1 = 0;
int s2 = 0;
int s3 = 0;
int s4 = 0;
void setup() {
pinMode(2, INPUT_PULLUP); // S1
pinMode(3, INPUT_PULLUP); // S2
pinMode(4, INPUT_PULLUP); // S3
pinMode(5, INPUT_PULLUP); // S4
pinMode(6, OUTPUT); // 数码管的 a 引脚
pinMode(7, OUTPUT); // 数码管的 b 引脚
pinMode(8, OUTPUT); // 数码管的 c 引脚
pinMode(9, OUTPUT); // 数码管的 d 引脚
}
void loop() {
s1 = digitalRead(2);
s2 = digitalRead(3);
s3 = digitalRead(4);
s4 = digitalRead(5);
if (s1 == LOW && s2 == HIGH && s3 == HIGH && s4 == HIGH) {
displayNumber(1);
} else if (s1 == HIGH && s2 == LOW && s3 == HIGH && s4 == HIGH) {
displayNumber(2);
} else if (s1 == HIGH && s2 == HIGH && s3 == LOW && s4 == HIGH) {
displayNumber(3);
} else if (s1 == HIGH && s2 == HIGH && s3 == HIGH && s4 == LOW) {
displayNumber(4);
} else {
displayNumber(0);
}
}
void displayNumber(int number) {
switch (number) {
case 0:
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
break;
case 1:
digitalWrite(6, HIGH);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
break;
case 2:
digitalWrite(6, LOW);
digitalWrite(7, HIGH);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
break;
case 3:
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
break;
case 4:
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, HIGH);
digitalWrite(9, LOW);
break;
case 5:
digitalWrite(6, HIGH);
digitalWrite(7, LOW);
digitalWrite(8, HIGH);
digitalWrite(9, LOW);
break;
case 6:
digitalWrite(6, LOW);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, LOW);
break;
case 7:
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, LOW);
break;
case 8:
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, HIGH);
break;
case 9:
digitalWrite(6, HIGH);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, HIGH);
break;
}
}
```
这个程序使用了 Arduino 板子上的数字输入和数字输出引脚,以及一个简单的 switch 语句来控制数码管的显示。当 S1~S4 中有一个合上时,程序会根据合上的开关来显示相应的数字,如果没有开关合上或者有多个开关合上,数码管会显示 0。
阅读全文