katse 6
buzzer on heliseade, mis suudab helisignaale helisignaalideks muuta. Tavaliselt töötab see alalispingega. Seda kasutatakse laialdaselt alarmides, arvutites, printerites ja muudes elektroonikatoodetes heliseadmetena.
kasutasin:
- buzzer
- arduino plaat
- juhtmed
- arduino uno
kood:
const int buzzerPin = 9;
// Мы создали массив с нотами, которые хотим воспроизвести, измените эти значения, чтобы создать свои мелодии!
// Длина должна равняться общему количеству нот и пауз
const int songLength = 18;
// Обозначение нот представляет собой массив из текстовых символов,
// соответствующим нотам в песне. Пробел означает паузу (пустую ноту)
char notes[] = "cdfda ag cdfdg gf "; // пробелы означают паузы
// Ритм задается массивом из длительности нот и пауз между ними.
// "1" - четвертная нота, "2" - половинная, и т.д.
// Не забывайте, что пробелы должны быть тоже определенной длинны.
int beats[] = {1,1,1,1,1,1,4,4,2,1,1,1,1,1,1,4,4,2};
// "tempo" это скорость проигрывания мелодии.
// Для того, чтобы мелодия проигрывалась быстрее, вы
// должны уменьшить следующее значение.
int tempo = 150;
void setup()
{
pinMode(buzzerPin, OUTPUT);
}
void loop()
{
int i, duration;
for (i = 0; i < songLength; i++) // пошаговое воспроизведение из массива
{
duration = beats[i] * tempo; // длительность нот/пауз в ms
if (notes[i] == ' ') // если нота отсутствует?
{
delay(duration); // тогда не большая пауза
}
else // в противном случае играть
{
tone(buzzerPin, frequency(notes[i]), duration);
delay(duration); // ждать пока проигрывается
}
delay(tempo/10); // маленькая пауза между нотами
}
// Мы хотим, чтобы мелодия проиграла всего один раз, так что здесь остановимся окончательно:
while(true){}
// Если же вы хотите, чтобы мелодия играть снова и снова, Удалить вышеуказанное заявление
}
int frequency(char note)
{
// Эта функция принимает символ ноты (a-g), и возвращает
// частоту в Гц для функции tone().
int i;
const int numNotes = 8; // количество хранимых нот
char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' };
int frequencies[] = {262, 294, 330, 349, 392, 440, 494, 523};
// Теперь мы будем искать во всем массиве, символ ноты и если находим, возвращаем частоту для этой ноты.
for (i = 0; i < numNotes; i++) // пошаговый перебор нот
{
if (names[i] == note) // если находим
{
return(frequencies[i]); // возвращаем частоту
}
}
return(0); // Поиск символа не дал результата? Но, необходимо вернуть какое-то значение, так вернем 0.
}
skeem:

ülesanne:
kood:
const int buzzerPin = 9;
int Sensorpin = A0;
int sensorValue = 0;
int Value_new;
// Мы создали массив с нотами, которые хотим воспроизвести, измените эти значения, чтобы создать свои мелодии!
// Длина должна равняться общему количеству нот и пауз
const int songLength = 18;
// Обозначение нот представляет собой массив из текстовых символов,
// соответствующим нотам в песне. Пробел означает паузу (пустую ноту)
char notes[] = "cdfda ag cdfdg gf "; // пробелы означают паузы
char notes1[] = "ccc dfg ccc dfg cc";
char notes2[] = "gg a gg a gg ccc dfg";
char notes3[] = "dc dcgd fcd fg cdcdcg";
char notes4[] = "fgdcdg dgd cdgff gdc";
// Ритм задается массивом из длительности нот и пауз между ними.
// "1" - четвертная нота, "2" - половинная, и т.д.
// Не забывайте, что пробелы должны быть тоже определенной длинны.
int beats[] = {1,1,1,1,1,1,4,4,2,1,1,1,1,1,1,4,4,2};
int beats1[] = {1,1,1,2,3,1,1,1,2,3,1,1,1,2,3,2,3};
int beats2[] = {4,4,3,4,4,3,4,4,1,1,1,2,3,4,4,1,2};
int beats3[] = {2,1,2,1,4,3,5,1,2,3,5,1,2,1,2,1,4};
int beats4[] = {3,5,6,1,2,4,2,5,6,1,2,4,5,2,4,2,1};
// "tempo" это скорость проигрывания мелодии.
// Для того, чтобы мелодия проигрывалась быстрее, вы
// должны уменьшить следующее значение.
int tempo = 150;
bool stop0 = true;
bool stop1 = true;
bool stop2 = true;
bool stop3 = true;
bool stop4 = true;
void setup()
{
pinMode(buzzerPin, OUTPUT);
Serial.begin(9600);
}
void loop()
{
// music();
Value_new = analogRead(Sensorpin);
Value_new=map(Value_new,0,1023,1,6);
if (Value_new==1)
{
stop0 = false;
stop1 = true;
stop2 = true;
stop3 = true;
stop4 = true;
music();
}
else if (Value_new ==2)
{
stop0 = true;
stop1 = false;
stop2 = true;
stop3 = true;
stop4 = true;
music1();
}
else if (Value_new ==3)
{
stop0 = true;
stop1 = true;
stop2 = false;
stop3 = true;
stop4 = true;
music2();
}
else if (Value_new ==4)
{
stop0 = true;
stop1 = true;
stop2 = true;
stop3 = false;
stop4 = true;
music3();
}
else if (Value_new ==5)
{
stop0 = true;
stop1 = true;
stop2 = true;
stop3 = true;
stop4 = false;
music4();
}
}
void music()
{
int i, duration;
for (i = 0; i < songLength; i++) // пошаговое воспроизведение из массива
{
if (stop0)
break;
duration = beats[i] * tempo; // длительность нот/пауз в ms
if (notes[i] == ' ') // если нота отсутствует?
{
delay(duration); // тогда не большая пауза
}
else // в противном случае играть
{
tone(buzzerPin, frequency(notes[i]), duration);
delay(duration); // ждать пока проигрывается
}
delay(tempo/10); // маленькая пауза между нотами
}
// Мы хотим, чтобы мелодия проиграла всего один раз, так что здесь остановимся окончательно:
while(stop0){}
// Если же вы хотите, чтобы мелодия играть снова и снова, Удалить вышеуказанное заявление
}
int frequency(char note)
{
// Эта функция принимает символ ноты (a-g), и возвращает
// частоту в Гц для функции tone().
int i;
const int numNotes = 8; // количество хранимых нот
char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' };
int frequencies[] = {262, 294, 330, 349, 392, 440, 494, 523};
// Теперь мы будем искать во всем массиве, символ ноты и если находим, возвращаем частоту для этой ноты.
for (i = 0; i < numNotes; i++) // пошаговый перебор нот
{
if (names[i] == note) // если находим
{
return(frequencies[i]); // возвращаем частоту
}
}
return(0); // Поиск символа не дал результата? Но, необходимо вернуть какое-то значение, так вернем 0.
}
void music1()
{
int i, duration;
for (i = 0; i < songLength; i++) // пошаговое воспроизведение из массива
{
if (stop1)
break;
duration = beats1[i] * tempo; // длительность нот/пауз в ms
if (notes1[i] == ' ') // если нота отсутствует?
{
delay(duration); // тогда не большая пауза
}
else // в противном случае играть
{
tone(buzzerPin, frequency(notes1[i]), duration);
delay(duration); // ждать пока проигрывается
}
delay(tempo/10); // маленькая пауза между нотами
}
// Мы хотим, чтобы мелодия проиграла всего один раз, так что здесь остановимся окончательно:
while(stop1){}
// Если же вы хотите, чтобы мелодия играть снова и снова, Удалить вышеуказанное заявление
}
int frequency1(char note1)
{
// Эта функция принимает символ ноты (a-g), и возвращает
// частоту в Гц для функции tone().
int i;
const int numNotes = 8; // количество хранимых нот
char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' };
int frequencies[] = {262, 294, 330, 349, 392, 440, 494, 523};
// Теперь мы будем искать во всем массиве, символ ноты и если находим, возвращаем частоту для этой ноты.
for (i = 0; i < numNotes; i++) // пошаговый перебор нот
{
if (names[i] == note1) // если находим
{
return(frequencies[i]); // возвращаем частоту
}
}
return(0);
}
void music2()
{
int i, duration;
for (i = 0; i < songLength; i++) // пошаговое воспроизведение из массива
{
if (stop2)
break;
duration = beats2[i] * tempo; // длительность нот/пауз в ms
if (notes2[i] == ' ') // если нота отсутствует?
{
delay(duration); // тогда не большая пауза
}
else // в противном случае играть
{
tone(buzzerPin, frequency2(notes2[i]), duration);
delay(duration); // ждать пока проигрывается
}
delay(tempo/10); // маленькая пауза между нотами
}
// Мы хотим, чтобы мелодия проиграла всего один раз, так что здесь остановимся окончательно:
while(stop2){}
// Если же вы хотите, чтобы мелодия играть снова и снова, Удалить вышеуказанное заявление
}
int frequency2(char note2)
{
// Эта функция принимает символ ноты (a-g), и возвращает
// частоту в Гц для функции tone().
int i;
const int numNotes = 8; // количество хранимых нот
char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' };
int frequencies[] = {262, 294, 330, 349, 392, 440, 494, 523};
// Теперь мы будем искать во всем массиве, символ ноты и если находим, возвращаем частоту для этой ноты.
for (i = 0; i < numNotes; i++) // пошаговый перебор нот
{
if (names[i] == note2) // если находим
{
return(frequencies[i]); // возвращаем частоту
}
}
return(0);
}
void music3()
{
int i, duration;
for (i = 0; i < songLength; i++) // пошаговое воспроизведение из массива
{
if (stop3)
break;
duration = beats3[i] * tempo; // длительность нот/пауз в ms
if (notes3[i] == ' ') // если нота отсутствует?
{
delay(duration); // тогда не большая пауза
}
else // в противном случае играть
{
tone(buzzerPin, frequency3(notes3[i]), duration);
delay(duration); // ждать пока проигрывается
}
delay(tempo/10); // маленькая пауза между нотами
}
// Мы хотим, чтобы мелодия проиграла всего один раз, так что здесь остановимся окончательно:
while(stop3){}
// Если же вы хотите, чтобы мелодия играть снова и снова, Удалить вышеуказанное заявление
}
int frequency3(char note3)
{
// Эта функция принимает символ ноты (a-g), и возвращает
// частоту в Гц для функции tone().
int i;
const int numNotes = 8; // количество хранимых нот
char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' };
int frequencies[] = {262, 294, 330, 349, 392, 440, 494, 523};
// Теперь мы будем искать во всем массиве, символ ноты и если находим, возвращаем частоту для этой ноты.
for (i = 0; i < numNotes; i++) // пошаговый перебор нот
{
if (names[i] == note3) // если находим
{
return(frequencies[i]); // возвращаем частоту
}
}
return(0);
}
void music4()
{
int i, duration;
for (i = 0; i < songLength; i++) // пошаговое воспроизведение из массива
{
if (stop4)
break;
duration = beats4[i] * tempo; // длительность нот/пауз в ms
if (notes4[i] == ' ') // если нота отсутствует?
{
delay(duration); // тогда не большая пауза
}
else // в противном случае играть
{
tone(buzzerPin, frequency4(notes4[i]), duration);
delay(duration); // ждать пока проигрывается
}
delay(tempo/10); // маленькая пауза между нотами
}
// Мы хотим, чтобы мелодия проиграла всего один раз, так что здесь остановимся окончательно:
while(stop4){}
// Если же вы хотите, чтобы мелодия играть снова и снова, Удалить вышеуказанное заявление
}
int frequency4(char note4)
{
// Эта функция принимает символ ноты (a-g), и возвращает
// частоту в Гц для функции tone().
int i;
const int numNotes = 8; // количество хранимых нот
char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' };
int frequencies[] = {262, 294, 330, 349, 392, 440, 494, 523};
// Теперь мы будем искать во всем массиве, символ ноты и если находим, возвращаем частоту для этой ноты.
for (i = 0; i < numNotes; i++) // пошаговый перебор нот
{
if (names[i] == note4) // если находим
{
return(frequencies[i]); // возвращаем частоту
}
}
return(0);
}
video:
