Изменение работы кнопки в linx

Простейшие вопросы в области инженерной разработки
Ответить
Shparki
interested
interested
Сообщения: 2
Зарегистрирован: 08 ноя 2019, 13:33
Репутация: 0
Версия LabVIEW: 2018

Изменение работы кнопки в linx

Сообщение Shparki »

При работе linx+Arduino возникла проблема .
Она заключается в том, что лампочка зажигается только в том случае, когда кнопка зажата.
Как сделать так, чтобы при единичном нажатии лампочка зажигалась, а при повторном нажатии гасла.
Как этот код реализован в IDE
Как этот код реализован в IDE

zxc_pavel
assistant
assistant
Сообщения: 140
Зарегистрирован: 02 июн 2016, 12:07
Репутация: 0
Версия LabVIEW: 15
Контактная информация:

Re: Изменение работы кнопки в linx

Сообщение zxc_pavel »

Еще одну переменную в код добавить нужно. Наверное, так
Вложения
08_11.png
08_11.png (5.22 КБ) 877 просмотров

Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3485
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Репутация: 0
Версия LabVIEW: 2.5 — 2020
Контактная информация:

Re: Изменение работы кнопки в linx

Сообщение dadreamer »

Дожили, текстовый код скриншотим )) Есть же тэг [ code ][ /code ].

Аватара пользователя
taras_33

Activity
professional
professional
Сообщения: 337
Зарегистрирован: 31 окт 2009, 18:25
Награды: 1
Репутация: 0
Версия LabVIEW: 2019
Контактная информация:

Re: Изменение работы кнопки в linx

Сообщение taras_33 »

Адруино не пользуюсь, но си он и в африке си.
Нужно позаботится о дребезге контактов кнопки, причем не тупо введя задержку - программа должна делать что то полезное, а не висеть в паузе. Для всяких кнопок лучше конечно использовать прерывания, но на начальном этапе и так сойдет...

Код: Выделить всё

//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;            // юзер нажал ее и держит, сбросим флаг только после отпускания

	}
Дожили, текстовый код скриншотим
оно конечно да, и прокрутка есть и скопировать можно, жаль только подсветки синтаксиса нет. Поэтому я приатачу картинку, так на всякий случай. :D
кнопка.png
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!

Shparki
interested
interested
Сообщения: 2
Зарегистрирован: 08 ноя 2019, 13:33
Репутация: 0
Версия LabVIEW: 2018

Re: Изменение работы кнопки в linx

Сообщение Shparki »

Но теперь есть вопрос как этот код записать в formula node или переписать с помощью LabVIEW
taras_33 писал(а):Адруино не пользуюсь, но си он и в африке си.

Ответить

Вернуться в «Для чайников»