| 12
 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
} | 
Partager