Проект "Игра «Электронное пианино»"
Готовая исследовательская работа по робототехнике "Игра «Электронное пианино»" является результатом самостоятельной работы ученика 6 класса, целью которого было создать игрушку «Электрическое пианино». Для этого школьником был изучен принцип работы пианино и найдены схемы создания электронного инструмента.
Подробнее о работе:
Проект по созданию электронной игрушки пианино содержит описание теории управления частотой пьезодинамика в зависимости от нажатой кнопки, а также практическую работу автора, в процессе которой он стремился доработать управление частотой пьезодинамика в зависимости от нажатой кнопки на заданное количество кнопок. Все схемы изготовления электронного пианино представлены в работе.
Автором индивидуальной исследовательской работы по робототехнике на тему "Игра «Электронное пианино»" был указан программный код управления частотой пьезодинамика в зависимости от нажатой кнопки, а также описан подбор частот пьезодинамика в соответствии звучанию нот первой октавы. В результате учащимся 6 класса была представлена аппаратно-программная реализация игры "электрическое пианино".
Оглавление
Введение
1. Электрическая и аппаратная схемы управления частотой пьезодинамика в зависимости от нажатой кнопки.
2. Программный код управления частотой пьезодинамика в зависимости от нажатой кнопки.
3. Практическая часть.
3.1 Подбор частот пьезодинамика в соответствие звучанию нот первой октавы.
3.2. Аппаратно-программная реализация игры «Электрическое пианино».
Заключение Список литературы
Введение
Полки магазинов доверху уставлены разнообразными игрушками! Глаза разбегаются от такого выбора. Но как среди всего этого отыскать то, что действительно нужно ребенку? Какую игрушку купить, чтобы она принесла малышу не только радость, но и пользу?
Музыка – неотъемлемая часть жизни каждого. Однако занятия с музыкальными игрушками – это не только развлечение. Играя с ними, человек учится слушать и слышать; контролировать движения рук. К тому же, музыкальные игрушки помогают раскрыть творческий потенциал ребенка.
На сегодняшний день распространенной платформой для создания управляемых устройств является платформа Arduino.
Цель: создать игрушку «Электрическое пианино».
Задачи:
- Изучить управление частотой пьезодинамика в зависимости от нажатой кнопки.
- Доработать управление частотой пьезодинамика в зависимости от нажатой кнопки на заданное количество кнопок.
- Подобрать частоты пьезодинамика в соответствие со звуковой гаммой.
Электрическая и аппаратная схемы управления частотой пьезодинамика в зависимости от нажатой кнопки
В сборнике проектов на Arduino есть проект управления частотой пьезодинамика в зависимости от нажатой кнопки. Схема электрическая принципиальная данного проекта представлена на рис. 1.
Один из возможных вариантов подключения элементов схемы приведен на рисунке 2.
Из схемы подключения элементов проекта видно, что, несмотря на то, что у тактовой кнопки четыре ножки, замыкаемый контакт всего один. Если расположить кнопку так, чтобы две ножки выходили из корпуса вверх, а две вниз, то между ножками левой и правой стороны нет контакта, когда кнопка не нажата, и контакты замыкаются при нажатии кнопки.
Таким образом, если кнопку расположить на макетной плате в средней части, то ножки, расположенные друг напротив друга на противоположных сторонах, находятся на одной «рельсе». Воспользовавшись этим, можно расположить резистор с одной стороны макетной платы, а провод, подключаемый к порту Arduino, с другой стороны.
Другой особенностью схемы является то, что кнопки подключены к портам, находящимся рядом друг с другом, то есть имеющим соседние номера.
Программная реализация схемы для управления частотой пьезодинамика в зависимости от нажатой кнопки
В данном разделе представлен с подробными комментариями текст программы для управления схемой.
#define BUZZER_PIN 13 // порт с пьезодинамиком
#defineFIRST_KEY_PIN 7 // первый порт с клавишей
#define KEY_COUNT 3 // общее количество клавиш
void setup()
{
pinMode(BUZZER_PIN, OUTPUT);
}
voidloop()
{
// в цикле бежим по всем номерам кнопок от 0-го по 2-й
for (nti = 0; i < KEY_COUNT; ++i) {
// на основе номера кнопки вычисляем номер ее порта
int keyPin = i + FIRST_KEY_PIN;
// считываем значение с кнопки. Возможны всего 2 варианта:
// * высокий сигнал, 5 вольт, истина — кнопка отпущена
// * низкий сигнал, земля, ложь — кнопка зажата
boolean keyUp = digitalRead(keyPin);
// проверяем условие «если не кнопка отпущена». Знак «!»
// перед булевой переменной означает отрицание, т.е. «не».
If (!keyUp) {
// рассчитываем высоту ноты в герцах в зависимости от
// клавиши, которую рассматриваем на данном этапе цикла.
// Мы получим значение 3500, 4000 или 4500
int frequency = 3500 + i * 500;
// Заставляем пьезодинамик пищать с нужной частотой
// в течение 20 миллисекунд. Если клавиша останется зажатой,
// пьезодинамик вновь зазвучит при следующем проходе loop,
// а мы услышим непрерывный звук
tone(BUZZER_PIN, frequency, 20);
}
}
}
Благодаря тому, что в начале программы определены FIRST_KEY_PIN и KEY_COUNT, можно подключать произвольное количество кнопок к любым идущим друг за другом цифровым портам, и для корректировки программы не придется менять параметры цикла for. Изменить понадобится лишь эти константы:
– цикл в любом случае пробегает от 0 до KEY_COUNT;
– перед считыванием порта задается смещение на номер первого используемого порта – FIRST_KEY_PIN.
Функция digitalRead(pin) возвращает состояние порта, номер которого передан ей параметром pin. Это может быть состояние HIGH или LOW. Или, выражаясь иначе: высокое напряжение или низкое, 1 или 0, true или false.
Поскольку кнопки подключены по схеме с подтягивающим резистором, то при нажатии кнопки на соответствующем порту будет получено значение 0 (false). Поскольку в программе необходимо описать действия, выполняющиеся по нажатию, сигнал с портов инвертируется.
Подбор частот пьезодинамика в соответствие звучанию нот первой октавы
Для того, чтобы звучание пьезодинамика соответствовало звучанию нот первой октавы, необходимо изучить частоты указанных нот. Эти данные представлены в таблице 1 [4].
Таблица 1.Таблица соответствия звучания нот первой октавы частоте пьезодинамика
Как видно из таблицы, нам нужны не только значения частот пьезодинамика для указанных нот, но приблизительную разницу между соседними нотами.
Аппаратная-программная реализация игры «Электрическое пианино»
Схема управления частотой пьезодинамика предполагает установку заданного количества кнопок. Поэтому схема может дорабатываться на различное количество кнопок. На рис. 3 показан случай установки четырех кнопок, а затем проект был доработан на пять.
Теперь покажем на блок-схеме проекта управления частотой управления пьезодинамика, где для преобразования его в игру «Электронное пианино» можно вносить изменения в программный код (см. Рис. 6).
Таким образом, величина KEY_COUNT была изменена сначала на 4, а затем и на 5, что позволило к трем кнопкам добавить еще несколько.
Формулу для вычисления переменной frequencyсогласно данным таблицы 1 изменили на 260 – i*30.
Заключение
В процессе создания электронной игры «Электрическое пианино» были изучены различные проекты на основе Arduino.
Игра «Электрическое пианино» была апробирована на воспроизведении мелодий из пяти нот, например, начала песни «Маленькой елочки».
Таким образом, цели и задачи проекта были решены. В дальнейшем я буду работать над дизайном игры, а также над увеличением числа кнопок.
Литература
- Е.А. Канашев Учебная практика Сборник упражнений Южно-уральский Государственный университет.
- Петин В.А. Проекты с использованием контроллера Arduino. – СПб.:БХВ-Петербург, 2014.-400 с.:-(Электроника).
- Все о детях и для детей.
- Таблица соответствия нот и частот.