Проблема с IF (опрашиваю через ИФ 3 кнопки)
- Войдите на сайт для отправки комментариев
Всем доброй ночи!
Играюсь с ардуиной... К сожалению возникла проблема с обычным опросом.
код ниже
byte esc = 4; byte okay = 2; byte menu = 12; bool escST; bool okayST; bool menuST; void setup() { Serial.begin(9600); pinMode(esc, INPUT); pinMode(okay, INPUT); pinMode(menu, INPUT); digitalWrite(esc, HIGH); digitalWrite(okay, HIGH); digitalWrite(menu, HIGH); } void loop() { int select; escST = digitalRead(esc); delay(50); Serial.print("escST = "); Serial.println(escST); //------------------------ menuST = digitalRead(menu); delay(50); Serial.print("menuST = "); Serial.println(menuST); //---------------- okayST = digitalRead(okay); delay(50); Serial.print("okayST = "); Serial.println(okayST); //-------------- if(escST == 0){ select = 1; } if(menuST == 0){ select = 2; } if(okayST == 0){ select = 3; } else{ select = 0; } Serial.print("select = "); Serial.println(select); delay(1000); }
вывожу данные в сериал по состоянию каждого пина что бы понять в чем косяк.
3 кнопки "ОК" "выход" и "меню"
по схеме - подкл через кнопку и резистор 5к к земле+внутренний подтяг резисторами делаю... по факту нажатой может быть только 1 кнопка из 3
плата arduino mini pro на 328ой меге
проблема: при использовании 3 шт IF - значение всегда или 0(если не нажимать ничего) и 3 если нажата "esc"/
я так понимаю, что я где то навалял с тем, что нужно как то заставить игнорировать другие IF если хоть 1 из них верно. Как это сделать подскажите?(мб что то вроде перехода, хотя я думаю есть способ изменить код и обойтись без меток и goto).
резистор 5к к земле+внутренний подтяг резисторами делаю...
надеюсь, внутренний подтяг тоже к земле? :D
замени резисторы на 1К и убери делаи из кода.
else в строке 44 относится не ко всем if'ам, а только к самому последнему. Поэтому, если условие в строке 41 неверно, то срабатывает else независимо от условий в строках 34 и 37.
ЕвгенийП, вот я кажется тоже к тому и пришел, можете подсказать, как исправить данный момент?
Мда, видимо в час ночи я уже никакой((((
Кстати, кто может подсказать, предположим у меня 6 кнопок, если не использовать внутренний подтяг к плюсу - можно ли сделать так:
тоесть 6 кнопок ----|резистор|----/кнопка1...6/---•••---|резистор2|----земля
••• - подкл к ардуино.
вопрос, может ли резистор 2 быть общим для всех 6 кнопок??? И почему так???
Заранее благодарю!)
проблема решена, решил с помощью добавления переменной bool fin;
записываю в нее единицу если хоть 1 IF истину дает.
В конце проверяю fin=0? если да то выдаю в итог ответ 0. Думаю кому нибудь пригодится))))))
Может лутше использовать
с Элсе тоже что то не срослось((((
а что по поводу общего резистора подтягивающего на 6 кнопок?
а что по поводу общего резистора подтягивающего на 6 кнопок?
ты собрался замкнуть пины кнопок между собой?
Сначала в IDE нажимаешь Ctrl+T для автоматического форматирования кода и расстановки отступов, потом смотришь на вложенность операторов.
Пробуй.
а что по поводу общего резистора подтягивающего на 6 кнопок?
ты собрался замкнуть пины кнопок между собой?
А почему нет, если сигнал для Ардуины нужно подавать из шести разных мест?
Всем большое спасибо, тему можно закрыть)) отдельно спасибо ЕвгенийП за наводку, и vosara за код)