Что должно произойти при отправке сигнала AnalogWrite на не-ШИМ-вывод?
Я новичок в Arduino и любой электротехнике, я изучаю некоторые учебные пособия на Youtube.
Однако, насколько я понимаю, отправка аналоговых сигналов на не-ШИМ-вывод будет просто проверять пороговое значение и отправлять либо НИЗКИЙ, либо ВЫСОКИЙ, в отличие от возможности отправлять переменные напряжения на ШИМ-вывод.
НО ... это не то, что я вижу на практике...
Используя Arduino UNO, я сделал небольшой проект по изменению яркости синего светодиода. Сначала я делал это через вывод ШИМ (вывод 9), и он работал безупречно. Но затем я попытался посмотреть, что произойдет на выводе без ШИМ (вывод 8), вы знаете, потому что вы учитесь, пробуя и экспериментируя. Поэтому я переключился на вывод без ШИМ, и... он работает точно так же...
Я могу изменить яркость светодиода 5 различных уровней... с помощью аналоговой записи... на контакт без ШИМ...
Заранее спасибо
@BlueStarXD, 👍-1
Обсуждение1 ответ
Лучший ответ:
Однако, насколько я понимаю, отправка аналоговых сигналов на не-ШИМ-вывод будет просто проверять пороговое значение и отправлять либо НИЗКИЙ, либо ВЫСОКИЙ, в отличие от возможности отправлять переменные напряжения на ШИМ-вывод.
На Uno вы никуда не отправляете аналоговые сигналы. Выводы ШИМ — это просто цифровые выходы, которые быстро включаются и выключаются с заданной вами частотой и рабочим циклом.
Поэтому вы можете сделать то же самое с контактами без ШИМ, посылая HIGH/LOW с переменной скоростью.
Чтобы прокомментировать, почему ваш код "работает"; нам нужно это увидеть.
В чем смысл ШИМ-выводов, если также можно отправлять переменные высокие/низкие сигналы на не-ШИМ-выводы?
Ну, выводы ШИМ выдают высокий/низкий сигналы асинхронно. То есть без кода, который должен это делать. Итак, если вы настроите таймер (который подключен к контактам ШИМ) на выходную частоту 100 кГц, он будет делать это независимо от того, что в это время делает код. Возможно, вы вычисляете простые числа, но аппаратные таймеры будут бездумно включать и выключать этот вывод ШИМ с указанной частотой.
Если вы попытаетесь создать свой собственный ШИМ в коде, тогда код должен сделать это и ничего больше, если он собирается выводить согласованный сигнал.
Привет Ник, спасибо за ответ. Да, я понимаю эту концепцию того, что делают выводы ШИМ, быстро отправляя цифровые сигналы. Мой вопрос был в основном теоретическим, поэтому я не показывал код. Основываясь на вашем ответе, можно также отправлять переменные сигналы (высокий/низкий) на контакт без ШИМ, что меня смутило. В чем смысл ШИМ-выводов, если также можно отправлять переменные высокие/низкие сигналы на не-ШИМ-выводы? (Это единственная часть, которая меня смутила), @BlueStarXD
@BlueStarXD См. обновленный ответ. Во многих кодах есть простой и сложный пути. Вручную выполнять ШИМ с помощью кода — сложный путь., @Nick Gammon
У меня есть [страница об аппаратных таймерах] (https://www.gammon.com.au/timers), которая может помочь вашему пониманию., @Nick Gammon
- Какова частота PWM-выхода на Arduino
- Как вывести истинное аналоговое напряжение на выходной контакт
- Проблема с выходным контактом ШИМ (PWM)
- Не могу контролировать скорость двигателей постоянного тока с помощью analogWrite()
- L298N издает звуковые сигналы и дает сбой при получении определенных значений AnalogWrite
- AnalogWrite никогда не выводит ненулевое напряжение
- «Вручную» генерация ШИМ-сигнала
- Запись нескольких входов в последовательный порт с использованием цикла while
Я предполагаю, что ваш код переключает контакт, многократно вызывая AnalogWrite. добавьте свой тестовый скетч к вопросу, @Juraj
Вы можете проверить выходной сигнал с помощью осциллографа. Возможно, они расширили свою библиотеку, чтобы использовать таймер и его прерывание для генерации ШИМ с помощью программного обеспечения., @the busybee
Я бы также предположил, что вы просто как-то затемняете код. Я только что проверил это с Arduino Nano и последним ядром Arduino AVR (1.8.6), и он переключается точно между двумя уровнями: ВЫСОКИЙ и НИЗКИЙ. И код в wireing_analog.c отражает это. Пожалуйста, покажите нам код, с помощью которого вы получили эти 5 уровней., @chrisl
Вам нужно показать свой код. Пожалуйста, отредактируйте вопрос и сделайте это. * Я могу изменить яркость светодиода на 5 различных уровнях ... с помощью аналоговой записи ... на контакт без ШИМ ... * . Показать нам!, @Nick Gammon