Näidis

// Этот скетч использует зуммер для воспроизведения мелодий. // Команда Arduino tone() будет издавать звуки определенной частоты. // Мы создаем функцию, которая сопоставляет символ нотной гаммы // ("До-ре-ми-фа...До") соответствующей частоте из следующей таблицы: // note frequency // c 262 Hz // d 294 Hz // e 330 Hz // f 349 Hz // g 392 Hz // a 440 Hz // b 494 Hz // C 523 Hz 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. }
katse 6. Sumisemise kogemus

Selle koodiga loon väikese klaviatuuri, millel saate mängida mõnda nooti. Nii saate mängida mitut erinevat klaverinooti.
Kasutasin:
10 juhet
3 nuppi
3 takisti
1 buzzer
Arduino
plaat
const int Pin1 = 9; const int Pin2 = 8; const int Pin3 = 7; const int buzzerPin = 13; // Klaverinootide sageduste määramine #define T_C 666 #define T_G 999 #define T_B 333 void setup() { pinMode(Pin1, INPUT); //kaasamine digitalWrite(Pin1,HIGH); pinMode(Pin2, INPUT); digitalWrite(Pin2,HIGH); pinMode(Pin3, INPUT); digitalWrite(Pin3,HIGH); } void loop() { while(digitalRead(Pin1) == LOW) //tagastab sadama oleku { tone(buzzerPin,T_B); } while(digitalRead(Pin2) == LOW) { tone(buzzerPin,T_C); //sagedus } while(digitalRead(Pin3) == LOW) { tone(buzzerPin,T_G); } noTone(buzzerPin); }
Buzzeri kasutatakse pesumasinate, kõrvaklappide, alarmide, kopterite jaoks.