Настройка вывода на непрерывный выходной сигнал
Есть ли какой-либо способ в Arduino установить определенный контакт (ШИМ или нет), чтобы просто генерировать прямоугольную волну из нужного контакта?
Например, я хочу иметь два контакта на моем Arduino Uno, которые выводят две прямоугольные волны с рабочим циклом 50% с разными частотами. Но в то же время я хочу, чтобы моя программа делала что-то еще. Это означает, что побитовое биение двух выводов в функции loop() просто невозможно.
Можно ли как-то просто установить и забыть пин для вывода волны?
@Liro, 👍-1
Обсуждение2 ответа
Настройка вывода для автоматического вывода прямоугольной волны — это именно то, что делает AnalogWrite. Он просто включает прямоугольную волну. Если вам нужен рабочий цикл 50%, используйте AnalogWrite(127), и это даст вам прямоугольную волну с рабочим циклом 50%. Если вы хотите изменить частоту, найдите изменение частоты аналога записи, это обсуждалось во многих местах в Интернете.
Какие частоты вам нужны? Вы можете использовать программирование в стиле мигания без задержки для генерации множества частот. Я сделал это, чтобы сделать это органоподобное устройство с Atmega1284P
https://www.youtube.com/watch?v=4c8idXN4Pg0
Он был запрограммирован на 13 нот (полная октава), демо воспроизводило только CDEFGABC, так как это были все переключатели, которые у меня были. (13 кнопок, 13 выходов, оставив 2 контакта для последовательного порта и еще 4 свободных).
Скетч постоянно проверяет, нажата ли кнопка, и если это так, то он проверяет, прошло ли достаточно времени, чтобы изменить вывод для этой ноты с низкого на высокий или с высокого на низкий (полупериода). Пока идет ожидание, могут происходить другие вещи.
Если вам нужны более высокие частоты, вам подойдет ШИМ.
Примерно на полпути вниз по этой странице Ник Гэммон объясняет, как настроить таймеры для разных частот.
http://www.gammon.com.au/timers
- Установите частоту ШИМ на 25 кГц.
- Генерировать 1,7 МГц с PWM в Uno?
- Можно ли сгенерировать точный тактовый импульс 15 кГц с помощью ардуино?
- Изменение ШИМ на Arduino Mega, контакты 9 и 10 на 20–25 кГц
- Проблема с настройкой частоты ШИМ для Arduino Due
- Как преобразовать PCM в PWM?
- ESP 32 изменение частоты вместо рабочего цикла
- Изменение частоты вывода ШИМ на Arduino Uno
почему не аналогWrite()? https://www.arduino.cc/reference/en/language/functions/analog-io/analogwrite/, @Juraj
Если вам не нужно более трех разных частот, я настоятельно рекомендую использовать аппаратные таймеры Atmega для генерации ШИМ. Таким образом, вы получите настоящий параллелизм и основной период не будет задерживаться., @Sim Son