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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
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.