/* RFID-TCA9548A-5B Programmet leser av ID-koden til flere kort koblet til en multiplekser og skriver ID-kodene ut som fire HEX tall Nils Kr. Rossing 12.03.23 */ #include #include "MFRC522_I2C.h" #include "TCA9548A.h" #define RST 3 long arrayRFID[8]; long val; TCA9548A I2CMux; // Address can be passed into the constructor MFRC522 mfrc522(0x28, RST); // Deklarer et MFRC522 objekt. void setup() { Serial.begin(9600); I2CMux.begin(Wire); // Wire instance is passed to the library for (int i = 4; i < 8; i++) { I2CMux.openChannel(i); delay(20); mfrc522.PCD_Init(); delay(20); I2CMux.closeChannel(i); } I2CMux.closeAll(); // Lokk alle kanalene før start Serial.println("RFID-TCA9548A-4"); } void loop() { for (int i = 4; i < 8; i++) { arrayRFID[i] = 0; I2CMux.openChannel(i); readRFID(i); readRFID(i); I2CMux.closeChannel(i); } Serial.println("------------------"); printArrayRFID(); delay(100); } void readRFID(int i) { if ( mfrc522.PICC_IsNewCardPresent() && mfrc522.PICC_ReadCardSerial() ) { // Skriv ut UID val = convertFourByteToLong(mfrc522.uid.uidByte); arrayRFID[i] = val; } } long convertFourByteToLong(byte UID[4]) { long val = 0; val += UID[0]; val += UID[1]; val += UID[2]; val += UID[3]; return val; } void printArrayRFID() { for (int i = 0; i < 8; i++) { Serial.print("RFID nr: "); Serial.print(i); Serial.print(": "); Serial.println(arrayRFID[i]); } Serial.println(); }