как сделать чтобы программа продолжалась только после нажатия кнопки
- Войдите на сайт для отправки комментариев
Сб, 27/02/2016 - 01:48
Есть 2 кнопки. Как написать код, чтобы программа ждала пока не нажата кнопка 1 или 2. Если нажать кнопку 1 выполняется одно действие , если нажата кнопка 2 - другое, если нажаты одновременно кнопка 1 и 2 -третье действие, а если вообще не нажаты кнопки то нужно ждать пока не будут нажаты кнопки
не могу написать просто через условие if... else.
хотя бы намек дайте на какую конструкцию условных операторов смотреть, можно ли внутрь конструкции do......while вставить еще условный оператор.
кнопки как подключены?
если просто на разных пинах, то алгоритм:
в переменную1 сохраняем нажата ли кнопка 1 (например , 0-отпущена 1-нажата)
в переменную2 сохраняем нажата ли кнопка 2 (также как с кнопкой 1)
if (переменная1==1 && переменная2==1){обе кнопки нажаты}
else if (переменная1==1){нажата кнопка один}
else if (переменная2==1){нажата кнопка два}
кнопки на разных пинах
а если кнопки не нажаты то как вернуться чтобы ждать нажатия кнопки? иначе если кнопки не были нажаты то код выполняется дальше, а мне нужно продолжать только после факта нажатия.
какой есть код сейчас?
кода нет, я хочу понять через какой оператор возможно это сделать. Допустим через if мы узнали что ни одна из двух кнопок не была нажата, то каким способом можно вернутьмся в начало и ждать нажатия кнопки. Если сделать цикл через do... while, например:
do
считать состояние кнопки 1,
считать состояние кнопки 2
while ( if нажата кнопка 1 - делать действие 1, if нажата кнопка 2- делать действие 2, if нажата кнопка 1 и 2 делать действие 3)
правильно ли я понимаю что при нажатии кнопки цикл прекратится, а если нажатия не было то считывание состояния кнопок зациклится, вообще можно ли внутрь while встроить условный оператор?
описнное можно сделать множеством способов. Выбор конкретного будет зависеть от требуемого результата и железа на котором это реализуется. Абстрактно в сферическом вакууме может работать и ваш вариант.
описнное можно сделать множеством способов.
самый простой?
железо -ардуино про мини
Результат требуемый не описали. Потому сферический пример в вакууме. Цикл будет крутиться, пока не будут нажаты обе кнопки:
переменная1=0;
переменная2=0;
переменная3=0;
do{
переменная1=считать состояние кнопки 1;
переменная2=считать состояние кнопки 2;
if(переменная1==1 && переменная2==1){переменная3=1;}
переменна1=0;
переменная2=0;
}while(переменная3==0)
Внутрь можно дописать какие хочешь условия if...else, да и любые другие операторы...
условие выхода из цикла тоже можно переписать как хочешь.
В дуино есть встроенный , безусловный while, имя ему loop. сидим в нем и ждем события (кнопки). Событие произошло, отправляем в исполнительную функцию. Сделали что надо, вернулись взад.
Сделали что надо, вернулись взад.
Как-то стрёмно.... И почему туда-то сразу ?
нельзя ли CASEми или IFами обойти это место ?
Сделали что надо, вернулись взад.
Как-то стрёмно.... И почему туда-то сразу ?
Где взял, туда и вернул.))))