Arduino - кнопка выбора времени - PullRequest
0 голосов
/ 03 октября 2019

я новичок здесь, так что h8, в основном, я делаю школьный проект (система просмотра школьных обедов), когда ученик приходит, нажимает кнопку, чтобы начать, выбирает кнопку «хорошо» или «плохо», а затем кладет карту рядом с устройством для чтения карт, чтобыотправить свой отзыв в базу данных на веб-странице, и у меня возникла проблема.

Проблема заключается в следующем: когда я нажимаю кнопку для запуска и не нажимаю кнопку «Хорошо» или «Плохо» в нужный момент, ничего не происходит, и даже если я это делаюнажмите его в нужное время, мне все еще нужно нажать эту кнопку и одновременно положить карту рядом со считывателем, чтобы она заработала.

Любые предложения по улучшению моего кода, чтобы он дождался студентанажать кнопку и вставить карту рядом с ридером? Было бы действительно очень полезно!

#include <SPI.h>
#include <MFRC522.h>

#define SDA_PIN 10
#define RST_PIN 9
#define buttonGood 6
#define buttonBad 7
#define buttonRestart 5

int countGood = 0;
int countBad = 0;

MFRC522 rfid(SDA_PIN, RST_PIN);  

void setup() {
 Serial.begin(9600);
 pinMode(buttonGood,INPUT_PULLUP);
 pinMode(buttonBad,INPUT_PULLUP);
 pinMode(buttonRestart,INPUT_PULLUP);
 SPI.begin();  
 rfid.PCD_Init(); 
}

void loop() {

 if (digitalRead(buttonRestart) == LOW ) {

      Serial.print("Pocet hlasovani za dobrý: ");
      Serial.print(countGood);

      Serial.println("");

      Serial.print("Pocet hlasovani za zlý: ");
      Serial.print(countBad);

      Serial.println("");

      Serial.println("Vyber si moznost!!!!!");
      delay(1500);
          Serial.println("");
          Serial.println("");


      if (digitalRead(buttonGood) == LOW) {
        Serial.println("Vybral si si moznost: Dobrý.");
        Serial.println("Teraz priloz cip pre odoslanie moznosti");

          while(rfid.PICC_IsNewCardPresent()){
            if ( ! rfid.PICC_ReadCardSerial())
            return;

            MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);
            Serial.print("Adresa RFID tagu: ");
            vypisHex(rfid.uid.uidByte, rfid.uid.size);
            Serial.println("");
            Serial.println("Tvoje hodnotenie bolo odoslané!!!");
            Serial.println("---------------------------------");
            countGood++;
            Serial.println("");
            delay(3000); 
          }
        }


       else if(digitalRead(buttonBad) == LOW) {

        Serial.println("Vybral si si moznost: Zlý.");
        Serial.println("Teraz priloz cip pre odoslanie moznosti");

         while(rfid.PICC_IsNewCardPresent()){
          if ( ! rfid.PICC_ReadCardSerial())
          return;

          MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);
          Serial.print("Adresa RFID tagu: ");
          vypisHex(rfid.uid.uidByte, rfid.uid.size);
          Serial.println("");
          Serial.println("Tvoje hodnotenie bolo odoslané!!!");
          Serial.println("---------------------------------");
          countBad++;
          Serial.println("");
          delay(3000); 
          }
        }
        while (digitalRead(buttonRestart) == LOW );
    }

}

void vypisHex(byte *buffer, byte bufferSize) {
  for (byte i = 0; i < bufferSize; i++) {
    Serial.print(buffer[i] < 0x10 ? " 0" : " ");
    Serial.print(buffer[i], HEX);
  } 
}```
...