Деактивация кнопок на начальном этапе

Кто-нибудь, ответьте на мой вопрос. У меня есть 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;}
            }   */  
    //===================


    

, 👍0

Обсуждение

вы не думаете ясно о проблеме ... это не " кнопка деактивации ... это " кнопка игнорирования ... используйте переменную состояния, например bt_Start_state ... просто игнорируйте кнопки добавления/отклонения до тех пор, пока переменная состояния не станет "истинной", @jsotola


1 ответ


1

Держите логическое значение, начинающееся как false. Установите его в true при нажатии кнопки start и снова установите в false при нажатии кнопки finish. Затем вы можете читать и отвечать на кнопки добавить и отклонить только в том случае , если это логическое значение истинно, а в противном случае игнорировать их.

,