Problème pour mémoriser tout le code de l'étiquette RFID

Bonjour tout le monde , mon problème est le suivant :

Quand je veux lire l'identifiant de mon étiquette RFID j'utilise la fonction RFID.read() , le problème avec cette fonction c'est qu'elle lit deux chiffres par exemple :
Si l'identifiant de l'étiquette RFID est 123456
et si j'exécute le programme suivant :
** if (RFID.available() > 0) // si l'étiquette est proche du lecteur**
** {**
** i = RFID.read(); // fonction de lecture**
** Serial.print(i, DEC); // écriture du code en décimal**
** }**
Dans un premier temps i sera égale à 12
Dans un second temps i sera égales à 34
Dans un dernier temps i sera égale à 56
même si dans le moniteur série vous aurez 123456 mais la dernière valeur de i sera 56
mais jamais je ne pourrai avoir i=123456 donc SVP est ce qu'il y'a une possibilité d'avoir i =123456 et merci d'avance .

bonjour déjà,
une petite recherche sur le net aurait donné plusieurs réponses comme

while(RFID.available()>0)
  {
      i = RFID.read();
      Serial.print(i, DEC);
      code += i;
Serial.print(code);
  }

Re , bein pour la solution que vous avez proposé le code est déformé avec des symboles incompréhensibles de plus pour ce que vous avez écrit
code += i ; ça n'a pas de sens je ne sais pas ce que ça va rapporté vu que code = code + i ( avec code=0 comme initialisation ) dans notre cas voilà ce qui se passerait si le code du tag est 123456 :
code = 0 + 12
code = 12 + 34
code = 46 + 56
à la fin code = 102 alors que nous on veut i =123456

regarde là, la réponse #9

http://forum.arduino.cc/index.php?topic=325953.0

tu y verra le code complet
dont ceci
void detection_RFID(){
if (monModuleRFID.isCard()) {
if (monModuleRFID.readCardSerial()) {
for(int i=0;i<=4;i++)
{
UID_=monModuleRFID.serNum*;_
_
}_
_
}*_

hichamlh:
Re , bein pour la solution que vous avez proposé le code est déformé avec des symboles incompréhensibles de plus pour ce que vous avez écrit
code += i ; ça n'a pas de sens je sais pas ce que ça va rapporté vu que code = code + i ( avec code=0 comme initialisation ) dans notre cas voilà ce qui ce passerai si le code du tag est 123456 :
code = 0 + 12
code = 12 + 34
code = 46 + 56
à la fin code = 102 alors que nous on veut i =123456

justement non ca ne donnerait pas 102 :wink:
de plus l'exemple est tiré d'un tuto officiel adapté à ton i

un exemple complet

#include <SoftwareSerial.h>
 
SoftwareSerial RFID = SoftwareSerial(4,5);

char character;
String our_id;

void setup() {
  Serial.begin(9600);
  RFID.begin(9600);
}
 
void loop() {
  
  while(RFID.available()>0)
  {
    character = RFID.read();
    our_id += character;
  }
  
  
   if (our_id.length() > 10) {
    our_id = our_id.substring(1,13);
      if (our_id == "0200A26A905A")
      {     
        Serial.print("ACCESS GRANTED  (id: ");
        Serial.print(our_id);
        our_id = "";
        Serial.println(" ) ");
       } 
       else  
       {
        Serial.print("ACCESS DENIED   (id: ");
        Serial.print(our_id);
        our_id = "";
        Serial.println(" ) ");
      }
   }  
 
    our_id = "";
    delay(1000);
}

Re dans son programme ça ne va pas influencer mais il y 'a bien une chose lorsqu'on met SoftwareSerial(4,5) ça veut dire que dans le code qui sera affiché dans le moniteur série on aura quelque chose de la forme 4 xxxxxxxxx 5 (avec 4 début d'émission et 5 fin de réception pour délimiter le code )
voici l'id de mon tag : 44968484855574850676665685
Lorsque j'exécute son programme j'obtiens un autre code qui est 1007023CBAD
Dans mon cas je veux le vrai code qui est 44968484855574850676665685 qui va être de type char .
J'ai déjà essayé d'autres méthodes voici une :
char data1 ;
char newtag[14] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0};
void loop()
{
...
if (RFID.available() > 0)
{

for (int z = 0 ; z < 14 ; z++)
{
data1 = RFID.read();
newtag[z] = data1;
}

RFID.flush();
}
Mais même dans ce cas j'obtiens le code erroné qui est 1007023CBAD.

hichamlh:
Re dans son programme ça ne va pas influencer mais il y 'a bien une chose lorsqu'on met SoftwareSerial(4,5) ça veut dire que dans le code qui sera affiché dans le moniteur série on aura quelque chose de la forme 4 xxxxxxxxx 5 (avec 4 début d'émission et 5 fin de réception pour délimiter le code

hein?
si on suis ton raisonnement, si on met SoftwareSerial(3, 8) ca va commencer par 3 et se terminer par 8?
ce sont les pins 4 et 5 ou 3 et 8 qui sont utilisées.