никак не получается убрать дребезг MFRC522 модуля ,, вот код у меня ,, открываю монитор порта ,, при приложенной метке должен выводить Card №: 515280555 Card №: 515280555 Card №: 515280555 когда нет No card No card No card но у меня устойчиво не выводит номер карты,сообщения "NO card" проскаивают при приложенной метке Card №: 515280555 No card Card №: 515280555 No card Card №: 515280555 No card Card №: 515280555 No card ... Код (C++): void loop() { Key = 0; if ( ! rfid.PICC_IsNewCardPresent()) {Serial.println("No card"); }// Поиск нового ключа delay(50); if ( rfid.PICC_ReadCardSerial()) { for (byte i = 0; i < rfid.uid.size; i++){// Выдача серийного № ключа KeyTemp = rfid.uid.uidByte[i]; Key = Key * 256 + KeyTemp;} Serial.print("Card №: "); Serial.println(Key); // Выводим № ключа в консоль } }
А зачем вы использете метод для поиска только НОВОЙ карты, если вам нужно удержание? Читайте документацию к библиотеке, там все есть.
Код (C++): void loop() { static uint32_t past = 0; delay(50); if ( rfid.PICC_IsNewCardPresent() && rfid.PICC_ReadCardSerial()) { past = millis(); Key = 0; for (byte i = 0; i < rfid.uid.size; i++) { // Выдача серийного № ключа KeyTemp = rfid.uid.uidByte[i]; Key = Key * 256 + KeyTemp; } Serial.println(); Serial.print("Card №: "); Serial.print(Key); // Выводим № ключа в консоль } if (millis() - past >= 1000) { Serial.println(); Serial.print("No card"); // Поиск нового ключа } }
Честно говоря читал но не нашел ,, надо когда нет карты выводит "No card" ,, когда есть только номер метки
очень спосибо брат ,, работает но есть маленький нюанс ,, когда в первый раз не приложил карту функцию in(); четко вызывает ,, а когда приближаю один из карт вызиваю другую функцию после этого когда нет никокой карты функцию in(); не вызывает ,, в чем может быть проблема?? Код (C++): void loop() { static uint32_t past = 0; if ( rfid.PICC_IsNewCardPresent() && rfid.PICC_ReadCardSerial()) { past = millis(); Key = 0; for (byte i = 0; i < rfid.uid.size; i++) { // Выдача серийного № ключа KeyTemp = rfid.uid.uidByte[i]; Key = Key * 256 + KeyTemp; } Serial.println(); Serial.print("Card №: "); Serial.print(Key); // Выводим № ключа в консоль if (Key == 515280555) tas(); if (Key == 1459297918) qsan(); } if (millis() - past >= 50) { Serial.println(); Serial.print("0"); // Поиск нового ключа if (Key == 0) in(); } }
Разумеется, вы просто очень не внимательны.Ленитесь думать и правильно расставлять скобки. Код (C++): void loop() { static uint32_t past = 0; if ( rfid.PICC_IsNewCardPresent() && rfid.PICC_ReadCardSerial()) { past = millis(); Key = 0; for (byte i = 0; i < rfid.uid.size; i++) { // Выдача серийного № ключа KeyTemp = rfid.uid.uidByte[i]; Key = Key * 256 + KeyTemp; } Serial.println(); Serial.print("Card №: "); Serial.print(Key); // Выводим № ключа в консоль if (Key == 515280555) tas(); if (Key == 1459297918) qsan(); } if (millis() - past >= 50) { Serial.println(); Serial.print("0"); // Поиск нового ключа in(); } }