В контроллерах я мягко говоря не очень, посему прошу помощи. Устройство должно одной кнопкой без фиксации управлять двумя нагрузками и иметь третье, неактивное состояние. Т.е при нажатии и удержании кнопки (2-3 сек) подключается одна нагрузка, при обычном, кратковременном нажатии, нагрузки должны переключаться неограниченое количество раз. И опять же при нажатии и удержании устройство должно отключиться, т.е ни одна нагрузка не должна быть подключена... Как то так...
А контроллер обязательно? Можно взять RC-цепочку, заряжаемую кнопкой, напряжение с нее подавать на 2 компаратора с разными порогами, выходы компараторов на 2 счетных триггера. Один триггер включает/выключает нагрузку, второй переключает. Хотя на контроллере конечно схема попроще будет.
Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Если с длительным нажатием более-менее понятно(и то, какая из двух?)
без разницы, но при первоначальном включении всегда одна и та же
pyzhman писал(а):
то вот это:
serega-29 писал(а):
при обычном, кратковременном нажатии, нагрузки должны переключаться неограниченое количество раз.
совершенно невсасываемо.
а что тут не всасываемо? сколько раз кратковременно не нажимал бы, что б состояние нагрузок поочередно изменялось - 1-я вкл 2-я выкл, кнопочку нажал - наоборот 1-я выкл 2-я вкл и т.д.
Проще кому ? Могу для PIC32 написать, я как раз их изучаю Боюсь, другие МК не потянут такую задачу
Так сложно? Может ну его... Старый добрый механический переключатель и проблема решена. Не так эстетично и технологично, зато дешево и практично, как говаривал небезызвестный персонаж...
//прототипы функций char BtnGet (void);//ф-ция опроса кнопки
//---------- //Главная функция int main (void) { DDRB =(LedLine1| LedLine2);//включение линий порта на вывод PORTB = BtnLine;//включит подтяжку на кнопке
while(1)//бесконечный цикл { char BtnMask = BtnGet();//опрос кнопки
if (BtnMask & BtnShort){//проверка на короткое нажатие
if (LedPORT & LedLine1) LedPORT = LedLine2;//если светик 1 был включен, выключить его и включить 2-й else LedPORT = LedLine1;//если светик 2 был включен, выключить его и включить 1-й }
if (BtnMask & BtnLong){//проверка на длинное нажатие
if (LedPORT &(LedLine1| LedLine2)) LedPORT = 0;//если хоть какой-то светик был включен, выключить все else LedPORT = LedLine1;//если оба светика были выключены, включить 1-й } } }
//---------- //ФУНКЦИЯ ОБРАБОТКИ НАЖАТИЯ КНОПКИ //ЗНАЧЕНИЕ - маска нажатой кнопки (короткое\ длинное нажатия) char BtnGet (void) { //задержки обработки событий кнопки #define BtnLockTime 30 /*время обработки дребезга в милисекундах (10-100)*/ #define BtnLongPressTime 1000 /*время фиксации длинного нажатия в милисекундах (1000 - 2500)*/
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения