Деактивация кнопок на начальном этапе
Кто-нибудь, ответьте на мой вопрос. У меня есть 4 кнопки, а именно добавить/отклонить/начать и закончить. Я хочу
1.Деактивируйте кнопки добавления/отклонения на начальном этапе до тех пор, пока не будет нажата кнопка запуска & 2.Как только add/reject активирован, снова должен деактивироваться после нажатия кнопки finish & 3.Снова при нажатии кнопки "Пуск" следует отпустить кнопку "добавить/отклонить".
с помощью следующего кода я могу сделать 2 и 3. Однако мне все еще не хватает 1.pl помогите в этом.
const int bt_Select = 2; // #define BUTTON_PIN 2
const int bt_Reject = 3;
const int bt_Start = 7;
const int bt_Finish = 8;
boolean decision=false;
int bt_Select_state=0;
int bt_Reject_state=0;
int bt_Start_state;
int bt_Finish_state;
int selected;
int rejected;
int started;
int finished;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(bt_Select, INPUT_PULLUP);
pinMode(bt_Reject, INPUT_PULLUP);
pinMode(bt_Finish, INPUT_PULLUP);
pinMode(bt_Start, INPUT_PULLUP);
Serial.println("Welcome to Nano");
delay(1000);
}
//========================================================================
void loop() {
started=bt_Start_pressed();
selected =bt_Select_pressed();
rejected=bt_Reject_pressed();
finished=bt_Finish_pressed();
decision=Stop_Main();
int x=0;
int Lx=0;
if (selected&&decision){x=1;}
if (rejected&&decision){x=2;}
if (started&&decision){x=3;}
if (x!=Lx){
switch(x) {
case 1:Serial.println("Selected");delay(250);Serial.print("");
break;
case 2:Serial.println("Rejected");delay(250);Serial.print("");
break;
case 3:Serial.println("Started");delay(250);Serial.print("");
break;
/*case 3://do something when var equals 1
Serial.println("Removed");
break; */
}//switch(x)
x=Lx;
}//eof if (x!=Lx)
}
//====================================================================
int bt_Select_pressed(){
bt_Select_state=digitalRead(bt_Select);
if (bt_Select_state == LOW){return 1;}
else {return 0;}
}
//====================================================================
int bt_Reject_pressed(){
bt_Reject_state=digitalRead(bt_Reject);
if (bt_Reject_state == LOW){return 1;}
else {return 0;}
}
//====================================================================
int bt_Start_pressed(){
bt_Start_state=digitalRead(bt_Start);
if (bt_Start_state == LOW){return 1;}
else{return 0;}
}
//====================================================================
int bt_Finish_pressed(){
bt_Finish_state=digitalRead(bt_Finish);
if (bt_Finish_state == LOW){return 1;}
else {return 0;}
}
//=====================================================================
boolean Stop_Main(){
bt_Start_state=digitalRead(bt_Start);
bt_Finish_state=digitalRead(bt_Finish);
if (bt_Finish_state == LOW){decision=false;return decision;}
if (bt_Start_state == LOW){decision=true; return decision;}
// else if (bt_Start_state ==HIGH && bt_Finish_state == HIGH){decision=false;return decision;}
}
/* boolean bt_Start_pressed(){
bt_Start_state=digitalRead(bt_Start);
if (bt_Start_state == LOW){started=true; return decision;}
else{started=false; return decision;}
} */
//===================
@Ak Rikas, 👍0
Обсуждение1 ответ
Держите логическое значение, начинающееся как false
. Установите его в true
при нажатии кнопки start и снова установите в false
при нажатии кнопки finish. Затем вы можете читать и отвечать на кнопки добавить
и отклонить
только в том случае , если это логическое значение истинно
, а в противном случае игнорировать их.
- Запуск кода кодировщика одновременно с другим кодом в Arduino
- Arduino Uno: avrdude: stk500_recv(): программатор не отвечает
- Можно ли использовать цифровые контакты в качестве выхода ШИМ?
- Запуск двух шаговых двигателей с двумя поворотными энкодерами
- Как я могу прервать задержку() при нажатии кнопки?
- Программирование пользовательских Arduino Mega с Arduino Uno
- Может ли Arduino UNO постоянно хранить код?
- Arduino 1.6.4 не показывает никаких /tty/ опций в последовательных портах
вы не думаете ясно о проблеме ... это не " кнопка деактивации
... это " кнопка игнорирования
... используйте переменную состояния, например bt_Start_state ... просто игнорируйте кнопки добавления/отклонения до тех пор, пока переменная состояния не станет "истинной", @jsotola