У меня есть проблема с этим кодом, когда зуммер не работает

const int buzzerPin = 7;
const int flamePin = 10;
int Flame = HIGH;
int redled = 8;
void setup() 
{
  pinMode(buzzerPin, OUTPUT);
  pinMode(redled, OUTPUT);

  pinMode(flamePin, INPUT);
  Serial.begin(12000);
}

void loop() 
{
  Flame = digitalRead(flamePin);
  if (Flame== HIGH)
  {
    digitalWrite(redled, HIGH);
  int i=0;
  do {
    digitalWrite(buzzerPin, HIGH);
    tone(buzzerPin,450);
    delay(200);
    noTone(buzzerPin);
    delay(200);
    
  }while (i<2);
  } 
  else
  {
    digitalWrite(buzzerPin, LOW);
    digitalWrite(redled, LOW);
  }
}

, 👍2

Обсуждение

проверьте зуммер с помощью самого простого кода, @jsotola

Мы ничего не знаем о вашем зуммере или цепи, так что мало что можем предложить в качестве помощи. Пожалуйста, убедитесь, что при публикации кода он отформатирован как код, чтобы люди могли его прочитать. Также полезно включить то, что *работает*, например, в вашем коде есть другие факторы, которые могут заставить его *казаться*, что зуммер не работает., @Dave Newton

450-это слишком низкая частота для пьезо. использование 3000, @Juraj


1 ответ


1

Вот изменения, которые я сделал

  • Я изменил частоту пьезозуммера на 3000 Гц Зеленая кнопка имитирует сигнал пламени
  • Измените красный светодиод с вывод 8 на вывод 13, чтобы мне не приходилось использовать внешний светодиод

Вот результат моделирования

Наблюдайте, как горит бортовой светодиод и гаснет зуммер. Вы можете найти ссылку на проект здесь, где вы можете протестировать с различной частотой пьезозуммера.

Код

const int buzzerPin = 7;
const int flamePin = 10;
int Flame = HIGH;
int redled = 13;
void setup() 
{
  pinMode(buzzerPin, OUTPUT);
  pinMode(redled, OUTPUT);  

  pinMode(flamePin, INPUT);
  Serial.begin(12000);
}

void loop() 
{
  Flame = digitalRead(flamePin);
  if (Flame== HIGH)
  {
    digitalWrite(redled, HIGH);
  int i=0;
  do {
    digitalWrite(buzzerPin, HIGH);
    tone(buzzerPin,3000);
    delay(200);
    noTone(buzzerPin);
    delay(200);
    
  }while (i<2);
  } 
  else
  {
    digitalWrite(buzzerPin, LOW);
    digitalWrite(redled, LOW);
  }
}

Отказ от ответственности: я не являюсь создателем Wokwi, но я поддерживаю его, так как он с открытым исходным кодом и свободен в использовании

,

@Juraj исправил это, @ArduinoFan

@Juraj Я сомневаюсь в этом. если сигнал пламени высок, он вызывает тревогу, @ArduinoFan