Arduino Forum

International => Français => Topic started by: Vladieu47 on Apr 02, 2019, 03:44 pm

Title: Projet voiture sans clef [Aide]
Post by: Vladieu47 on Apr 02, 2019, 03:44 pm
Bonjour, actuellement en 3 ème année de licence EEA et venant d'un BTS électrotechnique, j'éprouve quelque difficulté à la programmation de mon projet sur Arduino ( une première pour moi).

Mon projet global consiste à ouvrir une porte en la touchant seulement grâce à la clef de la voiture qui émet un code qui doit être comparé avec celui de la voiture.

Pour le moment j'en suis au décodage de la trame reçu par la voiture avec l'Arduino

La trame est composé de 5 doubles bits d'adresses et 4 double bits de donnés qui correspond à l'utilisateur ( composé de 2 front montant pour un bit soit 18 front montant au total)

les données (4 doubles bits de la fin doivent seulement être lu)
les adresses (5 premiers double bit doivent être comparé plusieurs fois a la suite à une variable interne)
-1 front montant court = 0
-1 front montant long=1

Comme sur la photo.

(https://www.cjoint.com/c/IDcnwDuucHE)
https://www.cjoint.com/c/IDcnwDuucHE

Pour le problème, j'arrive à lire la trame mais pas à la dissocier car elle est envoyée en continue et il faudrait que je classe les données dans un tableau (18 cases) une fois la fin du signal bas qui dure 15ms.


Voici mon code actuel si vous avez des conseilles je suis preneur! Merci d'avance







Code: [Select]

 #include <Wire.h>
#include "rgb_lcd.h"

float X[18];
const int capteur = 11;
int t;
int stop=0;
int a;
void setup()
{
    pinMode(capteur,INPUT);
    Serial.begin(9600);
   
}
void loop()
{

  unsigned long dureebasse = pulseIn(capteur,LOW);
  if (dureebasse<10000)
  {
    stop=1;
    Serial.println("stop");
    int i;
    i=0;
    if (stop==1)
    {
      unsigned long dureehaute = pulseIn(capteur,HIGH);
     
      while(i<17)
      {
        if(dureehaute>0)
        {
          i++;
        }
        unsigned long dureehaute = pulseIn(capteur,HIGH);
        if(dureehaute<1170)
        {
          t=0;
        }
        else
        {
          t=1;
        }
        Serial.println(dureehaute);
        Serial.println(t);
      }

    }
  }
  else if (dureebasse>5000)
  {
    stop=0;
  }     
}