Здравствуйте. Вопрос касается работы функции analogWrite() Она принимает на вход в качестве второго аргумента число от 0 до 255 и преобразует его в напряжение от 0 до 5 В. Однако, если передать на вход число большее 255 происходит следующий эффект: напряжение изменяется таким образом, как если бы мы из числа в аргументе вычитали числа кратные 255 до тех пор, пока не получим число <= 255. Например, analogWrite(9, 260), делает то же самое, что и analogWrite(9, 5) 260 - 255 = 5. Может ли кто-нибудь объяснить, почему логика именно такая? Спасибо.
В шим сигнал, а не напряжение. Она принимает unsigned word. У этого типа максимальное значения 255. Если вы пишете больше, то какое-то поведение не гарантировано, всё зависит от компилятора. В данном случае. я предполагаю, что он взял тип побольше. например unsigned int, а в функцию пошел только младший байт.
Пожалуй напишу здесь, чтобы не плодить лишние темы. Пытаюсь сделать задание Эксперимент 2. Маячок с нарастающей яркостью . Собрал все, скетч загрузил без ошибок. Но проблема в том, что при функции analogWrite(LED_PIN, 0) светодиод горит на максимум, а при analogWrite(LED_PIN, 255) гаснет. То есть инвентируется значение. В чем может быть проблема? Arduino UNO
Если бы я перепутал полярность, то он бы вообще не горел, не так ли? Перезагрузил ардуину и заработало) не знаю как так)