Два светодиода и два потенциометра.
- Войдите на сайт для отправки комментариев
Чт, 31/03/2016 - 11:41
Добрый день!
Я новичок в этом деле, собрал самую простейшую схему, два светодиода и два потенциометра.
При вращении первого все отлично работает, когда начитаю вращать второй, второй светодиод не работает а работает первый, где ошибка?
Схема
Видео
https://yadi.sk/i/rzQDcEsmqccyr
Скейтч
int sensorPin=A0; int sensorPin2=A1; int ledPin = 2; int ledPin2 = 3; void setup() { pinMode(ledPin, OUTPUT); pinMode(ledPin2, OUTPUT); } void loop(){ readSensor(sensorPin); readSensor2(sensorPin2); } void readSensor(int sensorPin){ int analogueValue = analogRead(sensorPin); // читаем аналоговый пин A0 analogueValue = map(analogueValue, 0, 1023, 0, 9); //преобразуем диапазон с А0 (0-1023) в нужный нам (0-9) analogWrite(ledPin, analogRead(analogueValue)/9); } void readSensor2(int sensorPin2){ int analogueValue2 = analogRead(sensorPin2); // читаем аналоговый пин A1 analogueValue2 = map(analogueValue2, 0, 1023, 0, 9); //преобразуем диапазон с А1 (0-1023) в нужный нам (0-9) analogWrite(ledPin2, analogRead(analogueValue2)/9); }
Спасибо!
Читаем
"На большинстве плат Arduino (на базе микроконтроллера ATmega168 или ATmega328) ШИМ поддерживают порты 3, 5, 6, 9, 10 и 11"
И, честно говоря, конструкция analogWrite(ledPin, analogRead(analogueValue)/9); поставила меня в тупик. По какой такой случайности оно у вас работает - я не понимаю...
И, честно говоря, конструкция analogWrite(ledPin, analogRead(analogueValue)/9); поставила меня в тупик. По какой такой случайности оно у вас работает - я не понимаю...
Есть многое на свете, брат Горацио ... :)))
pin 2 заменил на pin 5 светодиод 2 начал работать синхронно с светодиодом 1. При вращении потенциометра 2, работает светодиод 1 в среднем положении он гаснет.
analogWrite(ledPin, analogRead(analogueValue)/9); без этого светодиоды работать не будут
у меня ATmega328
Какие еще есть варианты?
analogWrite(ledPin, analogRead(analogueValue)/9); без этого светодиоды работать не будут
Эт точно!
Тока уж просветите нас тёмных, что эта строка делает. Подробненько так, пожалуйста.
analogWrite(ledPin, analogRead(analogueValue)/9); без этого светодиоды работать не будут
Эт точно!
Тока уж просветите нас тёмных, что эта строка делает. Подробненько так, пожалуйста.
Не смогу! Так как я этот код скопиравал с другого проекта но найти этот проект больше не могу :(
Работает! Спасибо!
Сразу не обратил внимания но пропала плавность включения, светодиоды загораются за первые 3 мм поворота потенциометра.
С предыдущим было более плавно.
analogWrite(ledPin, analogRead(analogueValue)/9); без этого светодиоды работать не будут
Эт точно!
Тока уж просветите нас тёмных, что эта строка делает. Подробненько так, пожалуйста.
Если вы последуете этому совету, то сами ответите почему работает неправильно.
Вот объясните, и зачем тогда это функциями оформлять? Ради смены названия? У ТС хоть попытка масштабирования аналового значения была...
Отдельно радует, что одну переменную функции передаем, а вторую таки нафик - возьмем напрямую из глобальных)) Тогда уж либо все глобальные, либо обе передаем и объединяем две функции в одну.
Про деление на 100... А почему на 100? может лучше на 1000? Или не, лучше на 50... или на 100500...
В описании AnalogWrite все что нужно для базового управления яркостью светодиода написано. Если делать более интересно, то еще надо как минимум диапазон фактических значений потенциометров замерять и от этих значений делать массштабирование на минимум максимум ШИМа.
okta, мне не надо ликбез проводить, а автору не имеет смысла задавать эти вопросы. Поэтому, если у тебя приступ перфекционизма, просто напиши скетч и дай автору.
Где увидели ликбез для вас? Все как раз наоборот, для ТС я дал несколько комментариев, а вам задал несколько вопросов, т.к. действительно интересно чем руководствуетесь давая такие советы...
Скетч уже написан по приведенной (уже дважды) выше ссылке. Если ТС не может раскопировать его с одного диода на два...
Работает отлично!
Всем спасибо!
Работает отлично!
Всем спасибо!
Урааа!!! Мы за вас рады))))))))) Регулировку от 0 до 4% яркости реализовали... Задача решена, можно смело штурмовать новые вешины знаний )))))
Урааа!!! Мы за вас рады))))))))) Регулировку от 0 до 4% яркости реализовали... Задача решена, можно смело штурмовать новые вешины знаний )))))
Да, нет, у него там просто резистор маленький стоит и уже при дохлом ШИМе получается, что горит ярко, а при увеличении дальше - на глаз ничего не меняется. А когда делит на 100 - вроде как на всё "повороте потенциометра" что-то меняться продолжает.
Да, нет, у него там просто резистор маленький стоит и уже при дохлом ШИМе получается, что горит ярко, а при увеличении дальше - на глаз ничего не меняется.
Вот кстати, я тоже экспериментировал с плавным наростанием яркости светодиода. И получается, что на минимальных значениях для шима разница в яркости очень сильно ощущается. Т.е. выставив в analogWrite единицу светодиод уже "рвется в бой". Точно также заметна разница между 1 и 2 и т.д. Но потом на некотором этапе все это нивелируется и разница на глаз уже незаметна.
А как бы в начале сгладить эти скачки? Можно, конечно, сопротивление токоограничивающего резистора существенно повысить, но тогда не выйдем на полную мощность.
Да, нет, у него там просто резистор маленький стоит и уже при дохлом ШИМе получается, что горит ярко, а при увеличении дальше - на глаз ничего не меняется.
Вот кстати, я тоже экспериментировал с плавным наростанием яркости светодиода. И получается, что на минимальных значениях для шима разница в яркости очень сильно ощущается. Т.е. выставив в analogWrite единицу светодиод уже "рвется в бой". Точно также заметна разница между 1 и 2 и т.д. Но потом на некотором этапе все это нивелируется и разница на глаз уже незаметна.
А как бы в начале сгладить эти скачки? Можно, конечно, сопротивление токоограничивающего резистора существенно повысить, но тогда не выйдем на полную мощность.
Тут два аспекта.
1. Полная мощность.
Это легко, достаточно подобрать резистор так, чтобы при полном шиме ток был 20мА. Но это не поможет, т.к. визуально Вы не отличите свечение диода при 20мА и при 10мА, поэтом визуально будет казаться, что сначала что-то меняется, а потом не менгяется ничего.
2. Визуализация
Чтобы визально было всё в порядке нужно брать переменный резистор (потенциометр) с нелинейной функциональной характеристикой (с логарифмической). Если русский потенциометр, то это характеристика В, если импортный, то А. Этот резистор сначала будет очень медленно увеличивать своё сопротивление, а потом (ближе к концу поворат движка) наоборот резко.
Таки переменные резисторы используют для регулирования горомкости (если оно не цифорове). При линейном резисторе там такие же проблемы - сначал растёт, а потом перестаёт
поэтом визуально будет казаться, что сначала что-то меняется, а потом не менгяется ничего.
Так вот и я о том. И вначале это не только кажется, а очень даже заметно.
Урааа!!! Мы за вас рады))))))))) Регулировку от 0 до 4% яркости реализовали... Задача решена, можно смело штурмовать новые вешины знаний )))))
Да, нет, у него там просто резистор маленький стоит и уже при дохлом ШИМе получается, что горит ярко, а при увеличении дальше - на глаз ничего не меняется. А когда делит на 100 - вроде как на всё "повороте потенциометра" что-то меняться продолжает.
Да, я тогда начал было писать про скважность ШИМ, но решил сказать попроще, и быстренько заменил на яркость :) Согласен, очень неудачно :)
Что-то вы смешали в кучу понятия разницы, и соотношения разницы. Скважность ШИМа меняетя линейно (в рамках погрешности таймера). Обычный потенциометр тоже почти линейно меняет напряжение на выходе (да - со значительно большей погрешностью линейности). Так что разница между шагами (без учета погрешности) всегда = 1 хоть между 1 и 2, хоть 999 и 1000. Арифметически, конечно, разница между числами соотносится к самим числам в разных долях. Но в любом случае - ни к скважности ШИМ, ни к данным полученным с потенциометра, ни к яркости светодиода приведенные вами проценты ни какого отношения не имеют. Другой вопрос, что восприятие яркости нелинейно. Почитайте посты Евгения. Практически к любому светодиоду можно подобрать резистор так, что изменение его яркости заметно на всем диапазоне ШИМ (ну уж точно большем чем на 4% диапазоне).
ИКМ то тут причем (или вы что-то другое имели в виду)? Пятно на солнце мы не видим исключительно из-за особенности нашего зрения. Но ни как не из-за того, что разница между черным небом и звездой грубо говоря 100%, а между солнцем и черным пятнышком 0.1%. Приведите уровень яркости в различимый глазу диапазон, и наблюдайте пятнышко на солнце (темное стеклышко возьмите).
как-то купил такой как на фото потенциометр, поставил - все вроде заработало.
потом отлаживал скетч, а у меня перестало нормально работать, сначала думал что-то в коде, оказалось что это реостат перестал норм работать, толи флюс попал, толи еще какой налет (там прорезь возле контактов).
увидел глючность стандартным скетчем из образцов 1. Basic -> ReadAnalogVoltage
вопрос: если задать аналоговому входу pullup (или внеш подтягивающий резитор к плюс 5в) и соединить с потенциометром двумя проводами(ноль и средний ползунок) будет плавно работать?
Давайте на пальцах. В идеале потенциометр после АЦП должен давать с выхода линейно от 0 до 1023. Допустим так оно и есть. Не совсем линейно, но здесь это большой роли не играет. Также как и погрешность АЦП при ИКМ про которую упоминаете. На ШИМ мы можем давать значения от 0 до 255. При этом сила тока протекающая через диод линейно меняется в зависимости от скважности ШИМ. Яркость светодиода также практически линейно зависит от силы тока. Известно, что визуально изменение яркости диода мы видим только при ШИМ = от 0 до 9. И тут у нас появляется два пути:
1. То что делаете вы - разделить выход АЦП на 100 - оставив таким образом по сути 10 градаций уровня яркости (разве это похоже на действие затемненного стеклышка?). Ни какого отношения это действие к ИКМ не имеет.
2. Увеличить номинал резистора у светодиода, тем самым сдвинув уровни яркости светодиода, а следовательно увеличив количество градаций яркости, которые мы видим (вот это уже больше похоже на затемненное стеклышко). Значение на выходе АЦП делить все равно придется.
И то и другое правильно, но ни какого отношения к "Между 1 и 2 разница 100%, между 9 и 10 - 10%, между 999 и 1000 - 0.1%" не имеет.
В обоих случаях изменение на 1. Какое изменение более заметно?
Ток через светодиод пропорционален значению ШИМ, так? Изменение значения ШИМа 1->2 увеличивает ток в 2 раза.
Изменение шим с 9 до 18 и с 18 до 36 и с 36 до 72 и т.д. тоже изменит ток в 2 раза, яркость изменится вдвое?
вопрос: если задать аналоговому входу pullup (или внеш подтягивающий резитор к плюс 5в) и соединить с потенциометром двумя проводами(ноль и средний ползунок) будет плавно работать?
Возьмите потенциометр с логарифмической функциональной характеристикой и будет всё классно.
Именно так. Очень хорошо, что изменили слово яркость на интенсивность излучения. Т.к. изначально вопрос стоял, что "на глаз яркость" т.е. видимая яркость. И вот тут ваша формула перестает работать - вмешивается несовершенство нашего зрения. Так вот даже просто подбором номинала резистора к светодиоду "на глаз" видимый диапазон ШИМ можно значительно расширить, а не оставлять 10 градаций яркости. О чем я второй день, может быть не очень последовательно и доходчиво, пытаюсь сказать.
ТС всем доволен, вы ему помогли (уж извините, что на вы). Вот мне тогда и стало интересно, вы дали полурешение, без каких либо комментариев, потом еще одно, и еще и понеслось. Извиняюсь, если мой интерес показался несколько навязчивым )))
PS думаю ТС, если вернется в эту тему, из последующей переписки вынесет куда больше полезной инфы, чем от того решения, которым остался так доволен )))
Так что у тебя там со зрением? Можешь различать яркость свечения светодиодов с ШИМом 254/255 или нет?
okta, я лишь минимально изменил скеч автора, чем пресек начавшийся стёб.
Где вы там "стёб" то нашли? Что ШИМ не на тот канал был подключен? Так прямо сразу сказали. Что с параметрами функции analogWrite() всеже надо разобраться, а не писать в нее что угодно? Таки да, показали описание функции. Я уже не раз замечал, как сыну прямое решение скажешь, так потом жди двойку. А если просто направишь его непонятки на правильные страницы учебника, и ответишь на возникшие вопросы...
Так что у тебя там со зрением? Можешь различать яркость свечения светодиодов с ШИМом 254/255 или нет?
Да уж... Раз уж вы ко мне упорно на ты, ок. Друг, ты предложил ограничить скважность ШИМ 4% от возможного диапазона, аппелируя, что в верхнем диапазоне относительная яркость приростает медленннее, чем в нижнем. На что я возразил, что видимая яркость приведенным процентам не соответствует ни разу, и ее можно значительно расширить. Про ИКМ вышло взаимное недопонимание - я со стороны АЦП смотрел (тут да, переклинило), а не на выход на светодиод (ну какие там верхние значения, если у ТС максимальная яркость при скважности чуть выше нуля).