Kod:
if
( rfid.uid.uidByte[0] == poprawna_karta2[0][0]&&
rfid.uid.uidByte[1] == poprawna_karta2[1][0]&&
rfid.uid.uidByte[2] == poprawna_karta2[2][0]&&
rfid.uid.uidByte[3] == poprawna_karta2[3][0]
||
rfid.uid.uidByte[0] == poprawna_karta2[0][1]&&
rfid.uid.uidByte[1] == poprawna_karta2[1][1]&&
rfid.uid.uidByte[2] == poprawna_karta2[2][1]&&
rfid.uid.uidByte[3] == poprawna_karta2[3][1]
||
rfid.uid.uidByte[0] == poprawna_karta2[0][2]&&
rfid.uid.uidByte[1] == poprawna_karta2[1][2]&&
rfid.uid.uidByte[2] == poprawna_karta2[2][2]&&
rfid.uid.uidByte[3] == poprawna_karta2[3][2]
||
rfid.uid.uidByte[0] == poprawna_karta2[0][3]&&
rfid.uid.uidByte[1] == poprawna_karta2[1][3]&&
rfid.uid.uidByte[2] == poprawna_karta2[2][3]&&
rfid.uid.uidByte[3] == poprawna_karta2[3][3]
)
próbowałem dać przed pętlą if for( a =0; a<=4; a++) i wpisałem == poprawna_karta2[0][a] ale niestety działa tylko 1 tag to przez pętlę for?? Oraz chciał bym się dowiedzieć jak usunąć/ zmienić coś z tablicy( z tego co zrozumiałem jak wartość to -1 to jest to pomijane)
Kod:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <SPI.h>
#include <MFRC522.h>
#define BACKLIGHT_PIN 3
LiquidCrystal_I2C lcd(0x27,16,2);
#define SS_PIN 10
#define RST_PIN 9
unsigned long punkty;
int delayTime = 1500;
int a;
MFRC522 rfid(SS_PIN, RST_PIN); // Instance of the class
const byte poprawna_karta2[4][4] = { {0x93,0xD3,0xB3,0xE3,},
{0x7D,0xC0,0x8E,0xD4},
{0xE9,0xD4,0x9F,0x12},
{0x1B,0x1B,0xAC,0x1D} };
void setup() {
Serial.begin(9600);
SPI.begin(); // Init SPI bus
rfid.PCD_Init(); // Init MFRC522
lcd.init();
lcd.backlight();
lcd.home();
lcd.print ("Grabierz");
lcd.setCursor(0,1);
delay(3000);
lcd.clear();
}
void loop() {
lcd.setCursor(3,0);
lcd.print("Wynik:");
lcd.setCursor(7,1);
lcd.print(punkty);
// Look for new card
if ( ! rfid.PICC_IsNewCardPresent())
return;
// Verify if the NUID has been readed
if ( ! rfid.PICC_ReadCardSerial())
return;
if
( rfid.uid.uidByte[0] == poprawna_karta2[0][0]&&
rfid.uid.uidByte[1] == poprawna_karta2[1][0]&&
rfid.uid.uidByte[2] == poprawna_karta2[2][0] &&
rfid.uid.uidByte[3] == poprawna_karta2[3][0]
||
rfid.uid.uidByte[0] == poprawna_karta2[0][1]&&
rfid.uid.uidByte[1] == poprawna_karta2[1][1]&&
rfid.uid.uidByte[2] == poprawna_karta2[2][1] &&
rfid.uid.uidByte[3] == poprawna_karta2[3][1]
||
rfid.uid.uidByte[0] == poprawna_karta2[0][2]&&
rfid.uid.uidByte[1] == poprawna_karta2[1][2]&&
rfid.uid.uidByte[2] == poprawna_karta2[2][2] &&
rfid.uid.uidByte[3] == poprawna_karta2[3][2]
||
rfid.uid.uidByte[0] == poprawna_karta2[0][3]&&
rfid.uid.uidByte[1] == poprawna_karta2[1][3]&&
rfid.uid.uidByte[2] == poprawna_karta2[2][3] &&
rfid.uid.uidByte[3] == poprawna_karta2[3][3]
)
{
lcd.clear();
lcd.setCursor(3,0);
lcd.print("Przyznano");
lcd.setCursor(3,1);
lcd.print("2 punkty!!");
delay(delayTime);
lcd.clear();
punkty=punkty+2;
return;
}
else{
lcd.clear();
lcd.setCursor(2,0);
lcd.print("Niepoprawna");
lcd.setCursor(3,1);
lcd.print("Karta!!!");
delay(delayTime);
lcd.clear();
return;
}
// Halt PICC
rfid.PICC_HaltA();
// Stop encryption on PCD
rfid.PCD_StopCrypto1();
}
Kod:
for( int i =0; i<2; i++)//
{
bool czyToDobraKarta=1;
for (( int j =0; j<4; j++) (tu też miałeś błąd <=)
{
if (! rfid.uid.uidByte[j] == poprawna_karta2[j][i])
{
czyToDobraKarta=0; //
}
//tutaj jeśli czyToDobraKarta to można przerwać, będzie 0 gdy w sprawdzanych bajtach choć jeden nie pasował
}
}