Задержка сигнала потенциометром.
- Войдите на сайт для отправки комментариев
Пт, 06/05/2022 - 11:44
Все доброго дня, помогите разобраться как реализовать програмно вот такую идею на arduino nano:
D2 - подключена кнопка. D3 - светодиод A1 - потенциометр.
При нажатии кнопки зажигается светодиод, потенциометром нужно реализовать задержку между нажатием кнопки и поджигом диода с маской : 1/30 сек, 1/32 сек, 1/35сек, 1/40сек, 1/45сек, 1/50сек,1/55сек,1/60сек, 1/65сек,1/70сек. Не уверен что светодиод в данном случаи нужно подключать через D3 т.к при удержании кнопки светодиод будет гореть непрерывно, а нужно чтобы просто мигнул. Буду рад вашей помощи и идеям
Не уверен что светодиод в данном случаи нужно подключать через D3 т.к при удержании кнопки светодиод будет гореть непрерывно
почему бы это?
Я правильно понял - кнопка на D2. а светик D3 ? с чего они станут влиять друг на друга?
>>При нажатии кнопки зажигается светодиод,
>>потенциометром нужно реализовать задержку между нажатием кнопки и поджигом диода
Мне кажется одно противоречит другому...
нужно реализовать задержку..... с маской : 1/30 сек, 1/32 сек, 1/35сек, 1/40сек, 1/45сек, 1/50сек,1/55сек,1/60сек, 1/65сек,1/70сек
что такое "маска 1/32 сек" ? - одна тридцать вторая секунды?
>>При нажатии кнопки зажигается светодиод,
>>потенциометром нужно реализовать задержку между нажатием кнопки и поджигом диода
Мне кажется одно противоречит другому...
Выставляем на ПЦ задержку>жмем кнопку>диод зажигается через выставленное на ПЦ время.
нужно реализовать задержку..... с маской : 1/30 сек, 1/32 сек, 1/35сек, 1/40сек, 1/45сек, 1/50сек,1/55сек,1/60сек, 1/65сек,1/70сек
что такое "маска 1/32 сек" ? - одна тридцать вторая секунды?
верно
Ну и какие проблемы? Читаем резистор и ждем нажатия. По нажатию моргаем в соответствии с резистором. Ждем отпускания кнопки. Всё по новой.
вы уверены, что отличите на глаз 1/32 от 1/35 секунды? :)
вы уверены, что отличите на глаз 1/32 от 1/35 секунды? :)
Абсолютно)
>>При нажатии кнопки зажигается светодиод,
>>потенциометром нужно реализовать задержку между нажатием кнопки и поджигом диода
Мне кажется одно противоречит другому...
Выставляем на ПЦ задержку>жмем кнопку>диод зажигается через выставленное на ПЦ время.
Как два пальца... Создаешь массив задержек arrDelay[10] = {тут значения};
Нажал кнопку;
delay(arrDelay[analogRead(pin)/103]);// [ переводим 0-1023 в 0-9 ]
зажигаешь лед;
>>При нажатии кнопки зажигается светодиод,
>>потенциометром нужно реализовать задержку между нажатием кнопки и поджигом диода
Мне кажется одно противоречит другому...
Выставляем на ПЦ задержку>жмем кнопку>диод зажигается через выставленное на ПЦ время.
Как два пальца... Создаешь массив задержек arrDelay[10] = {тут значения};
Нажал кнопку;
delay(arrDelay[analogRead(pin)/103]);// [ переводим 0-1023 в 0-9 ]
зажигаешь лед;
Мои знания кода остановились на этом)
elaz74, попробуйте сформулировать своими словами. что вы хотите получить. Не на языке программирования.
elaz74, попробуйте сформулировать своими словами. что вы хотите получить. Не на языке программирования.
Выставляем на ПЦ задержку>жмем кнопку>диод зажигается через выставленное на ПЦ время.
Выставляем на ПЦ задержку>жмем кнопку>диод зажигается через выставленное на ПЦ время.
То есть СНАЧАЛА задержка, потом диод, правильно? Тогда почему в вашем коде наоборот? диод зажигается СРАЗУ, а задержка применяется потом? одна рука не знает. что делает другая?
Выставляем на ПЦ задержку>жмем кнопку>диод зажигается через выставленное на ПЦ время.
То есть СНАЧАЛА задержка, потом диод, правильно? Тогда почему в вашем коде наоборот? диод зажигается СРАЗУ, а задержка применяется потом? одна рука не знает. что делает другая?
Все верно, задержка потом диод
Все верно, задержка потом диод
отлично. Теперь переставьте операторы в соответвии с этим алгоритмом.
Все верно, задержка потом диод
отлично. Теперь переставьте операторы в соответвии с этим алгоритмом.
Сложно( я не потяну.
Сложно( я не потяну.
переставить операторы сложно? - а пробовал?
Если даже это "сложно" - то может чем-то другим заняться? Не каждый умеет играть на скрипке - а ведь живут же люди....
Как два пальца... Создаешь массив задержек arrDelay[10] = {тут значения};
Нажал кнопку;
delay(arrDelay[analogRead(pin)/103]);// [ переводим 0-1023 в 0-9 ]
зажигаешь лед;
Потенциометр нужно поставить на панель и нарисовать шкалу на десять диапазонов или 11 меток. Диапазоны в единицах АЦП 0-102, 103-205 и т.д. Затем, устанавливая ручку потенциометра на соответствующий диапазон, будешь выбирать одну из 10 задержек.
analogRead(pin) / 103; вот это и есть номер задержки, отсчет с нуля до 9
Сложно( я не потяну.
переставить операторы сложно? - а пробовал?
Если даже это "сложно" - то может чем-то другим заняться? Не каждый умеет играть на скрипке - а ведь живут же люди....
Спасибо за развернутый ответ.
Спасибо за развернутый ответ.
обращайтесь
строка 5 лишняя
строка 5 лишняя
да, но это уже без меня )))
Для ТС чуть подумать. 1/30 сек = 33,(3) мс, а не ровно 33 мс. Да еще millis() неравномерно тикает.
Для ТС чуть подумать. 1/30 сек = 33,(3) мс, а не ровно 33 мс. Да еще millis() неравномерно тикает.
можно через микрос, тогда "лохматость" будет повыше
А где у вас там millis()?
А где у вас там millis()?
Это называется коротыш мозга)) Хотел предложить ТС сделать через миллис, потом стер эту глупую затею... а миллис то остался. Как говорит деда - наданапицца...
Попробовал собрать симуляцию на основе вашего кода. https://wokwi.com/projects/329203001267847763
Попробовал собрать симуляцию на основе вашего кода. https://wokwi.com/projects/329203001267847763
это не мой код! в ваш код добавлено предложенное одним из участников, точно по алгоритму что описали, если нужна была не задержка на включение, а длительность импульса (одновибратор), то это несколько иное
Диод должен гореть определенное время или же загораться через определенное время после нажатия кнопки. Если второе, то сколько он должен гореть - пока кнопка нажата ?