Кнопка и режимы
- Войдите на сайт для отправки комментариев
Втр, 19/01/2021 - 12:31
Всем привет, столкнулся с такой проблемой, не могу сделать так чтобы при нажатии сначала 1 кнопки после неё и второй(не отпуская первой) загорался светодиод. Вот мой код.
#define FIRST_Sensor A0
#define SECOND_Sensor A1
int buttonState = 0;
int buttonState1 = 0;
int a = false;
void setup()
{
pinMode(9, OUTPUT);
pinMode(A0,INPUT);
pinMode(A1,INPUT);
Serial.begin(9600);
}
void loop(){
buttonState = digitalRead(FIRST_Sensor);
if (buttonState == HIGH) {
a = true;
Serial.println("FIRST_Sensor=True");
}
buttonState1 = digitalRead(SECOND_Sensor);
if (buttonState1 == HIGH) & a == true; {
digitalWrite(9, HIGH);
Serial.println("SECOND_Sensor=True");
}
}
Прискорбно.
Самая главная проблема вашего кода описана здесь
Ну и на вскидку - пятая снизу строка выглядит весьма странно ))
пятая снизу строка выглядит весьма странно ))
Тут всё выглядит странно
Тут всё выглядит странно
Но та строка - весьма странно )))
Понял
А если понял, так вставляйте код как положено и объясняйте свою проблему толком.
Тут всё выглядит странно
Но та строка - весьма странно )))
канпилятор думает иначе )))
канпилятор думает иначе )))
Компилятору ничего не известно о замыслах ТС, ему лишь бы синтаксических ошибок не было )))
а строка - весьма странно )))
канпилятор думает иначе )))
компилятор тебя троллит
Когда прошиваю ардуино светодиод просто игнорирует кнопки, сразу же загорается по непонятным мне причинам.
Он ведет себя ровно так, как вы написали. Если это не совпадает с вашими задумками, значит вы не сумели реализовать нужный алгоритм.
Я вам указал на проблемную строку, а вы ленитесь даже нормально код выложить. И чего вы ждете от форума?
канпилятор думает иначе )))
Канделятор вообще только DOOMает.
походу, это брат по дуино того, кто ролетой рулил двумя кнопками и дуино - оказалось, дуино в ТЗ лишняя.
ТС, соединяй кнопки, светодиод и резистор последовательно, подключай к блоку питания - будет работать ровно так, как тебе нужно и без кода. О_о
*не благодари - подарок от души.
ГЕНИЙ!!!!
Вам несколько человек сказали, чтобы Вы правильно выложили код. Вы не в состоянии этого сделать?
Или "из принципа"?
Вы не задали начальное значение ваших инпутов, как минимум. Оператор И разве так пишется?)
Ваша проблема - строка 22. Во-первых, оператор И, как вам выше заметили, пишется не так, а во-вторых точка с запятой означает конец оператора, т.е. строки 23 и 24 у вас выполняются в любом случае вне зависимости от условия в строке 22. Поэтому светодиод включается сразу сам.
Далее, переменные в строках 3-5 лучше объявить bool, а не int.
Далее, переменная a до первого нажатия на первую кнопку просто дублирует переменную buttonState, далее постоянно остается в значении true. Не знаю, зачем вы ее ввели, но в строке 22 для сравнения лучше использовать именно buttonState, если вам действительно нужно, чтобы светодиод загорался именно при одновременном нажатии кнопок. В текущем варианте он будет загораться и при поочередном нажатии - нажали и отпустили первую кнопку, не нажимая первую нажали вторую кнопку, светодиод загорелся.
Спасибо! Проблема решена!