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: