请帮我解决这个arduino代码。我想添加一个所谓的派对模式,当按下按钮时,它会在短时间内打开和关闭 8 个灯(2 个蓝色、2 个黄色、2 个红色和 2 个白色)。声明端口 5 处的按钮和端口 6 以后的 LED。这是我的代码:
#define trig 2
#define echo 3
#define buzzer 4
long duration = 0;
int distance = 0;
void setup() {
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
pinMode(buzzer, OUTPUT);
Serial.begin(9600);
}
void loop() {
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
duration = pulseIn(echo, HIGH);
distance = 0.017 * duration;
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
if (distance <= 5) {
digitalWrite(buzzer, HIGH);
} else {
digitalWrite(buzzer, LOW);
}
delay(500);
}
让 LED 在我们按下按钮时快速打开和关闭,以及当我们按下按钮让 LED 关闭时。
首先您需要定义按钮和 LED 引脚,您还需要在循环方法中检查按钮按下情况。最后您需要定义什么是“派对模式”。要使用现有代码执行此操作,您可以执行类似以下操作
#define trig 2
#define echo 3
#define buzzer 4
#define button 5
#define blue1 6
#define blue2 7
#define yellow1 8
#define yellow2 9
#define red1 10
#define red2 11
#define white1 12
#define white2 13
long duration = 0;
int distance = 0;
void setup() {
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
pinMode(buzzer, OUTPUT);
pinMode(button, INPUT_PULLUP); // the button
pinMode(blue1, OUTPUT);
pinMode(blue2, OUTPUT);
pinMode(yellow1, OUTPUT);
pinMode(yellow2, OUTPUT);
pinMode(red1, OUTPUT);
pinMode(red2, OUTPUT);
pinMode(white1, OUTPUT);
pinMode(white2, OUTPUT);
Serial.begin(9600);
}
void loop() {
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
duration = pulseIn(echo, HIGH);
distance = 0.017 * duration;
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
if (distance <= 5) {
digitalWrite(buzzer, HIGH);
} else {
digitalWrite(buzzer, LOW);
}
// Check if button is pressed
if (digitalRead(button) == LOW) {
partyMode();
}
delay(500);
}
void partyMode() {
for (int i = 0; i < 5; i++) {
digitalWrite(blue1, HIGH);
digitalWrite(blue2, HIGH);
digitalWrite(yellow1, HIGH);
digitalWrite(yellow2, HIGH);
digitalWrite(red1, HIGH);
digitalWrite(red2, HIGH);
digitalWrite(white1, HIGH);
digitalWrite(white2, HIGH);
delay(100);
digitalWrite(blue1, LOW);
digitalWrite(blue2, LOW);
digitalWrite(yellow1, LOW);
digitalWrite(yellow2, LOW);
digitalWrite(red1, LOW);
digitalWrite(red2, LOW);
digitalWrite(white1, LOW);
digitalWrite(white2, LOW);
delay(100);
}
}
按下按钮时,每 100 毫秒(或 0.1 秒)就会打开和关闭所有 LED。
如果您想要更令人兴奋的“派对模式”,您可以在 LED 序列和计时中加入一些随机性,并作为循环运行。为此,您只需更改
partyMode
方法的行为,例如
void partyMode() {
for (int i = 0; i < 20; i++) {
int randomLed = random(6, 14)
digitalWrite(randomLed, HIGH);
delay(100);
digitalWrite(randomLed, LOW);
delay(random(100, 500));
}
}
“派对模式”到底是什么,取决于你。