Блок основан на станрдатной библиотеке Tone()
Используется именно пассивный пьезодинамик, либо обычный но подключать желательно через транзистор, в крайнем случае если динамик маломощный достаточно резистора в разрыв цепи.
Это первая версия, так что после допиливания будет описание в самом блоке, а пока что здесь.
Подключение к любому пину - в параметрах 1 пункт указываем пин.
Можно подключать несколько динамиков к одному пину, и так же несколько на разные пины.
Далее в параметрах pause_note - это пауза между нотами (не злоупотреблять так как используется delay())
Ну и Size_note - это длительность звучания ноты (об этом еще чуть позже)
Входы
En- понятно что при 1 он работает
Вход Time в миллисекундах определяет через какое время повторится мелодия при наличии на входе EN 1
Можно задать разное время для каждого динамика даже если они на одном пине.
Дальше чуть сложнее.
Вы можете создать свою мелодию или набор из нот!
Для этого нужно отредактировать блок
В функции deсlare в самом начале указаны все ноты -например #define NOTE_C1 33 где С1 нота а 33 ее частота
Далее ниже находим
int melody[] = {
NOTE_C4, NOTE_E5, NOTE_A3, NOTE_D5, NOTE_B2 ,NOTE_C4
};
Тут мы вставляем нужные ноты, и не забываем про количество, через запятую, точно так как я скопировал
Потом находим ниже
int noteDurations[] = {
4, 4, 4, 4, 4, 4
};
Видим что у нас 6 нот, и цифра означает длительность звучания каждой ноты, можно поиграться, 2- длинно, 8 -коротко
Если у вас больше 6 нот добавляем циферки через запятую
и последнее находим в цикле loop строчку
for (int thisNote = 0; thisNote < 6; thisNote++) {
и меняем цифру 6 на количество ваших нот
Вроде все, вот сам блок и пример на 6 нот
Обновление - блок от Андрея(Dryundel)
Без delay(), правда логика другая
Пост viewtopic.php?f=70&t=8094&p=115462#p115492 и viewtopic.php?f=70&t=8094&p=115462#p115497
Описание внутри блока
Обновление_2
В блоке добавлен Вход - количество раз проигранных мелодий при подаче короткого импульса на вход En