Я новичок в кодировании Arduino и c ++, я работаю над этим проектом весь день, и у меня ничего не получается. Я пытаюсь сравнить результаты считывателя RFID с результатами, поступающими из базы данных, но получаю сообщение об ошибке.
Я пробовал много разных способов исправить это, но библиотека firebase не имеет функции getbyte
.
int UID1 = 2;
int UID2 = 2;
int UID3 = 2;
int UID4 = 2;
int UID5 = 2;
int UID6 = 2;
byte nuidPICC[4];
constexpr uint8_t RST_PIN = 5; // Configurable, see typical pin layout above
constexpr uint8_t SS_PIN = 4; // Configurable, see typical pin layout above
MFRC522 rfid(SS_PIN, RST_PIN); // Instance of the class
MFRC522::MIFARE_Key key;
// Init array that will store new NUID
void setup() {
Serial.begin(115200);
SPI.begin(); // Init SPI bus
rfid.PCD_Init(); // Init MFRC522
for (byte i = 0; i < 6; i++) {
key.keyByte[i] = 0xFF;
}
delay(2000);
Serial.println('\n');
wifiConnect();
Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
delay(10);
}
void loop() {
// Look for new cards
if (!rfid.PICC_IsNewCardPresent())
return;
// Verify if the NUID has been readed
if (!rfid.PICC_ReadCardSerial())
return;
Serial.print(F("PICC type: "));
MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);
Serial.println(rfid.PICC_GetTypeName(piccType));
// Check is the PICC of Classic MIFARE type
if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI &&
piccType != MFRC522::PICC_TYPE_MIFARE_1K &&
piccType != MFRC522::PICC_TYPE_MIFARE_4K) {
Serial.println(F("Your tag is not of type MIFARE Classic."));
return;
}
if (rfid.uid.uidByte[0] != nuidPICC[0] ||
rfid.uid.uidByte[1] != nuidPICC[1] ||
rfid.uid.uidByte[2] != nuidPICC[2] ||
rfid.uid.uidByte[3] != nuidPICC[3]) {
Serial.println(F("A new card has been detected."));
// Store NUID into nuidPICC array
for (byte i = 0; i < 4; i++) {
nuidPICC[i] = rfid.uid.uidByte[i];
}
Serial.println(F("The NUID tag is:"));
Serial.print(F("UID: "));
printDec(rfid.uid.uidByte, rfid.uid.size);
Serial.println();
} else {
Serial.println(F("Card read previously."));
}
// Halt PICC
rfid.PICC_HaltA();
// Stop encryption on PCD
rfid.PCD_StopCrypto1();
Serial.print(Firebase.getString("UID1") + "\n");
Serial.print(Firebase.getString("UID2") + "\n");
Serial.print(Firebase.getString("UID3") + "\n");
Serial.print(Firebase.getString("UID4") + "\n");
Serial.print(Firebase.getString("UID5") + "\n");
Serial.print(Firebase.getString("UID6") + "\n");
analogWrite(UID1, Firebase.getString("UID1").toInt());
analogWrite(UID2, Firebase.getString("UID2").toInt());
analogWrite(UID3, Firebase.getString("UID3").toInt());
analogWrite(UID4, Firebase.getString("UID4").toInt());
analogWrite(UID5, Firebase.getString("UID5").toInt());
analogWrite(UID6, Firebase.getString("UID6").toInt());
delay(3000);
if (WiFi.status() != WL_CONNECTED) {
wifiConnect();
}
delay(10);
if (Firebase.getString("UID1") = rfid.uid.uidByte()) {
Serial.print("Match")
}
}
Вот моя ошибка:
fireabse-alpha1: 118: 22: ошибка: несовместимые типы при назначении
'String' to 'byte [10] {aka unsigned char [10]}'
if (rfid.uid.uidByte = Firebase.getString ("UID1")) {
^
fireabse-alpha1: 120: 1: ошибка: ожидается ';' до '}' токен
}
^