Использование зуммера Ардуино




 

 

Цели работы:

1. Получить практические навыки по программированию на Си для Arduino.

2. Научится считывать значение цифровых входов и устанавливать состояние выходов

3. Использование зуммера в качестве звуковой индикации

 

Теоретическая часть:

 

Наряду со световой индикацией, часто используют и другой метод ­ звуковую индикацию. Иными словами, электронное устройство или робот, может привлечь внимание человека, и сообщить о своем состоянии не только светом, но и звуком.

Обычно, для звуковой индикации используется специальный прибор, называемый зуммером. В отличие от всем известного динамика, зуммер представляет собой узкоспециализированное устройство, призванное генерировать звуковую волну определенной частоты. В основе работы большинства зуммеров лежит пьезоэлектрический эффект, поэтому такие приборы называются пьезоэлектрическими звукоизлучателями (см. рисунок).

 

Зуммер имеет всего два вывода, которые необходимо соединить с источником питания для получения чистого монотонного звука.

 

Функция для работы со звуком

 

В простейшем случае, для того чтобы заставить зуммер издавать звук, достаточно установить на соответствующем контакте высокий уровень сигнала. Именно этот вариант и будет использован в двух первых заданиях. Но чтобы получить разные тона (разные частоты звука), необходимо воспользоваться специальной функцией tone, которая позволяет изменять частоту звучания зуммера.

Функция имеет вид:

 

tone(номер_контакта, частота_звука, длительность);

 

Аргумент частота_звука задает частоту звучания в Герцах. Аргумент длительность, как и в случае функции delay, указывается в миллисекундах.

 


 

Практическая часть

 

Звуковой код

 

Результат работы

После запуска программы, зуммер выдает три последовательных сигнала, длительностью 1 сек и периодом ­ 2 сек.

 

Используемые компоненты:

 

­ плата Arduino;

­ макетная плата;

­ перемычки;

­ зуммер.

 

Схема сборки:

 

 

 

Шесть основных правил нотописи:

Одному нотному символу по системе Брайля должен соответствовать только один буквенный символ:

1. Для отображения нот необходимо использовать буквы латинского алфавита, цифры и некоторые дополнительные символы (регистр букв имеет значение).

2. Если нотный символ по системе Брайля имеет аналог в буквенной записи, то записывать его необходимо именно этой буквой в малом регистре. Так, до половинная обозначается маленькой латинской n, половинная пауза - маленькой латинской u, целая пауза - маленькой латинской m и так далее.

3. Если нотный символ по системе Брайля не имеет буквенного аналога, то следует поступить так:
- поменяйте в этом символе вертикальные столбцы местами, то есть первую, вторую, третью точки с четвёртой, пятой и шестой соответственно;
- если результат имеет буквенный аналог, то исходный нотный символ по системе Брайля необходимо записать этой буквой в большом регистре.
Таким образом, до четвертная запишется большой латинской P, диез - большой латинской M, знак цифры - большой латинской V, знак большой октавы - большой латинской B, знак малой октавы - большой латинской L и так далее.
В связи с этим рекомендую настроить ваш Jaws так, чтобы он реагировал на большой регистр, например, воспроизведением звукового сигнала. Если это сделать средствами Jaws по какой-то причине нельзя, то произведите соответствующие настройки в самой программе MIDIM.
В качестве примера запишем ниже гамму до мажор четвертными длительностями:
PSNQTOwP
(до, ре, ми, фа, соль, ля, си, до)

4. Если нотный символ по системе Брайля представляет собой сниженную цифру, то его необходимо записывать именно этой цифрой.
Например, квинту надо записать цифрой 9, сексту - цифрой 0, септиму - цифрой 3 и так далее.

5. Если нотный символ по системе Брайля не подпадает ни под одно из выше перечисленных правил, то такой символ является исключением.
Ниже перечислю все эти символы и как их нужно писать:
интервал "октава" _
интервал "секунда" /
бекар \
знак слова)
бемоль (
объединитель ()
си целая ]
соль целая [
знак первой октавы!
знак третьей октавы @
знак четвёртой октавы,
знак пятой октавы,,
точка после ноты.
две точки после ноты..
три точки после ноты...
Теперь запишем всё ту же гамму до мажор в первой октаве, разными длительностями, с указанием размера (четыре четверти) и разобьём нотный текст на такты:
Vd4!PSp * rs t.P

6. Ещё символы, которые понимает MIDIM:
уточнитель для целой, половинной, четвертной и восьмой длительностей!la
уточнитель для остальных длительностей!lb
лига держания для ноты Ac
лига держания для аккорда Kc
штрих легаттоc
удвоенное легатто cc
штрих стакатто 8
удвоенное стакатто 88
штрих стакаттисимо!8
удвоенное стакаттисимо!8!8
триоль 2
второй способ записи триоли Kl3.
квартоль Kl4.
секстоль Kl6.
септоль Kl7.
и так далее, в том же роде...

7. Один нотный символ по системе НСБ можно записать только по одному из перечисленных правил.

 

 


Задание 1. Пищалка

 

Программный код:

 

int buzz = 2;

int k = 0;

void setup()

{

pinMode(buzz, OUTPUT); // установка 2­го контакта в режим вывода

}

void loop()

{

for(k=0; k<3; k=k+1) { // цикл из трех итераций

digitalWrite(buzz, HIGH); // перевод вывода №2 в активное состояние

delay(1000); // пауза 1­секунда

digitalWrite(buzz, LOW); // перевод вывода №2 в неактивное состояние

delay(1000); // пауза 1­секунда

}

}

 

Задание 2. Сигнал SOS (самостоятельно)

Результат работы

После запуска программы, зуммер выдает три коротких сигнала (0.5 сек), затем три длинных (1 сек), и, наконец, снова три коротких.

 

Задание 3. Перебор нот

Результат работы

После запуска программы, зуммер начинает беспрерывно ноты, заданные последовательностью:

Используемые компоненты и схема идентичны первому заданию

Программа

int buzz = 2;

// ноты

#define NOTE_C6 1047

#define NOTE_D6 1175

#define NOTE_E6 1319

#define NOTE_F6 1397

#define NOTE_G6 1568

#define NOTE_A6 1760

#define NOTE_B6 1976

#define NOTE_C7 2093

void setup() {

pinMode(buzz, OUTPUT); // установка 2­го контакта в режим вывода

}

void loop() {

tone(buzz, NOTE_C6, 500);

delay(500);

tone(buzz, NOTE_D6, 500);

delay(500);

tone(buzz, NOTE_E6, 500);

delay(500);

tone(buzz, NOTE_F6, 500);

delay(500);

tone(buzz, NOTE_G6, 500);

delay(500);

tone(buzz, NOTE_A6, 500);

delay(500);

tone(buzz, NOTE_B6, 500);

delay(500);

tone(buzz, NOTE_C7, 500);

delay(500);

}

 

Задание 4. Мелодия песни

Результат работы

После запуска программы, зуммер начинает беспрерывно играть мелодию, заданную набором нот. Можно взять любой пример.

 

Пример 1 (В лесу родилась ёлочка):

// В лесу родилась елочка
#include "pitches.h"
int biz=11;

int melody[] = {
NOTE_C4, NOTE_A4, NOTE_A4, NOTE_G4,
NOTE_A4, NOTE_F4, NOTE_C4, NOTE_C4,
NOTE_C4, NOTE_A4, NOTE_A4, NOTE_AS4,
NOTE_G4, NOTE_C5, NOTE_C5, NOTE_D4,
NOTE_D4, NOTE_AS4,NOTE_AS4,NOTE_A4,
NOTE_G4, NOTE_F4, NOTE_C4, NOTE_A4,
NOTE_A4, NOTE_G4, NOTE_A4, NOTE_F4
};

int Durations[] = {4,4,4,4,4,4,4,4,4,4,
4,4,4,2,4,4,4,4,4,4,4,4,4,4,4,4,4,2};

void setup(){}

void loop() {
for(int i=0;i<2;i++){
for (int Note = 0; Note < 28; Note++) {
int Duration = 1000/Durations[Note];
tone(biz, melody[Note],Duration);

int pauseNotes = Duration * 1.30;
delay(pauseNotes);
noTone(biz); }
delay(200);}
delay(6000);
}

 

Пример 2

 

int tonePin = 11;// пин пищалки

 

void setup()

{

}

void midi()

{
tone(tonePin, 174, 249.99975);
delay(277.7775);
tone(tonePin, 233, 499.9995);
delay(555.555);
tone(tonePin, 174, 374.999625);
delay(416.66625);
tone(tonePin, 195, 124.999875);
delay(138.88875);
tone(tonePin, 220, 499.9995);
delay(555.555);
tone(tonePin, 146, 249.99975);
delay(277.7775);
tone(tonePin, 146, 249.99975);
delay(277.7775);
tone(tonePin, 195, 499.9995);
delay(555.555);
tone(tonePin, 174, 374.999625);
delay(416.66625);
tone(tonePin, 155, 124.999875);
delay(138.88875);
tone(tonePin, 174, 499.9995);
delay(555.555);
tone(tonePin, 116, 249.99975);
delay(277.7775);
tone(tonePin, 116, 249.99975);
delay(277.7775);
tone(tonePin, 130, 499.9995);
delay(555.555);
tone(tonePin, 130, 374.999625);
delay(416.66625);
tone(tonePin, 146, 124.999875);
delay(138.88875);
tone(tonePin, 155, 499.9995);
delay(555.555);
tone(tonePin, 155, 374.999625);
delay(416.66625);
tone(tonePin, 174, 124.999875);
delay(138.88875);
tone(tonePin, 195, 499.9995);
delay(555.555);
tone(tonePin, 220, 374.999625);
delay(416.66625);
tone(tonePin, 233, 124.999875);
delay(138.88875);
tone(tonePin, 261, 749.99925);
delay(833.3325);
tone(tonePin, 174, 249.99975);
delay(277.7775);
tone(tonePin, 293, 499.9995);
delay(555.555);
tone(tonePin, 261, 374.999625);
delay(416.66625);
tone(tonePin, 233, 124.999875);
delay(138.88875);
tone(tonePin, 261, 499.9995);
delay(555.555);
tone(tonePin, 174, 249.99975);
delay(277.7775);
tone(tonePin, 174, 249.99975);
delay(277.7775);
tone(tonePin, 233, 499.9995);
delay(555.555);
tone(tonePin, 220, 374.999625);
delay(416.66625);
tone(tonePin, 195, 124.999875);
delay(138.88875);
tone(tonePin, 220, 499.9995);
delay(555.555);
tone(tonePin, 146, 374.999625);
delay(416.66625);
tone(tonePin, 146, 124.999875);
delay(138.88875);
tone(tonePin, 195, 499.9995);
delay(555.555);
tone(tonePin, 174, 374.999625);
delay(416.66625);
tone(tonePin, 155, 124.999875);
delay(138.88875);
tone(tonePin, 174, 499.9995);
delay(555.555);
tone(tonePin, 116, 374.999625);
delay(416.66625);
tone(tonePin, 116, 124.999875);
delay(138.88875);
tone(tonePin, 233, 499.9995);
delay(555.555);
tone(tonePin, 220, 374.999625);
delay(416.66625);
tone(tonePin, 195, 124.999875);
delay(138.88875);
tone(tonePin, 174, 999.999);
delay(1111.11);
tone(tonePin, 293, 999.999);
delay(1111.11);
tone(tonePin, 261, 249.99975);
delay(277.7775);
tone(tonePin, 233, 249.99975);
delay(277.7775);
tone(tonePin, 220, 249.99975);
delay(277.7775);
tone(tonePin, 233, 249.99975);
delay(277.7775);
tone(tonePin, 261, 749.99925);
delay(833.3325);
tone(tonePin, 174, 249.99975);
delay(277.7775);
tone(tonePin, 174, 999.999);
delay(1111.11);
tone(tonePin, 233, 999.999);
delay(1111.11);
tone(tonePin, 220, 249.99975);
delay(277.7775);
tone(tonePin, 195, 249.99975);
delay(277.7775);
tone(tonePin, 174, 249.99975);
delay(277.7775);
tone(tonePin, 195, 249.99975);
delay(277.7775);
tone(tonePin, 220, 749.99925);
delay(833.3325);
tone(tonePin, 146, 249.99975);
delay(277.7775);
tone(tonePin, 146, 999.999);
delay(1111.11);
tone(tonePin, 233, 499.9995);
delay(555.555);
tone(tonePin, 195, 374.999625);
delay(416.66625);
tone(tonePin, 220, 124.999875);
delay(138.88875);
tone(tonePin, 233, 499.9995);
delay(555.555);
tone(tonePin, 195, 374.999625);
delay(416.66625);
tone(tonePin, 220, 124.999875);
delay(138.88875);
tone(tonePin, 233, 499.9995);
delay(555.555);
tone(tonePin, 195, 374.999625);
delay(416.66625);
tone(tonePin, 233, 124.999875);
delay(138.88875);
tone(tonePin, 311, 999.999);
delay(1111.11);
tone(tonePin, 311, 999.999);
delay(1111.11);
tone(tonePin, 293, 249.99975);
delay(277.7775);
tone(tonePin, 261, 249.99975);
delay(277.7775);
tone(tonePin, 233, 249.99975);
delay(277.7775);
tone(tonePin, 261, 249.99975);
delay(277.7775);
tone(tonePin, 293, 749.99925);
delay(833.3325);
tone(tonePin, 233, 249.99975);
delay(277.7775);
tone(tonePin, 233, 999.999);
delay(1111.11);
tone(tonePin, 261, 999.999);
delay(1111.11);
tone(tonePin, 233, 249.99975);
delay(277.7775);
tone(tonePin, 220, 249.99975);
delay(277.7775);
tone(tonePin, 195, 249.99975);
delay(277.7775);
tone(tonePin, 220, 249.99975);
delay(277.7775);
tone(tonePin, 233, 749.99925);
delay(833.3325);
tone(tonePin, 195, 249.99975);
delay(277.7775);
tone(tonePin, 195, 999.999);
delay(1111.11);
tone(tonePin, 233, 499.9995);
delay(555.555);
tone(tonePin, 220, 374.999625);
delay(416.66625);
tone(tonePin, 195, 124.999875);
delay(138.88875);
tone(tonePin, 174, 499.9995);
delay(555.555);
tone(tonePin, 116, 374.999625);
delay(416.66625);
tone(tonePin, 116, 124.999875);
delay(138.88875);
tone(tonePin, 174, 999.999);
delay(1111.11);
tone(tonePin, 195, 499.9995);
delay(555.555);
tone(tonePin, 220, 499.9995);
delay(555.555);
tone(tonePin, 233, 1999.998);
delay(2222.22);
}

void loop()

{
// Play midi
midi();
}

 

Оценивание работы:

 

На оценку «3»: Задание 1,2;

На оценку «4»: Задания 1, 2,3;

На оценку «5»: Задания 1, 2, 3, 4;

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2022-02-04 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: