Создание мелодии с использованием функции tone()

Аватара
Автор темы
Arduino
Рядовой
Рядовой
Сообщения: 7
Зарегистрирован: 19 апреля 2017
Репутация: 1
С нами: 8 месяцев 28 дней

Создание мелодии с использованием функции tone()

Сообщение #1 Arduino » 11 октября 2017, 19:40

Этот пример показывает, как использовать команду tone () для создания звуковых эффектов. Она воспроизводит некоторые мелодии, которые вы могли слышать раньше.

Требования к аппаратному обеспечению:

Arduino плата
маленький динамик с сопротивлением 8 Ом
резистор 100 Ом резистор
соединительные провода

Подключение


Создание мелодии с использованием функции tone().png
Создание мелодии с использованием функции tone()
Создание мелодии с использованием функции tone().png (15.07 КБ) 68 просмотров


Подключите один контакт динамика к цифровому выводу 8 через резистор 100 Ом. Подключите другой контакт на землю.

Схема


Создание мелодии с использованием функции tone()2.png
Создание мелодии с использованием функции tone()
Создание мелодии с использованием функции tone()2.png (26.95 КБ) 68 просмотров


Код


Приведенный ниже код использует дополнительный файл, pitches.h. Этот файл содержит все значения шага для простых звуков. Например, NOTE_C4 является нотой Си. NOTE_FS 4, фа-диез, и так далее. Эта таблица нот была первоначально написана Бреттом Хагманом, на чьей работе команда tone () была основана. Она может быть полезна, когда вы хотите сделать музыкальные эффекты.

Основная программа выглядит следующим образом:


Код: Выделить всё

#include «pitches.h»

 
// ноты в мелодии:

int melody[] = {

NOTE_C4NOTE_G3,NOTE_G3NOTE_A3NOTE_G3,0NOTE_B3NOTE_C4};

 
// продолжительность ноты: 4 = четверть ноты, 8 = восьмая часть, и т.д.:

int noteDurations[] = {

4884,4,4,4,};

 

void setup () {
//перебор нот мелодии:

for (int thisNote 0thisNote 8thisNote++) {

 
// для расчета продолжительности мелодии взята одна секунда
//разделенная на тип ноты.
//e.g. четверть ноты= 1000 / 4, восьмая часть = 1000/8, etc.
int noteDuration 1000/noteDurations[thisNote];

tone (8melody[thisNote],noteDuration);

 
//чтоб разделить ноты установим минимальную паузу между ними.
// длительност ноты + 30% вполне подойдет:

int pauseBetweenNotes noteDuration 1.30;
delay (pauseBetweenNotes);

// stop the tone playing:

noTone (8);

}

}

void loop () {
// не нужно повторять мелодию.


! ! !


  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Программирование»

Кто сейчас на форуме

Сейчас этот раздел просматривают: 1 гость

Яндекс.Метрика
:: Часовой пояс: UTC+03:00