Официальный сайт компании Arduino по адресу arduino.cc
RFID Mifare RC522 и mfrc522.PICC_IsNewCardPresent()
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Втр, 28/05/2019 - 21:11
Добрый вечер.
Приобрел комплект с брелоком и картой. Все зацепил, подключил библиотеку rfid-master.zip, залил скетч. Вроде все читается (мне запись не нужна), но не пойму следующего. В скетче есть следующее:
void loop() { if ( ! mfrc522.PICC_IsNewCardPresent()) return; // чтение карты if ( ! mfrc522.PICC_ReadCardSerial()) return; // показать результат чтения UID и тип метки //Serial.print(F("Card UID:")); dump_byte_array(mfrc522.uid.uidByte, mfrc522.uid.size); Serial.println(); /* Serial.print(F("PICC type: ")); byte piccType = mfrc522.PICC_GetType(mfrc522.uid.sak); Serial.println(mfrc522.PICC_GetTypeName(piccType)); */ delay(2000); ...
и не пойму смысл этих строк
if ( ! mfrc522.PICC_IsNewCardPresent()) return;
Как по мне, если присутствует НЕ новая карта, значит все побоку. Но у меня если держать одну и ту же карту через 2 секунды она снова в монитор выводится. В связи с чем вопрос, а нафига вообще эта функция??? Мне надо, если карта держится постоянно - первый раз обрабатывается, все последующие блокируются. Нафига мне постоянно обрабатывать одну и ту же карту???
Такой вот принцип работы у этого примера. Эти строки нужны для того, чтобы не производить никаких последующих действий, в случае, если карта не обнаружена. IsNewCardPresent? - true - идём дальше, читаем серийник и что-то делаем, false? - выходим из цикла loop(), но сразу же попадаем в него снова, и снова ждём появления карты.
Если так надо - то и сделайте именно так.
Так и пытался, но все думал, может функция битая и есть возиожность ее поправить. А с моим алгоритмом - не шарю я в С и в итоге, что не находил, не то. Т.е. в цикле в массив из 4 ячеек заносится серийник карты/брелка, но не могу найти как из массива в лонг загнать. То что нашел - муть какая то, исходный номер отличается от получаемого.
Если библиотечной функцией долгие годы пользуются миллионы человек, и в интернете миллионы примеров - то, вероятно, она не битая? :) А без шаренья в си не выйдет, только если в разделе "ищу исполнителя".
Обойдусь без исполнителей. Поищу дальше.
Aye aye, sir, принято! Вы можете даже информировать нас в этой теме о ходе дальнейших поисков, и мы даже, возможно, почитаем!
от вашего ника большего ожидать и не следовало.
Даже плюсанул ваш коммент про ник, за три года вы первый, кто обратил на него внимание! nega - лень, void - пустота, я и есть - ленивая пустота! Теперь есть база, и мы сможем расширить теорию никнеймов и на всех остальных, если кому будет не лень отписаться в этой теме, и точно так же ничем не помочь.