I would like to play car alarm sound through Arduino buzzer - something like this https://youtu.be/nuPHwijMsIg
Does anybody have a library for such melody?
I would like to play car alarm sound through Arduino buzzer - something like this https://youtu.be/nuPHwijMsIg
Does anybody have a library for such melody?
I think what you're really asking for is a library of sounds (in the form of code), rather than a code library in the normal sense. I'd like such a thing too (specifically a retro-gaming style laser noise), but extensive googling hasn't found anything, though someone has made a sketch of the Tetris theme.
A car alarm is probably fairly easy - a couple of for loops changing the frequency of a tone()
; My Arduino and piezo buzzer are at home but playing that YouTube and using a spectrum analyser app on my phone it looks like (using the waterfall display mode):
Times and frequencies were indeed a little off, and many of the frequency ramps aren't linear, but here's something to play with. The more interesting alarms are in there, along with a couple of laser zaps. The square-wave drive of a piezo (leading to interesting harmonics), and the complete lack of a low frequency response (nothing below about a few hundred Hz on the one I have here) limit things a little, but it compares well to a Lego siren I have
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);
}
It's also on GitHub, and released into the public domain under the unlicense so anyone can use it however they like
https://www.arduino.cc/en/Tutorial/BuiltInExamples/toneMelody See this example to get the code for each musical note. It should work very well!