倒计时抢答器电路设计带蜂鸣器的代码
时间: 2023-07-09 15:53:03 浏览: 154
教你设计蜂鸣器电路
以下是一个基于Arduino的倒计时抢答器电路设计带蜂鸣器的代码:
```C++
// 定义引脚
const int buttonPin = 2; // 抢答按钮引脚
const int ledPin = 13; // 状态指示灯引脚
const int buzzerPin = 9; // 蜂鸣器引脚
// 定义变量
int buttonState = 0; // 抢答按钮状态
int lastButtonState = 0; // 上一次的抢答按钮状态
int countdown = 10; // 倒计时时间
bool gameStarted = false; // 游戏是否开始
bool buzzerOn = false; // 蜂鸣器是否响
// 初始化函数
void setup() {
pinMode(buttonPin, INPUT_PULLUP);
pinMode(ledPin, OUTPUT);
pinMode(buzzerPin, OUTPUT);
digitalWrite(ledPin, HIGH); // 熄灭指示灯
Serial.begin(9600); // 启动串口
}
// 主循环函数
void loop() {
if (!gameStarted) {
// 游戏未开始,等待抢答
buttonState = digitalRead(buttonPin);
if (buttonState != lastButtonState) {
// 抢答按钮状态有变化
if (buttonState == LOW) {
// 抢答按钮被按下
gameStarted = true;
digitalWrite(ledPin, LOW); // 点亮指示灯
Serial.println("Game started!");
tone(buzzerPin, 1000); // 播放蜂鸣器声音
buzzerOn = true;
}
}
lastButtonState = buttonState;
} else {
// 游戏已经开始,倒计时
if (countdown > 0) {
countdown--;
Serial.println(countdown);
delay(1000);
} else {
// 倒计时结束
digitalWrite(ledPin, HIGH); // 熄灭指示灯
noTone(buzzerPin); // 停止蜂鸣器声音
buzzerOn = false;
Serial.println("Game over!");
gameStarted = false;
countdown = 10;
}
}
if (buzzerOn) {
// 蜂鸣器正在响,每隔250毫秒改变一次状态
delay(250);
digitalWrite(buzzerPin, !digitalRead(buzzerPin));
}
}
```
此代码包含了一个倒计时器,当抢答按钮被按下后,会开始倒计时。在倒计时过程中,状态指示灯会点亮,并且蜂鸣器会发出声音。当倒计时结束后,指示灯会熄灭,蜂鸣器停止发声,并且游戏重新开始。
阅读全文