Bonjour,

J'ai réalisé un code sur Arduino qui marchait parfaitement sur une carte UNO et qui provoque cette erreur sur une carte D1 après avoir fonctionné parfaitement (au passage de la main devant le capteur ultrason et de la carte rfid avec le bon identifiant devant le lecteur rfid)

Distance: 1877.82Voiture non présente
Distance: 41.31Voiture présente
Distance: 34.34Voiture garée
Pas de données détectées
Distance: 36.89Voiture présente
Distance: 1849.77Voiture partie
Distance: 1853.85Voiture non présente
Distance: 1057.06Voiture non présente
Distance: 34.34Voiture présente
Distance: 68.17Voiture garée
Initialisation.....
Communication réussie
Le fichier bdd.txt existe
Ouverture du fichier en mode lecture
Fichier ouvert
12658459865897851256845987
24950484853486951685255533
pas de correspondance
35452354568745232458654568
24950484853486951685255533
pas de correspondance
10941521687465135756789878
24950484853486951685255533
pas de correspondance
78945123565165594651657886
24950484853486951685255533
pas de correspondance
56487984521365600465415146
24950484853486951685255533
pas de correspondance
12357684156579878654165468
24950484853486951685255533
pas de correspondance
10241320484516879846512321
24950484853486951685255533
pas de correspondance
10210123245646515789416546
24950484853486951685255533
pas de correspondance
12565106511561516516515153
24950484853486951685255533
pas de correspondance
45615643213553165746515876
24950484853486951685255533
pas de correspondance
15634563215843216874321003
24950484853486951685255533
pas de correspondance
20461357632157845414567655
24950484853486951685255533
pas de correspondance
24950484853486951685255533
24950484853486951685255533
Le véhicule garé est bien en son droit

Soft WDT reset

ctx: cont
sp: 3ffefbf0 end: 3ffefeb0 offset: 01b0

>>>stack>>>
3ffefda0: 0000ad90 3ffeea5c 00000000 4010053d
3ffefdb0: 0000ad84 00000a20 00000144 00000144
3ffefdc0: 00000000 3ffe84cc 00002120 3ffefe20
3ffefdd0: 0000ad90 3ffeea5c 3ffeea5c 40204d57
3ffefde0: 0000ad80 00000001 3ffeea5c 40204da3
3ffefdf0: 40104b30 008b50f5 3ffeea5c 40204e87
3ffefe00: 3ffeea68 3ffeea5c 3ffeedc8 3ffeea74
3ffefe10: 3ffeea68 3ffeea5c 3ffeedc8 40204ec0
3ffefe20: 3ffe00ff 00001388 00001388 40202ebd
3ffefe30: 3ffeea68 3ffeea5c 3ffeedc8 4020233f
3ffefe40: 3ffe8a20 00000000 000003e8 3fff1154
3ffefe50: 2e646462 00747874 00000000 3ffeee00
3ffefe60: 3fff0de4 00000001 3ffeedc8 40204864
3ffefe70: 3ffeea9c 0000001c 00000000 40201404
3ffefe80: 00000000 00000000 00000001 3ffeee80
3ffefe90: 3fffdad0 00000000 3ffeee78 4020505c
3ffefea0: feefeffe feefeffe 3ffeee90 4010070c
<<<stack<<<
H!⸮⸮⸮⸮⸮`⸮
Soft WDT reset

ctx: cont
sp: 3ffefbf0 end: 3ffefeb0 offset: 01b0

>>>stack>>>
3ffefda0: 0000ad90 3ffeea5c 00000000 4010053d
3ffefdb0: 0000ad84 00000a20 00000144 00000144
3ffefdc0: 00000000 3ffe84cc 00002120 3ffefe20
3ffefdd0: 0000ad90 3ffeea5c 3ffeea5c 40204d57
3ffefde0: 0000ad80 00000001 3ffeea5c 40204da3
3ffefdf0: 40104b30 008b50f5 3ffeea5c 40204e87
3ffefe00: 3ffeea68 3ffeea5c 3ffeedc8 3ffeea74
3ffefe10: 3ffeea68 3ffeea5c 3ffeedc8 40204ec0
3ffefe20: 3ffe00ff 00001388 00001388 40202ebd
3ffefe30: 3ffeea68 3ffeea5c 3ffeedc8 4020233f
3ffefe40: 3ffe8a20 00000000 000003e8 3fff1154
3ffefe50: 2e646462 00747874 00000000 3ffeee00
3ffefe60: 3fff0de4 00000001 3ffeedc8 40204864
3ffefe70: 3ffeea9c 0000001c 00000000 40201404
3ffefe80: 00000000 00000000 00000001 3ffeee80
3ffefe90: 3fffdad0 00000000 3ffeee78 4020505c
3ffefea0: feefeffe feefeffe 3ffeee90 4010070c
<<<stack<<<
H!⸮⸮⸮⸮⸮`⸮


[/B]


Voici le code en question

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
#include <SoftwareSerial.h>
#include <SPI.h> //Librairie pour la communication SPI ??????????????????????????
#include <SD.h>  //Librairie pour la communication avec la carte SD
 
//Déclaration
 
SoftwareSerial lecteurRFID(D5, D6); //Définition du port du lecteur RFID
 
bool IdentifiantValide = false;
 
//Variables pour les LED
const int LV = D2;
const int LR = D8;
 
//Variables pour le capteur ultrason
const byte TRIG = D4; // Broche TRIGGER
const byte ECHO = D3;    // Broche ECHO
const unsigned long MEASURE_TIMEOUT = 25000UL; // 25ms = ~8m à 340m/s //COMPRENDRE BIEEEEEEEEEEEN
const float SOUND_SPEED = 340.0 / 1000;
 
//Variables de stockage
File BDD; //Fichier contenant la base de donnée
String identifiant = ""; //variable de stockage de l'identifiant lu sur la carte RFID
String test = ""; //variable de stockage des identifiants sur la carte BDD de la carte SD
char c = 0; //variable de lecture
 
void setup()
{
  lecteurRFID.begin(9600);//initialisation de la communication avec le port SoftSerial?????????
  Serial.begin(9600);//initialisation de la communication avec le moniteur série
  pinMode(LV, OUTPUT); //initialisation de la broche LV=4 comme sortie
  pinMode(LR, OUTPUT); //initialisation de la broche LR=8 comme sortie
  pinMode(TRIG, OUTPUT);//initialisation de la broche TRIG=3 comme sortie
  digitalWrite(TRIG, LOW); //La broche TRIGGER doit être à LOW au repos
  pinMode(ECHO, INPUT);//initialisation de la broche ECHO=2 comme sortie
}
void loop()
{
  //////////////1. DETECTION PRESENCE DU VEHICULE
  //1ère détection
  /* 1. Lance une mesure de distance en envoyant une impulsion HIGH de 10µs sur la broche TRIGGER */
  digitalWrite(TRIG, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG, LOW);
  /* 2. Mesure le temps entre l'envoi de l'impulsion ultrasonique et son écho (si il existe) */
long measure= measure = pulseIn(ECHO, HIGH, MEASURE_TIMEOUT);
float distance_mm = measure / 2.0 * SOUND_SPEED; // ???????????? Calcul la distance à partir du temps mesuré 
  /* 3. Calcul la distance à partir du temps mesuré */
  Serial.print("Distance: ");//ENLEVEEEEEEEEEEER
  Serial.print(distance_mm);//ENLEVEEEEEEEEEEEEEEEER
 
  if (distance_mm  < 700)//On teste la présence d'un véhicule à moins de 7cm (portée de la carte RFID)????????????
  {
    Serial.println("Voiture présente");
 
    //2ème détection : on vérifie que la voiture soit toujours là après 5 secondes pour être sûrs que l'automobiliste s'est bien garé
    delay(5000);
 
    digitalWrite(TRIG, HIGH);
    delayMicroseconds(10);
    digitalWrite(TRIG, LOW);
 
    long measure2 = pulseIn(ECHO, HIGH, MEASURE_TIMEOUT);
    float distance2_mm = measure2 / 2.0 * SOUND_SPEED; //
    Serial.print("Distance: ");//ENLEVEEEEEEEEEEER
    Serial.print(distance2_mm);//ENLEVEEEEEEEEEEEEEEEER
 
 
 ////////////// PRESENCE D'UN VEHICULE
    if (distance2_mm  < 700)
    {
      Serial.println("Voiture garée");
        //////////////2. LECTURE DE L'IDENTIFIANT SUR LA CARTE RFID
 
  if (lecteurRFID.available())// if date is coming from software serial port ==> data is coming from SoftSerial shield
  {
    while (identifiant.length() < 26) //tant que notre variable n'a pas la taille d'un identifiant RFID (26 caractères)
    {
      identifiant += lecteurRFID.read();     //On écrit l'identifiant dans notre variable de stockage
    }
    /////////////2. VERIFICATION DE L'IDENTIFIANT : on cherche à savoir si l'identifiant lu sur la carte RFID est bien celui d'un handicapé
 
    Serial.println("Initialisation.....");
    if (!SD.begin(D10)) {//test de la communication avec la carte sur le pin 10 (CS) ////DECLARER AUTRE PART????????????????????????????????,
      Serial.println("Communication impossible");
      return; //Arrête le programme
    }
    Serial.println("Communication réussie");
 
    if (SD.exists("bdd.txt")) {
      Serial.println("Le fichier bdd.txt existe");
    } else {
      Serial.println("Le fichier bdd.txt n'existe pas");
      return; //Arrête le programme ???????????????????????????????????????
    }
    //Lecture du fichier
    Serial.println("Ouverture du fichier en mode lecture");
    if (!(BDD = SD.open("bdd.txt", FILE_READ))) { //test d'ouverture du fichier ??????????
      Serial.println("Erreur de fichier");
      return; //Arrête le programme ????????tester ca en changeant le nom du fichier
    }
    Serial.println("Fichier ouvert");
 
    while (c != -1) {//Tant qu'il ya des
      c = BDD.read(); //on lit un caractère
      if (c == ':') { //si : on affiche la valeur de test
        Serial.println(test); //affichage sur le moniteur ENLEVEEEEEER
        Serial.println(identifiant);// ENLEVEEEEEEEEEEEEER
 
        //IDENTIFIANT VALIDE :
        if (test == identifiant) {
          IdentifiantValide = true; //Le booléen est mis à jour pour signifier que l'identifiant est valide
          Serial.println("Le véhicule garé est bien en son droit");//ENLEVEEEEEEEEEEEER
          digitalWrite(LV, HIGH); //On allume la LED verte pour signifier à l'automobiliste qu'il est en son droit
          delay(5000);//On laisse la LED allumée 1 seconde ???????????????
          digitalWrite(LV, LOW); //On éteint la LED
          test = ""; //On vide la variable de stockage de l'identifiant lu sur la carte SD
        }
        else {
          Serial.println("pas de correspondance");//ENLEVEEEEEEEEER
          test = ""; //On vide la variable de stockage de l'identifiant lu sur la carte SD
        }
      }
      else { // sinon
        test += c; //on ajoute le caractère à la chaîne
      }
    }
    //IDENTIFIANT INVALIDE;
    if (IdentifiantValide == false) //Si l'identifiant lu sur la carte RFID n'est pas valide
    {
      Serial.println("Le véhicule est en infraction");//ENLEVEEEEEEEEEEEER
      digitalWrite(LR, HIGH); //On allume la LED rouge58 pour signifier à l'automobiliste qu'il est en son droit
      delay(5000);//On laisse la LED allumée 1 seconde ???????????????
      digitalWrite(LR, LOW); //On éteint la LED
    }
    BDD.close(); //Fermeture du fichier
    Serial.println("Fichier fermé");
    identifiant = ""; //On vide la variable de stockage de l'identifiant lu sur la carte RDIF
    c = 0; //On réinitialise la variable de lecture
    IdentifiantValide = false; //On réinitialise le booléen (on le remet par défaut en mode :"identifiant invalide"
  }
  else {
    Serial.println("Pas de données détectées");//ENLEVEEEEEER
  }
    }
    else
      Serial.println("Voiture partie");
  }
  else
  {
    Serial.println("Voiture non présente");
  }
  delay(1000);//Le capteur à ultrason vérifiera la présence de voitures toutes les secondes
}
Merci d'avance pour votre aide