"Я угадаю эту мелодию... с семи нот!" natyanikova / 29.12.2014 В преддверии Нового года предлагаю сыграть в любопытную игру - "Угадай мелодию". Попутно я расскажу, какие инструменты использованы для создания простых мелодий на компьютере. Итак, в моём распоряжении плата Arduino UNO. Данный микроконтроллер получает питание от порта USB, но может работать и автономно от батарейки 9В ("Крона"). К плате через макетную доску я подключила пьезоэлемент: один контакт - к пину 9, другой - к земле. Этот элемент выступает здесь в роли преобразователя энергии электрических импульсов в механическую энергию звуковых колебаний. О пьезоэлектрическом эффекте и использовании пьезоэлементов в технике можно кратко прочитать здесь. Конечно, я не сразу научилась воспроизводить мелодии. Сначала пришлось добиться получения периодических тихих щелчков. Для программирования звука использовалась среда Arduino IDE. Можно собирать мелодии и в среде Scratch for Arduino (S4A) или в ArduBlock, однако, там они будут выглядеть достаточно громоздко. Здесь же вся мелодия займёт одну строку. Например:char notes[] = "dbbabgdddbbCaD DeeCCbagdbbabg ";В другой строке описываются длительности используемых нот. К примеру, если условиться, что одна восьмая нота ♪=1, то четвертная нота будет равна двум, четверть с точкой - трём и так далее. Пример:int beats[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 , 2, 1 };В такой работе важно понимать природу звука и особенности его восприятия человеком. Ведь звук - это колебания, но далеко не все колебания мы слышим. Частоты нот и любых других звуков, которые различает человеческое ухо, лежат в диапазоне от 20 Гц (низкие звуки) до 20 кГц (высокие звуки). Мой пьезоэлемент вместо низких частот выдавал щелчки. Как же научить его "петь"? Нота "ля" первой октавы имеет частоты 440 Гц. В сети с лёгкостью можно отыскать таблицы соответствия нот определённым частотам (например). Однако, среда программирования Arduino использует не частоты, а тона. Расчёт тонов производится следующим образом: тон = 1/(2*частота)*10^6. Тогда для той же ноты "ля" получаем следующий тон: 1/(2*440)*10^6=1136. Такие расчёты пришлось произвести для всех нот, использующихся в мелодии.Разобраться в теории вопроса и программировании мне помогли разнообразные примеры (один из них). Привожу скетч одной из мелодий: взяв его за основу, можно закладывать тона и количество проигрываемых нот, задавать темп мелодии и интервалы между нотами.Мелодия №1Мелодия №2Мелодия №3В записи мелодии №1 и №2 принимал участие не пьезоэлемент, а динамик 8 Ом из конструктора "Знаток". Вы можете услышать, насколько отличаются звуки по мощности. И ещё несколько слов о том, где могут пригодиться подобные наработки. Возможно, вы слышали о проектах "умного" дома, когда человеческое жилище снабжено различными датчиками, регуляторами, системами распознавания и оповещения. Звуковые сигналы в таком доме могут сообщать об изменении в режимах работы каких-либо устройств: стиральной машины, холодильника, оконных жалюзи, уличного освещения вокруг дома, охранной сигнализации и т.д. Праздник Нового года может стать приятнее и интереснее, если для каждого гостя будет определена своя мелодия, которая зазвучит при его появлении у ворот.Желаю вам счастливых каникул и сказочных минут! STEM electronics music robotics музыка робототехника электроника