Есть ли у кого -нибудь код, чтобы воспроизводить мелодию на PIN -код GPIO

Rogerclark
Солнце 13 ноября 2016 г. 3:41
Привет, ребята,

Я искал какой -то код, который бы воспроизводил бы простые мелодии для пьезовитого зуммера, но большая часть кода Arduino, кажется, только AVR.

Я посмотрел на пример Arduino Play Melody, который использует задержки -задержки, но это не сработало, когда я попробовал его, поэтому мне пришлось много изменять код даже, чтобы заставить его вообще работать.

На самом деле учебный код Play Melody ужасен, он имеет функцию для воспроизведения примечания в течение определенной продолжительности, но он использует глобальные переменные для установки ноты, так и продолжительности, а не передачи этих значений в функцию (Aaarrggghhhh)

Я уверен, что должен быть какой -то другой код воспроизведения музыки Arduino Beeper, который должен быть лучше, и дал несколько примеров мелодий ???

Рик Кимбалл
Солнце 13 ноября 2016 г., 4:09
rtttl

Rogerclark
Солнце 13 ноября 2016 г., 5:21
Рик Кимбалл написал:rtttl

Ахулл
Солнце 13 ноября 2016 г. 11:19
Я смутно помню, как кто -то упомянул библиотеку «тон» некоторое время назад. Если тон работает (или мы пишем свои собственные), то есть немало примеров...

https: // Gist.GitHub.com/spara/1832855

Которая, по-прежнему, является первой компьютером, сгенерированной, которую я когда-либо слышал (звучит от AIM65, еще в темные века, когда я был парнем).

Вы также можете поиграть с тем, что здесь

Imperial March Star Wars с пьезо

... и это ...

https: // учиться.Sparkfun.com/tuperials/si ... EZO-Buzzer

Еще одна вещь, поскольку у нас есть много времени на STM32, мы можем производить точные частотные тона, фактически не связывая очень много циклов процессора, в отличие от AIM65, которые требовали плотных процедур сборки с большим количеством нов.

РЕДАКТИРОВАТЬ: Найдено Tone () Thread => http: // www.STM32duino.com/viewtopic.PHP?t = 496

Ореховый
Солнце 13 ноября 2016 г. 13:36
Ааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааа... Изменение частоты ШИМ на лету, чтобы изменить тон пьезо.

Спасибо за ссылки, Энди, больше чтения : D

Rogerclark
Солнце 13 ноября 2016 г., 19:54
Энди

Спасибо

Я посмотрел на Arduino, а также на реализацию ESP8266 функции «тон», и я думаю, что оба используют Admare Times.
Версия ESP8266 выглядит так, как будто это было бы легче всего для порта в либмапл.

Но я думаю, что STM, возможно, уже сделала это в своем ядре F1, так что может быть проще просто использовать этот ядро ​​или этот проект - особенно потому, что я действительно тестировал только какое -то оборудование Beeper.


КСТАТИ. Если вы помните, я искал звуковой сигнал некоторое время назад, и я попробовал как пьезо (пассивный), так и активный звуковой сигнал.
Оба работали нормально для одного проекта, и я, вероятно, буду использовать пьезо для этого.

Но в коммерческом проекте, с которым я помогаю, им нужен был звуковой сигнал внутри закрытой коробки (без отверстий, чтобы сделать его водонепроницаемым), поэтому производитель продукта (который находится в Китае) предложил использовать своего рода небольшой динамик, который резонанс около 2.5 кГц, но это 16 Ом, поэтому необходимо управлять транзистором, так как ток слишком высок, чтобы его можно было изгнать прямо из MCU.

Но предложил биполярный транзистор NPN в качестве текущего усилителя, который его самостоятельно нуждается в довольно большом количестве базового тока (несколько миллиамперс).
Таким образом, я тестировал FET N FET FET, и IMHO работает лучше, так как FET, похоже, имеют лучшую току и занимают меньше тока диска.

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

PCUGURU
Вт 15 ноября 2016 г. 9:40
BJT являются устройствами, управляемыми током, FET управляются напряжением (они похожи на старые клапаны).
Если бы вы могли попасть в спикер в дополнительную паре, вы могли бы получить больше удара от нее.
Ваше здоровье.

Sheepdoll
Вт 15 ноября 2016 г., 17:23
С AVR я использовал этот код http: // elm-chan.org/works/mxb/report.HTML Он использует периферийное устройство AVR . Я не смотрел, есть ли сопоставимая функция на STM32. Это управляется прерыванием. К сожалению, это написано в ASM
Для более функциональной версии, которая играет с SD -карты http: // elm-chan.org/works/sd8p/report.HTML Это написано в C, критические петли времени, однако, находятся в ASM.

Я хотел бы найти способ, которым подобный код можно было сделать с STM32 и в ближайшие несколько дней ;) Было бы неплохо иметь что -то, что я мог бы использовать для мониторинга консоли трубы органа, кроме как банка светодиодов или дисплей персонажа.

Rogerclark
Вт 15 ноября 2016 г., 8:09 вечера
Спасибо, Джули

Использование высокоскоростного ШИМ приехало мне раньше.

Я помню, как игроки компакт -диски использовали какую -то 1 -битную технику потоковой передачи, которая для меня звучит очень похоже.

Конечно, если у вас есть доступ к MCU с ЦАП, это еще проще ;-)

Zoomx
Ср. 16 ноября 2016 г., 7:17
Вы видели этот тон (), notone ()?
http: // www.STM32duino.com/viewtopic.PHP?t = 496

STM Core, кажется, тоже имеет тон
https: // github.com/fpistm/stm/blob/мачта ... Ино/Тон.час

Ахулл
Сб 19 ноября 2016 г., 22:01
Быстрое сочетание различных кусочков кода отсюда и в другом месте, и я придумал этот Франкенскетч..

Это «вроде» играет мелодию (бетховенская фюр -элиза) на одном из моих крошечных, жестяных пьезох между проводной между PIN PB0 и GND - это звучит так же плохо, как и эти дешевые поздравительные открытки, такие красивые аутентичные.
Вы можете получить звук незначительно громче, подключив пьезо между 5 В и штифтом GPIO. В любом случае, не ждите чудес. :рулон:
Наслаждаться.... ;)
C:\Users\KRUNAL~1\AppData\Local\Temp\build9200305924142195495.tmp

Ахулл
Сб 19 ноября 2016 г. 22:36
Для хорошей меры (каламбур)... Вот немного весело супер марио..
Опять код - это пюре из Tone ()... -> http: // www.STM32duino.com/viewtopic.PHP?T = 496#P4853
... На этот раз мелодии отсюда -> http: // www.Princetronics.com/supermariothemesong/ Полный кредит Автор (Dipto pratyaksa) для оригинального эскиза. //save current file NPP_SAVE cd "$(CURRENT_DIRECTORY)" "c:\Program Files (x86)\Arduino\arduino_debug.exe" --pref build.path="$(CURRENT_DIRECTORY)/build" --verify "$(FULL_CURRENT_PATH)"

Rogerclark
Солнце 20 ноября 2016 г., 7:26 утра
Спасибо, Энди

Я добавил tone () и notone () на основе кода @enif's

Я тестировал с вашим примером, и он играл нормально.

Printf через SWO