Airsoft rfid point counter

Hi i like playing airsoft and want do something for me group but i am green in understending arduino want creat point counter with rfid tags. It's simple you pick up rfid tag (color team tag) and you got point or points. So i do something like this

#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);
  lcd.print("Made With Beer");
  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();
}

but ppl can scan many time 1 tag so this will be stupid. I dont understand how to change or remove uid from array after was scanned and adding point (that is beyond me understanding)
and i was trying short the code ( i want use at last 50 rfid tags) so i put
for( a =0; a<=4; a++) before if and change condition

 rfid.uid.uidByte[0] ==poprawna_karta2[0][a]&&
 rfid.uid.uidByte[1]==poprawna_karta2[1][a]&&
 rfid.uid.uidByte[2]==poprawna_karta2[2][a]&&
 rfid.uid.uidByte[3]==poprawna_karta2[3][a]

but that dosen't work :confused: (work only first tag)
can some help me

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.