Настройка вывода на непрерывный выходной сигнал

Есть ли какой-либо способ в Arduino установить определенный контакт (ШИМ или нет), чтобы просто генерировать прямоугольную волну из нужного контакта?

Например, я хочу иметь два контакта на моем Arduino Uno, которые выводят две прямоугольные волны с рабочим циклом 50% с разными частотами. Но в то же время я хочу, чтобы моя программа делала что-то еще. Это означает, что побитовое биение двух выводов в функции loop() просто невозможно.

Можно ли как-то просто установить и забыть пин для вывода волны?

, 👍-1

Обсуждение

почему не аналогWrite()? https://www.arduino.cc/reference/en/language/functions/analog-io/analogwrite/, @Juraj

Если вам не нужно более трех разных частот, я настоятельно рекомендую использовать аппаратные таймеры Atmega для генерации ШИМ. Таким образом, вы получите настоящий параллелизм и основной период не будет задерживаться., @Sim Son


2 ответа


1

Настройка вывода для автоматического вывода прямоугольной волны — это именно то, что делает AnalogWrite. Он просто включает прямоугольную волну. Если вам нужен рабочий цикл 50%, используйте AnalogWrite(127), и это даст вам прямоугольную волну с рабочим циклом 50%. Если вы хотите изменить частоту, найдите изменение частоты аналога записи, это обсуждалось во многих местах в Интернете.

,

0

Какие частоты вам нужны? Вы можете использовать программирование в стиле мигания без задержки для генерации множества частот. Я сделал это, чтобы сделать это органоподобное устройство с Atmega1284P

https://www.youtube.com/watch?v=4c8idXN4Pg0

Он был запрограммирован на 13 нот (полная октава), демо воспроизводило только CDEFGABC, так как это были все переключатели, которые у меня были. (13 кнопок, 13 выходов, оставив 2 контакта для последовательного порта и еще 4 свободных).

Скетч постоянно проверяет, нажата ли кнопка, и если это так, то он проверяет, прошло ли достаточно времени, чтобы изменить вывод для этой ноты с низкого на высокий или с высокого на низкий (полупериода). Пока идет ожидание, могут происходить другие вещи.

Если вам нужны более высокие частоты, вам подойдет ШИМ.

Примерно на полпути вниз по этой странице Ник Гэммон объясняет, как настроить таймеры для разных частот.

http://www.gammon.com.au/timers

,