title: how can I store the uid of my rfid card in a string?
body: <p>I am a big noob at C++ and arduino, but that doesn't stop me from attempting cool projects. I have an arduino mega 2560 v3. I am tying to make a simple rfid scanner so when the right card is scanned, it closes my circuit. Here is my code, it is from the tutorial guide included in my kit, the most complete starter kit for the mega 2560 by Elegoo. </p>
  
  <pre><code>//www.elegoo.com
  //2016.12.09
  
  /*
   * --------------------------------------------------------------------------------------------------------------------
   * Example to change UID of changeable MIFARE card.
   * --------------------------------------------------------------------------------------------------------------------
   * This is a MFRC522 library example; for further details and other examples see: https://github.com/miguelbalboa/rfid
   * 
   * This sample shows how to set the UID on a UID changeable MIFARE card.
   * NOTE: for more informations read the README.rst
   * 
   * @author Tom Clement
   * @license Released into the public domain.
   *
   * Typical pin layout used:
   * -----------------------------------------------------------------------------------------
   *             MFRC522      Arduino       Arduino   Arduino    Arduino          Arduino
   *             Reader/PCD   Uno           Mega      Nano v3    Leonardo/Micro   Pro Micro
   * Signal      Pin          Pin           Pin       Pin        Pin              Pin
   * -----------------------------------------------------------------------------------------
   * RST/Reset   RST          9             5         D9         RESET/ICSP-5     RST
   * SPI SS      SDA(SS)      10            53        D10        10               10
   * SPI MOSI    MOSI         11 / ICSP-4   51        D11        ICSP-4           16
   * SPI MISO    MISO         12 / ICSP-1   50        D12        ICSP-1           14
   * SPI SCK     SCK          13 / ICSP-3   52        D13        ICSP-3           15
   */
  
  #include &lt;SPI.h&gt;
  #include &lt;MFRC522.h&gt;
  
  #define RST_PIN   5     // Configurable, see typical pin layout above
  #define SS_PIN    53   // Configurable, see typical pin layout above
  
  MFRC522 mfrc522(SS_PIN, RST_PIN);   // Create MFRC522 instance
  
  /* Set your new UID here! */
  #define NEW_UID {0xDE, 0xAD, 0xBE, 0xEF}
  
  MFRC522::MIFARE_Key key;
  
  void setup() {
    Serial.begin(9600);  // Initialize serial communications with the PC
    while (!Serial);     // Do nothing if no serial port is opened (added for Arduinos based on ATMEGA32U4)
    SPI.begin();         // Init SPI bus
    mfrc522.PCD_Init();  // Init MFRC522 card
    Serial.println(F("Warning: this example overwrites the UID of your UID changeable card, use with care!"));
  
    // Prepare key - all keys are set to FFFFFFFFFFFFh at chip delivery from the factory.
    for (byte i = 0; i &lt; 6; i++) {
      key.keyByte[i] = 0xFF;
    }
  }
  
  // Setting the UID can be as simple as this:
  //void loop() {
  //  byte newUid[] = NEW_UID;
  //  if ( mfrc522.MIFARE_SetUid(newUid, (byte)4, true) ) {
  //    Serial.println("Wrote new UID to card.");
  //  }
  //  delay(1000);
  //}
  
  // But of course this is a more proper approach
  void loop() {
  
    // Look for new cards, and select one if present
    if ( ! mfrc522.PICC_IsNewCardPresent() || ! mfrc522.PICC_ReadCardSerial() ) {
      delay(50);
      return;
    }
  
    // Now a card is selected. The UID and SAK is in mfrc522.uid.
  
    // Dump UID
    Serial.print(F("Card UID:"));
    for (byte i = 0; i &lt; mfrc522.uid.size; i++) {
      Serial.print(mfrc522.uid.uidByte[i] &lt; 0x10 ? " 0" : " ");
      //String userid = mfrc522.uid.uidByte[i] &lt; 0x10 ? " 0" : " ";
      Serial.print(mfrc522.uid.uidByte[i], HEX);
    } 
    Serial.println();
  
    // Dump PICC type
  //  MFRC522::PICC_Type piccType = mfrc522.PICC_GetType(mfrc522.uid.sak);
  //  Serial.print(F("PICC type: "));
  //  Serial.print(mfrc522.PICC_GetTypeName(piccType));
  //  Serial.print(F(" (SAK "));
  //  Serial.print(mfrc522.uid.sak);
  //  Serial.print(")\r\n");
  //  if (  piccType != MFRC522::PICC_TYPE_MIFARE_MINI 
  //    &amp;&amp;  piccType != MFRC522::PICC_TYPE_MIFARE_1K
  //    &amp;&amp;  piccType != MFRC522::PICC_TYPE_MIFARE_4K) {
  //    Serial.println(F("This sample only works with MIFARE Classic cards."));
  //    return;
  //  }
  
    // Set new UID
    byte newUid[] = NEW_UID;
    if ( mfrc522.MIFARE_SetUid(newUid, (byte)4, true) ) {
      Serial.println(F("Wrote new UID to card."));
    }
  
    // Halt PICC and re-select it so DumpToSerial doesn't get confused
    mfrc522.PICC_HaltA();
    if ( ! mfrc522.PICC_IsNewCardPresent() || ! mfrc522.PICC_ReadCardSerial() ) {
      return;
    }
  
    // Dump the new memory contents
    Serial.println(F("New UID and contents:"));
    mfrc522.PICC_DumpToSerial(&amp;(mfrc522.uid));
  
    delay(2000);
  }
  </code></pre>
  
  <p>In the for loop that prints the uid, I tried putting this line of code to store the uid in a string. <code>String userid = mfrc522.uid.uidByte[i] &lt; 0x10 ? " 0" : " ";</code> But that didn't work. </p>
  
  <p>So just a quick recap of what I could use help on is that I need to store the uid in a string, have an if statement to determine if the uid will let me through, and how having the uid accepted will close a circuit. I don't have a specific circuit in mind, but I will make one once this issue is solved. Thanks. Sorry if the answer is obvious and this is a dumb question. Also if it helps to answer my question easier, you can use my uid, which is 93 D1 4E 49, as an example.</p>