Могу ли я использовать потенциометр для изменения продолжительности работы таймера без написания кода для каждого временного интервала?
Я хотел бы иметь возможность использовать Arduino в качестве таймера для включения/выключения нагрузки 120 В переменного тока. Я думаю, что смогу сделать это с помощью Arduino, запускающего небольшое реле, управляющее контактами на 120 В. Но мне нужен дисплей для отображения значения продолжительности таймера и потенциометр или энкодер (ручка) для управления длительностью . Значения времени будут короткими, от 0,1 до 20 секунд, но их нужно будет легко изменить с помощью потенциометра или энкодера и отобразить на дисплее. В идеале, на дисплее будет отображаться продолжительность и обратный отсчет до нуля при срабатывании отдельного замыкания электрически сухого контакта. Несколько светодиодов показывают, что питание включено, реле включено, а один показывает продолжительность, которую можно изменить с помощью ручки (индикатор «установленного режима»).
Я вижу, как установить продолжительность таймера в коде, но мне нужно иметь возможность нажать кнопку или что-то еще и вручную повернуть ручку, чтобы установить другую продолжительность таймера без необходимости писать/изменять код каждый раз. время, когда я хочу изменить продолжительность.
Какая-либо помощь указывает новичку в правильном направлении, где искать?
Спасибо, dhg2
@dhg2, 👍0
Обсуждение2 ответа
Если вы решили использовать потенциометр, вы можете создать схему делителя напряжения с линейным потенциометром и парой резисторов и подать результат на аналоговый вход Arduino.
Я согласен с Havoc, что поворотный энкодер или кнопки были бы хорошим вариантом, а ЖК-дисплеи I2C дешевы и просты в интерфейсе.
Я сам работаю над контроллером питания и использую кнопки вверх/вниз, ЖК-дисплей и программное обеспечение, позволяющее пользователю выбирать время с шагом, который увеличивается по мере того, как пользователь удерживает кнопку. (например, удерживая нажатой кнопку «увеличить время», можно увеличить «время включения» на 1 минуту в течение 5 минут, затем увеличить до шага с шагом 5 минут, затем 15, затем 30, затем по часу. )
С помощью потенциометра вы можете получить аналоговое показание от 0 до 1023. Разделите это значение на 50, чтобы получить 20 диапазонов. Тогда
delayTime = (analogRead(Ax)/50);
- Использование millis() и micros() внутри процедуры прерывания
- Как сделать очень долгую функцию delay(), несколько часов
- Разница между «time_t» и «DateTime»
- Получение BPM из данного кода
- Как считать время в секундах?
- Создание таймера с использованием часов реального времени с указанием времени начала и остановки
- Arduino непрерывно считывает значение АЦП с помощью прерывания
- Использование TIMER0_COMPB_vect
Я определенно рекомендую использовать поворотный энкодер для изменения и запуска таймера. Если вы используете потенциометр, то он будет физически установлен в какой-то момент, в то время как поворотный энкодер может вращаться непрерывно, что позволяет сбрасывать таймер после каждого триггерного события, что упрощает выбор времени. Для отображения таймера вы можете использовать два 7-сегментных дисплея вместе или, что еще проще, ЖК-экран I2C. У Adafruit много крутых светодиодных матриц. Почему бы вам не найти то, что вы хотели бы использовать, и внести изменения в свой вопрос, чтобы мы могли помочь вам с конкретным кодированием позже., @HavocRC