Arduino代码问题(多个LED灯)

问题描述 投票:0回答:1

请帮我解决这个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 关闭时。

arduino arduino-uno
1个回答
0
投票

首先您需要定义按钮和 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));
  }
}

“派对模式”到底是什么,取决于你。

© www.soinside.com 2019 - 2024. All rights reserved.