я новичок здесь, так что 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);
}
}```