RFID-RC522 и millis()
- Войдите на сайт для отправки комментариев
Чт, 04/06/2020 - 14:55
Доброго времени суток!
Появилась проблема что при работе функций считывателя
if ( ! mfrc522.PICC_IsNewCardPresent()) {
return;
}
// Выбор метки
if ( ! mfrc522.PICC_ReadCardSerial()) {
return;
}
millis() сходит с ума
if(millis()-timing>10000){
Serial.println(millis());
timing=millis();
}
значения непонятно откуда и интервал явно не 10сек.
Как можно исправить?
Зарание спасибо)
Как можно исправить?
Зарание спасибо)
оно и не должно быть меньше 10 сек, 10 сек - это РАЗНИЦА между двумя засечками времени, а не само время
если я правильно понимаю то засечки времени должны выводиться с интервалом в 10сек, а интервал вывода меньше 1сек, и значения в разнобой
код и схему подключения приведите полностью
работал с этим считывателем - он никак на миллис не влияет.
Как объявлена переменная timing?
unsigned long timing;
код и схему подключения приведите полностью
работал с этим считывателем - он никак на миллис не влияет.
#include <SPI.h> #include <MFRC522.h> // библиотека "RFID". #define SS_PIN 10 #define RST_PIN 9 unsigned long timing; MFRC522 mfrc522(SS_PIN, RST_PIN); unsigned long uidDec, uidDecTemp; // для храниения номера метки в десятичном формате void setup() { Serial.begin(9600); Serial.println("Waiting for card..."); SPI.begin(); // инициализация SPI / Init SPI bus. mfrc522.PCD_Init(); // инициализация MFRC522 / Init MFRC522 card. } void loop() { q1(); if(millis()-timing>10000){ Serial.println(millis()); timing=millis(); } } void q1(void){ if ( ! mfrc522.PICC_IsNewCardPresent()) { return; } // Выбор метки if ( ! mfrc522.PICC_ReadCardSerial()) { return; } uidDec = 0; // Выдача серийного номера метки. for (byte i = 0; i < mfrc522.uid.size; i++) { uidDecTemp = mfrc522.uid.uidByte[i]; uidDec = uidDec * 256 + uidDecTemp; } Serial.println("Card UID: "); Serial.println(uidDec); // Выводим UID метки в консоль. mfrc522.PICC_HaltA(); // Stop reading }да, кстати, а плата ардуино какая? на ней случайно "Wavgat" нигде не написано?
Если 17 строку отключить ?
UNO (Китай) , "Wavgat" нигде не написано.
Если 17 строчку отключить то millis() работает правильно
а если на строке 18 поставить delay(100); ?
q1() при этом в строке 17 не отключать
а если на строке 18 поставить delay(100); ?
q1() при этом в строке 17 не отключать
Не помогло.
ну даж не знаю что сказать.
а на чипе на плате Уно что написано - можете прочитать?
а на чипе на плате Уно что написано - можете прочитать?
ATMEL
MEGA328P
U-TH
354730
1831KR1
а на чипе на плате Уно что написано - можете прочитать?
ATMEL MEGA328P
все ОК.
мысли кончились...
Повторюсь - работал с этим РФИД - никаких проблем с миллис у меня не было
Надо вставлять печать индекса строки и миллис после каждой строки в q1 что бы увидеть где что ломается...
Если отключить GND начинает нормально работать.