Пьезозвук мелодия ардуино для автосигнализации

Я хотел бы воспроизвести звук автосигнализации через зуммер Arduino - что-то вроде этого https://youtu.be/nuPHwijMsIg

Есть ли у кого-нибудь библиотека для такой мелодии?

, 👍0

Обсуждение

зачем вам нужна библиотека? ... arduino имеет возможность генерации тонов, @jsotola


2 ответа


Лучший ответ:

1

Я думаю, что то, о чем вы действительно просите, - это библиотека звуков (в виде кода), а не библиотека кода в обычном смысле. Я бы тоже хотел такую вещь (в частности, лазерный шум в стиле ретро-игр), но тщательный поиск в Google ничего не нашел, хотя кто-то сделал набросок темы Тетриса.

Автомобильная сигнализация, вероятно, довольно проста - пара циклов for изменяет частоту сигнала (); Мой Arduino и пьезозвук находятся дома, но я играю на этом YouTube и использую приложение для анализа спектра на телефоне, которое выглядит так (используя режим отображения водопада):

  • Первый сигнал тревоги зацикливается с 1000 Гц до 2200 Гц примерно на 250 мс, а затем снова падает. - Следующие 2 - это понижающиеся тона, от 1 кГц до примерно 500 в течение 250 или 500 мс.
  • Затем мы получаем повышающийся тон от 500 Гц до 1 кГц в течение 2 секунд
  • Звуковой сигнал с частотой около 2,2 кГц, включение/выключение 250 мс
  • Двухтональная сирена с частотой 1 и 1,5 кГц, по 1 сек. каждая.

Времена и частоты действительно были немного отклонены, и многие изменения частоты не являются линейными, но здесь есть с чем поиграть. Там есть более интересные сигналы тревоги, а также пара лазерных защелок. Прямоугольный привод пьезо (приводящий к интересным гармоникам) и полное отсутствие низкочастотной характеристики (ничего ниже нескольких сотен Гц на той, что у меня здесь) немного ограничивают ситуацию, но она хорошо сравнивается с сиреной Lego, которая у меня есть

int beep_pin=10;
int gap=1000;

void setup() {
  // put your setup code here, to run once:
  pinMode(beep_pin, OUTPUT);
}

void zap1()
{
    for (float f=3000;f>40;f=f*0.93){
    tone(beep_pin,f);
    delay(10);
  }
}

void zap2()
{
    for (float f=3000;f>10;f=f*0.85){
    tone(beep_pin,2*f);
    delay(5);
    tone(beep_pin,f);
    delay(5); 
  }
}
void risefall()
{
  float rise_fall_time=180;
  int steps=50;
  float f_max=2600;
  float f_min=1000;
  float delay_time=rise_fall_time/steps;
  float step_size=(f_max-f_min)/steps;
  for (float f =f_min;f<f_max;f+=step_size){
    tone(beep_pin,f);
    delay(delay_time);
  }
   for (float f =f_max;f>f_min;f-=step_size){
    tone(beep_pin,f);
    delay(delay_time);
  }
}
void fall(float rise_fall_time)
{
  int steps=50;
  float f_max=2000;
  float f_min=500;
  float delay_time=rise_fall_time/steps;
  float step_size=0.97;
  for (float f =f_max;f>f_min;f*=step_size){
    tone(beep_pin,f);
    delay(delay_time);
  }
}
void rise()
{
  float rise_fall_time=2000;
  int steps=100;
  float f_max=1500;
  float f_min=500;
  float delay_time=rise_fall_time/steps;
  float step_size=1.012;
  for (float f =f_min;f<f_max;f*=step_size){
    tone(beep_pin,f);
    delay(delay_time);
  }
  noTone(beep_pin);
  delay(100);
  
}

void twotone()
{
  float f_max=1500;
  float f_min=1000;
  float delay_time=800;
  tone(beep_pin,f_max);
  delay(delay_time);
  tone(beep_pin,f_min);
  delay(delay_time);
  
}
void loop() {
  // put your main code here, to run repeatedly:

 
  for (int count=1;count<=10;count++)
  {
    risefall();
  }
  noTone(beep_pin);
  delay(gap);
  for (int count=1;count<=10;count++)
  {
    fall(300);
  } 
  noTone(beep_pin);
  delay(gap); 
  for (int count=1;count<=5;count++)
  {
    fall(600);
  }
  noTone(beep_pin);
  delay(gap); 
  for (int count=1;count<5;count++)
  {
    rise();
  }
  noTone(beep_pin);
  delay(gap); 
  for (int count=1;count<5;count++)
  {
    twotone();
  }
  noTone(beep_pin);
  delay(gap); 
  for (int count=1;count<10;count++)
  {
    zap1();
  }
  noTone(beep_pin);
  delay(gap); 
  for (int count=1;count<10;count++)
  {
    zap2();
  }
  noTone(beep_pin);
  delay(gap);  
}

Он также есть на GitHubи выпущен в общественное достояние под нелицензией, так что любой может использовать его по своему усмотрению

,

1

https://www.arduino.cc/en/Tutorial/BuiltInExamples/toneMelody Смотрите этот пример, чтобы получить код для каждой музыкальной ноты. Это должно сработать очень хорошо!

,