如何延迟arduino压电蜂鸣器的声音

如何延迟arduino压电蜂鸣器的声音,arduino,arduino-uno,Arduino,Arduino Uno,我试图用压电蜂鸣器和超声波传感器发出汽车警告声。如果一个物体距离50到30厘米,它会发出1秒的声音,然后尝试关闭声音1秒,但我想不出一种方法来实现这个代码。你能帮助我吗?这是我的密码 #define echoPin 4 #define trigPin 3 #define buzPin 5 void setup() { Serial.begin(9600); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); pinMode(bu

我试图用压电蜂鸣器和超声波传感器发出汽车警告声。如果一个物体距离50到30厘米,它会发出1秒的声音,然后尝试关闭声音1秒,但我想不出一种方法来实现这个代码。你能帮助我吗?这是我的密码

#define echoPin 4
#define trigPin 3
#define buzPin 5

void setup() {
  Serial.begin(9600);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(buzPin, OUTPUT);
}

void loop() {
    digitalWrite(trigPin, LOW);
    digitalWrite(echoPin, LOW);
    delayMicroseconds(2);
    digitalWrite(trigPin, HIGH);
    delayMicroseconds(10);
    digitalWrite(trigPin, LOW);

  unsigned long duration = pulseIn(echoPin, HIGH); 
  float distance = ((float)(340 * duration) / 10000) / 2;  
  
  Serial.print(distance);
  Serial.println("cm");

  if (distance <= 50 && distance > 31)
  {
    tone(buzPin, 391, 1000);
  }

  else if (distance <= 30 && distance > 21)
  {
    tone(buzPin, 391, 500);
  }

  else if (distance <= 20 && distance > 11)
  {
    tone(buzPin, 391, 100);
  }

  else if (distance <= 10)
  {
    tone(buzPin, 391);
  }

  else {
    noTone(buzPin);
  }
}
#定义echoPin 4
#定义trigPin 3
#定义buzPin 5
无效设置(){
Serial.begin(9600);
引脚模式(trigPin,输出);
pinMode(echoPin,输入);
pinMode(buzPin,输出);
}
void循环(){
数字写入(trigPin,低电平);
数字写入(echoPin,低电平);
延迟微秒(2);
数字写入(trigPin,高);
延迟微秒(10);
数字写入(trigPin,低电平);
无符号长持续时间=脉冲信号(echoPin,高);
浮动距离=((浮动)(340*持续时间)/10000)/2;
串行打印(距离);
序列号。打印号(“cm”);
如果(距离31)
{
音调(buzPin,391,1000);
}
否则,如果(距离21)
{
音调(buzPin,391500);
}
否则,如果(距离11)
{
音调(buzPin,391100);
}

否则,如果(距离在每次您告诉arduino开始发出音调(这是tone()命令)后增加一些延迟。要执行此操作,只需按照下面的说明进行操作:

//code
if(statement)
{
    tone(buzPin, 391, 500);
    delay(x); //x=with the delay you want the buzzer to sound in ms
    noTone(buzPin); //after that the sound stops
    delay(y); //y=with the delay you want the buzzer to be silent in ms
}