При работе linx+Arduino возникла проблема .
Она заключается в том, что лампочка зажигается только в том случае, когда кнопка зажата.
Как сделать так, чтобы при единичном нажатии лампочка зажигалась, а при повторном нажатии гасла.
Изменение работы кнопки в linx
- zxc_pavel
- adviser
- Сообщения: 242
- Зарегистрирован: 02 июн 2016, 12:07
- Версия LabVIEW: 15
- Благодарил (а): 9 раз
- Поблагодарили: 23 раза
- Контактная информация:
Re: Изменение работы кнопки в linx
Еще одну переменную в код добавить нужно. Наверное, так
- Вложения
-
- 08_11.png (5.22 КБ) 1827 просмотров
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Изменение работы кнопки в linx
Дожили, текстовый код скриншотим )) Есть же тэг [ code ][ /code ].
-
taras_33
- professional
- Сообщения: 392
- Зарегистрирован: 31 окт 2009, 18:25
- Награды: 1
- Версия LabVIEW: 2019
- Поблагодарили: 13 раз
- Контактная информация:
Re: Изменение работы кнопки в linx
Адруино не пользуюсь, но си он и в африке си.
Нужно позаботится о дребезге контактов кнопки, причем не тупо введя задержку - программа должна делать что то полезное, а не висеть в паузе. Для всяких кнопок лучше конечно использовать прерывания, но на начальном этапе и так сойдет...
Нужно позаботится о дребезге контактов кнопки, причем не тупо введя задержку - программа должна делать что то полезное, а не висеть в паузе. Для всяких кнопок лучше конечно использовать прерывания, но на начальном этапе и так сойдет...
Код: Выделить всё
//MyButton переменная в которую записывается статус входа высокий/низкий
//Btn_Flg переменная-флаг который взводится если юзер подержал кнопку нажатой достаточное количество времени,
//кроме того он должен ее отпустить чтобы сбросить флаг... для исключения ситуации если нажать кнопку и не отпускать
//Совместно с переменной Btn_cnt и константой TimeBTN образуют задержку для борьбы с дребезгом контактов кнопки
//например частота проверки состояния кнопки 1000Гц, тогда значение TimeBTN=100; обеспечит задержку в 0.1 секунду
//(юзер должен подержать кнопку нажатой 0.1 секунду)
//Btn_state хранит последнее значение кнопки - выключала она или включала лампочку когда ее нажимали последний раз
//Btn_LED_On (макрос) включили лампочку
//Btn_LED_Off (макрос) выключили лампочку
MyButton = digitalRead(3); // Вроде так у вас написано..
if((MyButton == 0) && (Btn_Flg == 0)) //Специально использую (MyButton == 0) вместо (!MyButton) для лучшей читаемости. PULL UP Логика перевернута, т.е. кнопку нажали на входе ноль
{
if(Btn_cnt < TimeBTN)
{
Btn_cnt++; //кнопку нажали, но задержка еще не вышла
}
else
{
if(Btn_state == 0)
{
Btn_state = 1; //время вышло, последний раз кнопкой выключили лапмочку
Btn_Flg = 1;
Btn_LED_On;
}
else
{
Btn_state = 0;
Btn_Flg = 1; //время вышло, последний раз кнопкой включили лапмочку
Btn_LED_Off;
}
}
}
else
{
Btn_cnt = 0; //кнопка не нажималась либо
if(MyButton == 1)Btn_Flg = 0; // юзер нажал ее и держит, сбросим флаг только после отпускания
}
оно конечно да, и прокрутка есть и скопировать можно, жаль только подсветки синтаксиса нет. Поэтому я приатачу картинку, так на всякий случай.Дожили, текстовый код скриншотим
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning!
So far, the Universe is winning!
Re: Изменение работы кнопки в linx
Но теперь есть вопрос как этот код записать в formula node или переписать с помощью LabVIEW
taras_33 писал(а):Адруино не пользуюсь, но си он и в африке си.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 0 Ответы
- 705 Просмотры
-
Последнее сообщение Dima123_Dima321
-
- 7 Ответы
- 300 Просмотры
-
Последнее сообщение dadreamer
-
- 3 Ответы
- 1729 Просмотры
-
Последнее сообщение Artem.spb