@intTosha

Arduino. Как сделать мелодию для двух и более пьезоизлучателей?

Доброго времени суток. Хочу написать простенькую мелодию для платы arduino. Так сказать вливаюсь в музыкальную сферу со стороны программирования). Но так как любое музыкальное произведение не может существовать без гармонии, мне не достаточно одного пьезоизлучателя. Встает вопрос о использовании нескольких зуммеров. Опять встает "но".. Оператор tone() может воспроизводить только один источник звука, второй зуммер просто ничего не играет. В данном случае, например, будет воспроизведен только звук с выходом на 3 pin, стоящий раньше в коде, на частоте 500 Герц, второй же звук на 7 pin, воспроизведен не будет.

tone(3,500,150);
tone(7,300,500);
delay(700);

Прошу вашей помощи, ибо сам разобраться не в состоянии.
  • Вопрос задан
  • 2484 просмотра
Пригласить эксперта
Ответы на вопрос 2
"Воспроизводиться одновременно может только один сигнал. Если сигнал уже воспроизводится на одном порту, то вызов Tone() с номером другого порта в качестве параметра ни к чему не приведет, если же Tone() будет вызвана с тем же номером порта, то будет установлена новая частота сигнала."

Походу средствами Arduino никак.

"Генерирует на порту вход/выхода сигнал — прямоугольную "волну", заданной частоты и с 50% рабочим циклом. Длительность может быть задана параметром, в противном случае сигнал генерируется пока не будет вызвана функция noTone(). К порту вход/выхода может быть подключен к пьезо или другой динамик для воспроизведения сигнала.
Использование функции Tone() помешает использовать ШИМ на портах вход/выхода 3 и 11 (кроме платы Arduino Mega)."

Из этого следует, что реализован он на таймере.
А таймеров на Уне 3шт, на меге 4шт, если не ошибаюсь. Нулевой затронет задержку (delay), его лучше не трогать.

Так что вам надо идти к тем, кто программирует Atmel'ы, а не ардуины и спросить, как сделать меандр на x Герц на Си/Ассемблере на несколько пинов с разной частотой.

Либо если функционал минимален, попробовать просто включать выключать порт с задержками в миллисекунды, впихнуть в это функцию и радоваться жизни. Но это будет сильно нагружать МК, если делать в лоб.

Ну или найти что-то, что будет генерировать меандр заданной частоты и управляться от МК.
Ответ написан
@vanyamba-electronics
Чтобы с помощью Arduino управлять генерацией сигналов, потребуется изучить генерацию сигналов в режиме быстрого ШИМ (широтно-умпульсная модуляция). Я думаю, данная статья о генерации сигналов с помощью Arduino окажется не бесполезной.
Arduino. Генератор сигналов
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы