Нужна помощь в понимании некоторых кодов - PullRequest
0 голосов
/ 01 мая 2019

Я использую модуль RFID RC522 в Arduino для кода: всякий раз, когда метка RFID близка к считывателю, он будет читать метку no с текущей меткой времени.Но мне нужна помощь в понимании кода построчно.Я понял несколько строк, которые прокомментированы в коде, но остальные мне нужна помощь.Спасибо

#include <RFID.h>
#include <SPI.h>
#define SS_PIN 10
#define RST_PIN 9

RFID rfid(SS_PIN, RST_PIN);
int serNum[4];
String cardno;
int interval = 15000; // millisec
long now = 0;
long lasttime = millis(); //millis() no.of millisec the sketch was runnning
String readerID = "100"; // This is the reader ID 

void setup() {
    Serial.begin(9600); //setting data rate in bits per second 9600
    SPI.begin();
    rfid.init();
}

void loop() {
    now = millis();
    if (rfid.isCard()) {
        if (rfid.readCardSerial()) {
            lasttime = now;
            cardno = String(rfid.serNum[0]) +
            String(rfid.serNum[1]) +
            String(rfid.serNum[2]) +
            String(rfid.serNum[3]) +
            String(rfid.serNum[4]);

            Serial.print(readerID);
            Serial.print(":");
            Serial.println(cardno); //printing the cardno in the serial monitor
        }
    }
    rfid.halt();
    delay(1000);
}

1 Ответ

0 голосов
/ 02 мая 2019

В вашем коде есть неиспользуемые переменные. Давайте избавимся от них, чтобы это было менее запутанным. Я также добавил комментарии, которые объясняют операторы if.

#include <RFID.h>
#include <SPI.h>
#define SS_PIN 10
#define RST_PIN 9
RFID rfid(SS_PIN, RST_PIN);
String cardno;
String readerID = "100";

void setup() {
    Serial.begin(9600);
    SPI.begin();
    rfid.init();
}

void loop() {
    if (rfid.isCard()) { // Look for a card. If found, return true.
        if (rfid.readCardSerial()) { // Read the serial number of the card. if successful, return true. 
            cardno = String(rfid.serNum[0]) +
            String(rfid.serNum[1]) +
            String(rfid.serNum[2]) +
            String(rfid.serNum[3]) +
            String(rfid.serNum[4]);
            Serial.print(readerID);
            Serial.print(":");
            Serial.println(cardno);
        }
    }
    rfid.halt();
    delay(1000);
}

Исходя из вашего комментария, я думаю, вы хотите понять, как реализован класс RFID. Я предлагаю посмотреть на RFID.h и RFID.cpp.

В классе RFID есть массив с именем serNum. Я предполагаю, что когда вы звоните readCardSerial(), экземпляр RFID пытается сохранить номер карты в этом массиве. Если операция прошла успешно, возвращается true.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...