Forum: Mikrocontroller und Digitale Elektronik ID vom RFID CHip mit array aus funktion ermitteln


von Frank (Gast)


Lesenswert?

Hallo,
ich möchte mit einem Arduino und den RFID-RC522 die ID eines RFID-Chips 
ermitteln und ausgeben lassen. dazu habe ich mir eine Funktion 
geschrieben:
1
...
2
int * getID(){
3
  int ID[mfrc522.uid.size];
4
  for(byte i=0; i<mfrc522.uid.size; i++){
5
    ID[i] = mfrc522.uid.uidByte[i];
6
    Serial.print(ID[i],HEX);
7
    Serial.print(" ");
8
  }
9
  Serial.println(" ");
10
  return ID;
11
}
12
13
void loop(){
14
  // Look for new cards
15
  if(!mfrc522.PICC_IsNewCardPresent()){  // Wenn eine Karte in Reichweite ist
16
    return;        // gehe weiter...
17
  }
18
  // Select one of the cards
19
  if(!mfrc522.PICC_ReadCardSerial()){    // Wenn ein RFID-Sender ausgeählt wurde
20
    return;        // gehe weiter...
21
  }
22
  Serial.println("Please Enter the Number what you want to do.");
23
  Serial.println("1. get Chip-ID");
24
  Serial.println("2. exit");
25
  while(!Serial.available()){
26
  }
27
  if(Serial.available()){
28
    if (Serial.read() == '1'){
29
      int *ChipID;
30
      ChipID = getID();
31
      Serial.print("Die ID des RFID-TAGS lautet: ");
32
      //for(byte i=0; i<mfrc522.uid.size; i++){
33
      for(byte i=0; i<mfrc522.uid.size; i++){
34
        Serial.print(ChipID[i],HEX);
35
        Serial.print(" ");
36
      }
37
    }
38
    else if(Serial.read() == '2'){
39
      mfrc522.PICC_HaltA(); // Halt PICC
40
      mfrc522.PCD_StopCrypto1();// Stop encryption on PCD
41
    }
42
  }
43
  Serial.println(" ");
44
}

Die Ausgabe in der Funktin getID() zeigt mir die richtigen Werte an (94 
A 3B 529. In der loop-Funktion, kommt allerdings ganz andere Werte an 
(282 23 2F30 0). Was habe ich da falsch gemacht?

gruß

von NickNack (Gast)


Lesenswert?

Frank schrieb:
> int * getID(){
>   int ID[mfrc522.uid.size];
>   for(byte i=0; i<mfrc522.uid.size; i++){
>     ID[i] = mfrc522.uid.uidByte[i];
>     Serial.print(ID[i],HEX);
>     Serial.print(" ");
>   }
>   Serial.println(" ");
>   return ID;
> }

Du gibst das LOKALE ID-Array zurück!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.