/* RFID-TCA9548A-6 Programmet leser av ID-koden til flere kort koblet til en multiplekser og sjekker plasseringen av kortene og knytter ett tall til ID-kortets kode Nils Kr. Rossing 16.03.23 */ #include #include "MFRC522_I2C.h" #include "TCA9548A.h" #define RST 3 long arrayRFID[8]; int arrayRFIDTall[8][2] = {{1000, 1}, {23668, 2}, {3000, 3}, { -30729, 4}, {5000, 5}, { -11834, 6}, {7000, 7}, {24180, 8}}; int T[8] = {0, 0, 0, 0, 0, 0, 0, 0}; 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-5"); } 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(); if (arrayRFID[4]*arrayRFID[5]*arrayRFID[6]*arrayRFID[7] != 0) { omstokking(); produkt2(); } 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(); } void omstokking() { for (int i = 0; i < 8; i++) { for (int j = 0; j < 8; j++) { if ((arrayRFID[i] == arrayRFIDTall[j][0]) && (arrayRFID[i] != 0)) T[i] = arrayRFIDTall[j][1]; } } } int produkt2() { // Regnestykket er AB * CD = Produkt eller (10*A+B)*(10*C+D) = Produkt eller (10*T(4)+T(5))*(10*T(6)+T(7))=Produkt int Prod2 = (10 * T[4] + T[5]) * (10 * T[6] + T[7]); Serial.print("Produkt 2: "); Serial.println(Prod2); return Prod2; }