Arduino Forum

International => Français => Topic started by: 200sx200 on May 31, 2017, 01:08 pm

Title: Projet Control module
Post by: 200sx200 on May 31, 2017, 01:08 pm
Bonjour tous le monde :)

j'ai découvert arduino il ya une semaine en cherchant un moyen de pouvoir controller une boite de vitesse automatique (non récente). Je me suis donc mis à suivre des cours, tuto mais même si la logique peut être simple ce n'est pas du tous le cas.

Je vous explique explique le projet:

1-La carte arduino connecté au moteur reçois les informations nécessaire au bon fonctionnement .

2-Selon les informations reçues (RPM, Vitesse, Position pédale) => action sur des solenoides (3 +2 ) en 12V
(Les positions des solenoides controles le rapport de vitesse) example si :
        -Le 1er en ON, le 2eme en OFF,le 3eme en OFF = la vitesse 1
        -Si  1er en ON, le 2eme en OFF,le 3eme en ON  = la vitesse 2 ect.... 4 vitesse au total.

3-Un afficheur 7 segments afficherais le numéro de vitesse (mini 1.2.3.4 max)

4-Deux boutons poussoirs pour changer les rapports toujours de 1 à 4 maximum .

Voici un Schéma approximatif de la chose :
(https://scontent-cdg2-1.xx.fbcdn.net/v/t31.0-8/18839500_10209515256503858_1971142299841012094_o.jpg?oh=830f26a0e2edd2093b40a36925c653c0&oe=59A5FD32)


Maintenant ce que j'ai fais:

J'ai trouvé sur internet des codes pour afficher les informations moteur en temps réel (via la prise diag):
arduino-consult.ino (http://arduino.cybrax-computers.com/files/arduino-consult.ino)
Code à modifier car pas besoin de l'écran et je possède une carte Méga.

De ce que j'ai compris je seulement branché les pins Rx et Tx pour recevoir les infos.
(https://scontent-cdg2-1.xx.fbcdn.net/v/t31.0-8/18766652_10209515392187250_7171860791018344046_o.jpg?oh=3ac15cd5f4d8442d837fe61aff4f48e8&oe=59EA164D)

En revanche je ne sais pas comment me branché (une 2éme fois) sans affecté les infos car une prise sera déjà connecté pour un affichage au tableau de bord.

Mon montage actuelle :
(https://scontent-cdg2-1.xx.fbcdn.net/v/t1.0-9/18813620_10209515569951694_4726751612045451804_n.jpg?oh=a91ee7781e2bc47dd58fdd2337fbeb66&oe=59A81594)

Voici mon code actuelle :  (action appui sur bouton, +1 a l'ecran)
Code: [Select]
//   G F + A B
//   | | | | |   -> pins and segments they control
//   ---------
//  F|   A   |B
//   |---G---|   -> segments
//  E|   D   |C
//   ---------
//   | | | | |   -> pins and segments they control
//   E D + C DP

// Segments that make each number when lit:
// 0 => ABCDEF
// 1 => BC
// 2 => ABDEG
// 3 => ABCDG
// 4 => BCFG
// 5 => ACDFG
// 6 => ACDEFG
// 7 => ABC
// 8 => ABCDEFG
// 9 => ABCDFG

// Arduino digital pins used to light up
// corresponding segments on the LED display
#define A 2
#define B 3
#define C 4
#define D 5
#define E 6
#define F 7
#define G 8

// Pushbutton connected to pin 9
#define BUTTON 10

// Common anode;
// on when pin is low
// and off when pin is high
#define ON HIGH
#define OFF LOW

int count = 0; // current display count
int val = 0;   // digital input from button

void setup() {
  pinMode(A, OUTPUT);
  pinMode(B, OUTPUT);
  pinMode(C, OUTPUT);
  pinMode(D, OUTPUT);
  pinMode(E, OUTPUT);
  pinMode(F, OUTPUT);
  pinMode(G, OUTPUT);
  pinMode(BUTTON, INPUT);
  one();
}

void loop() {
  val = digitalRead(BUTTON);
  if (val == HIGH) {
    count++;
    delay(200);
    switch (count) {
      case 1:
        one();
        break;
      case 2:
        two();
        break;
      case 3:
        three();
        break;
      case 4:
        four();{
        count = -1;
        break;
      }
    }
  }
}

// 1 => BC
void one() {
  digitalWrite(A, OFF);
  digitalWrite(B, ON);
  digitalWrite(C, ON);
  digitalWrite(D, OFF);
  digitalWrite(E, OFF);
  digitalWrite(F, OFF);
  digitalWrite(G, OFF);
}

// 2 => ABDEG
void two() {
  digitalWrite(A, ON);
  digitalWrite(B, ON);
  digitalWrite(C, OFF);
  digitalWrite(D, ON);
  digitalWrite(E, ON);
  digitalWrite(F, OFF);
  digitalWrite(G, ON);
}

// 3 => ABCDG
void three() {
  digitalWrite(A, ON);
  digitalWrite(B, ON);
  digitalWrite(C, ON);
  digitalWrite(D, ON);
  digitalWrite(E, OFF);
  digitalWrite(F, OFF);
  digitalWrite(G, ON);
}

// 4 => BCFG
void four() {
  digitalWrite(A, OFF);
  digitalWrite(B, ON);
  digitalWrite(C, ON);
  digitalWrite(D, OFF);
  digitalWrite(E, OFF);
  digitalWrite(F, ON);
  digitalWrite(G, ON);
}



Ce que je souhaite c'est faire -1 si appuie sur un 2éme bouton et que même si je reste appuyé longtemps sa ne saute pas de chiffre
et ne pas tourner, si appui bouton + avec le chiffre 4 => zero action
idem pour le 1 et bouton -



Merci d'avance déjà pour avoir pris le temps de lire et pour les futur possible aides à réaliser ce projet.
Title: Re: Projet Control module
Post by: 200sx200 on May 31, 2017, 06:31 pm
J'avance un peu sur la programmation mais je reste bloqué sur la boucle.

voici mon code :
Code: [Select]
//   G F + A B
//   | | | | |   -> pins and segments they control
//   ---------
//  F|   A   |B
//   |---G---|   -> segments
//  E|   D   |C
//   ---------
//   | | | | |   -> pins and segments they control
//   E D + C DP

// 7 Segments Pin correspondance
const int A = 2;
const int B = 3;
const int C = 4;
const int D = 5;
const int E = 6;
const int F = 7;
const int G = 8;

// Push bouton
const int BUTTON = 10;
const int BUTTON2 = 11;

// Led remplace solenoid
const int LedSA = A14;
const int LedSB = A13;
const int LedSClutch = A12;
const int LedSLockup = A7;
const int LedSPressure = A6;


// on when pin is high
// off when pin is low
const int ON = HIGH;
const int OFF = LOW;

//vitesse
int vitesse = 1;


// action push bouton
int Push = +1;   
int Push2 = -1;   


void setup() {
  pinMode(A, OUTPUT);
  pinMode(B, OUTPUT);
  pinMode(C, OUTPUT);
  pinMode(D, OUTPUT);
  pinMode(E, OUTPUT);
  pinMode(F, OUTPUT);
  pinMode(G, OUTPUT);
  pinMode(BUTTON, INPUT);
  pinMode(BUTTON2, INPUT);
  pinMode(LedSA, OUTPUT);        //solenoid A
  pinMode(LedSB, OUTPUT);        //solenoid B
  pinMode(LedSClutch, OUTPUT);   //solenoid Overrun Clutch
  pinMode(LedSLockup, OUTPUT);  //solenoid Lock-up
  pinMode(LedSPressure, OUTPUT); //solenoid Line Pressure
 
}

void loop() { // début du loop 
 
 
  Push = digitalRead(BUTTON);                 // action bouton +
if (Push == HIGH)                             // pression capté
  vitesse++;                                  // vitesse +1
    delay(50);                                // temps de pression nécessaire
     switch (vitesse) { //début du cycle 1-4
      case 1:                 //-
        Vitesse1();
         break;
      case 2:                 //
        Vitesse2();                        // A partir de 1 monter à 4
         break;   
      case 3:                 //
        Vitesse3();
         break;
      case 4:                 //-
        Vitesse4();
         break;
         
   }//fin cycle 1-4
   
   
 
  Push2 = digitalRead(BUTTON2);                 // action bouton -
if (Push2 == HIGH)                              // pression capté
  --vitesse;                                    //vitesse -1
    delay(50);                                  // temps de pression nécessaire
    switch (vitesse) {
      case 4:                 //-
        Vitesse4();
         break;
      case 3:                //
        Vitesse3();                        // A partir de 4 descendre à 1
         break;
      case 2:                //
        Vitesse2();
         break;
      case 1:                //-
        Vitesse12();
         break;
         
    }//fin cycle 4-1


} //fin du loop
   




// 1 => BC
void Vitesse1() {
  digitalWrite(A, OFF);
  digitalWrite(B, ON);
  digitalWrite(C, ON);
  digitalWrite(D, OFF);
  digitalWrite(E, OFF);
  digitalWrite(F, OFF);
  digitalWrite(G, OFF);
  digitalWrite(LedSA, HIGH);       
  digitalWrite(LedSB, LOW);       
  digitalWrite(LedSClutch, LOW);   
  digitalWrite(LedSLockup, HIGH);
  digitalWrite(LedSPressure, LOW); // inverser
   
}

// 1 => BC
void Vitesse12() {
  digitalWrite(A, OFF);
  digitalWrite(B, ON);
  digitalWrite(C, ON);
  digitalWrite(D, OFF);
  digitalWrite(E, OFF);
  digitalWrite(F, OFF);
  digitalWrite(G, OFF);
  digitalWrite(LedSA, HIGH);       
  digitalWrite(LedSB, LOW);       
  digitalWrite(LedSClutch, LOW);   
  digitalWrite(LedSLockup, HIGH);
  digitalWrite(LedSPressure, LOW); // inverser
   
}

// 2 => ABDEG
void Vitesse2() {
  digitalWrite(A, ON);
  digitalWrite(B, ON);
  digitalWrite(C, OFF);
  digitalWrite(D, ON);
  digitalWrite(E, ON);
  digitalWrite(F, OFF);
  digitalWrite(G, ON);
  digitalWrite(LedSA, HIGH);       
  digitalWrite(LedSB, HIGH);       
  digitalWrite(LedSClutch, LOW);   
  digitalWrite(LedSLockup, HIGH);
  digitalWrite(LedSPressure, LOW); // inverser
}

// 3 => ABCDG
void Vitesse3() {
  digitalWrite(A, ON);
  digitalWrite(B, ON);
  digitalWrite(C, ON);
  digitalWrite(D, ON);
  digitalWrite(E, OFF);
  digitalWrite(F, OFF);
  digitalWrite(G, ON);
  digitalWrite(LedSA, HIGH);       
  digitalWrite(LedSB, HIGH);       
  digitalWrite(LedSClutch, HIGH);   
  digitalWrite(LedSLockup, HIGH);
  digitalWrite(LedSPressure, LOW); // inverser
}

// 4 => BCFG
void Vitesse4() {
  digitalWrite(A, OFF);
  digitalWrite(B, ON);
  digitalWrite(C, ON);
  digitalWrite(D, OFF);
  digitalWrite(E, OFF);
  digitalWrite(F, ON);
  digitalWrite(G, ON);
  digitalWrite(LedSA, LOW);       
  digitalWrite(LedSB, LOW);       
  digitalWrite(LedSClutch, HIGH);   
  digitalWrite(LedSLockup, HIGH);
  digitalWrite(LedSPressure, LOW); // inverser
}




et montage:
(https://scontent-cdg2-1.xx.fbcdn.net/v/t31.0-8/18836872_10209517605722587_6614333022890876620_o.jpg?oh=3ba1ab1e431a0a8e0ed76d9e82d8f7ca&oe=59AF7834)



La fonction led et bouton est bonne sauf :

-je reste appuie sur le bouton fais passé de 1 a 4 rapidement (je veut juste un saut de +1 même si je reste appuyé longtemps

-si je mets un clignotement d'une led pour chaque +1, elle reste allumé et fais sa boucle toute seul


Comment je peut dire que tels bouton ou pin est actif que x temps ( "delay(200)" ) ?

Merci
Title: Re: Projet Control module
Post by: infobarquee on May 31, 2017, 08:18 pm
bonjour,
remplace tous les boutons

Code: [Select]
pinMode(BUTTON, INPUT);
PAR
pinMode(BUTTON, INPUT_PULLUP);


et tu peux rajouter ceci pour chaque bouton

Code: [Select]
if (Push == HIGH) 
while(Push == HIGH){}
Title: Re: Projet Control module
Post by: 200sx200 on May 31, 2017, 08:53 pm
Merci pour votre réponse :)

Cependant je n'y arrive pas :
Code: [Select]
//   G F + A B
//   | | | | |   -> pins and segments they control
//   ---------
//  F|   A   |B
//   |---G---|   -> segments
//  E|   D   |C
//   ---------
//   | | | | |   -> pins and segments they control
//   E D + C DP

// 7 Segments Pin correspondance
const int A = 2;
const int B = 3;
const int C = 4;
const int D = 5;
const int E = 6;
const int F = 7;
const int G = 8;

// Push bouton
const int BUTTON = 10;
const int BUTTON2 = 11;

// Led remplace solenoid
const int LedSA = A14;
const int LedSB = A13;
const int LedSClutch = A12;
const int LedSLockup = A7;
const int LedSPressure = A6;


// on when pin is high
// off when pin is low
const int ON = HIGH;
const int OFF = LOW;

//vitesse
int vitesse = 1;


// action push bouton
int Push = +1;   
int Push2 = -1;   


void setup() {
  pinMode(A, OUTPUT);
  pinMode(B, OUTPUT);
  pinMode(C, OUTPUT);
  pinMode(D, OUTPUT);
  pinMode(E, OUTPUT);
  pinMode(F, OUTPUT);
  pinMode(G, OUTPUT);
  pinMode(BUTTON, INPUT_PULLUP);
  pinMode(BUTTON2, INPUT_PULLUP);
  pinMode(LedSA, OUTPUT);        //solenoid A
  pinMode(LedSB, OUTPUT);        //solenoid B
  pinMode(LedSClutch, OUTPUT);   //solenoid Overrun Clutch
  pinMode(LedSLockup, OUTPUT);  //solenoid Lock-up
  pinMode(LedSPressure, OUTPUT); //solenoid Line Pressure
 
}

void loop() { // début du loop 

 
  Push = digitalRead(BUTTON);                 // action bouton +
if (Push == HIGH)                             // pression capté
  vitesse++;                                  // vitesse +1
    delay(100);                                // temps de pression nécessaire
     switch (vitesse) { //début du cycle 1-4
      case 1:                 //-
        Vitesse1();
         break;
         while(digitalRead(BUTTON));
      case 2:                 //
        Vitesse2();                        // A partir de 1 monter à 4
         break; 
         while(digitalRead(BUTTON));
      case 3:                 //
        Vitesse3();
         break;
         while(digitalRead(BUTTON));
      case 4:                 //-
        Vitesse4();
         break;
         
   }//fin cycle 1-4



  Push2 = digitalRead(BUTTON2);                 // action bouton -
if (Push2 == HIGH)                              // pression capté
  --vitesse;                                    //vitesse -1
    delay(100);                                  // temps de pression nécessaire
    switch (vitesse) {
      case 4:                 //-
        Vitesse4();
         break;
         while(digitalRead(BUTTON));
      case 3:                //
        Vitesse3();                        // A partir de 4 descendre à 1
         break;
         while(digitalRead(BUTTON));
      case 2:                //
        Vitesse2();
         break;
         while(digitalRead(BUTTON));
      case 1:                //-
        Vitesse1();
         break;
         
    }//fin cycle 4-1


} //fin du loop
   




// 1 => BC
void Vitesse1() {
  digitalWrite(A, OFF);
  digitalWrite(B, ON);
  digitalWrite(C, ON);
  digitalWrite(D, OFF);
  digitalWrite(E, OFF);
  digitalWrite(F, OFF);
  digitalWrite(G, OFF);
  digitalWrite(LedSA, HIGH);       
  digitalWrite(LedSB, LOW);       
  digitalWrite(LedSClutch, LOW);   
  digitalWrite(LedSLockup, LOW);
  digitalWrite(LedSPressure, HIGH);
   
}

// 2 => ABDEG
void Vitesse2() {
  digitalWrite(A, ON);
  digitalWrite(B, ON);
  digitalWrite(C, OFF);
  digitalWrite(D, ON);
  digitalWrite(E, ON);
  digitalWrite(F, OFF);
  digitalWrite(G, ON);
  digitalWrite(LedSA, HIGH);       
  digitalWrite(LedSB, HIGH);       
  digitalWrite(LedSClutch, LOW);   
  digitalWrite(LedSLockup, LOW);
  digitalWrite(LedSPressure, HIGH);
}

// 3 => ABCDG
void Vitesse3() {
  digitalWrite(A, ON);
  digitalWrite(B, ON);
  digitalWrite(C, ON);
  digitalWrite(D, ON);
  digitalWrite(E, OFF);
  digitalWrite(F, OFF);
  digitalWrite(G, ON);
  digitalWrite(LedSA, HIGH);       
  digitalWrite(LedSB, HIGH);       
  digitalWrite(LedSClutch, HIGH);   
  digitalWrite(LedSLockup, LOW);
  digitalWrite(LedSPressure, HIGH);
}

// 4 => BCFG
void Vitesse4() {
  digitalWrite(A, OFF);
  digitalWrite(B, ON);
  digitalWrite(C, ON);
  digitalWrite(D, OFF);
  digitalWrite(E, OFF);
  digitalWrite(F, ON);
  digitalWrite(G, ON);
  digitalWrite(LedSA, LOW);       
  digitalWrite(LedSB, LOW);       
  digitalWrite(LedSClutch, HIGH);   
  digitalWrite(LedSLockup, LOW);
  digitalWrite(LedSPressure, HIGH);
}



le bouton + et - fonctionne bien mais si je reste appuiyé sur l'un deux sa passe au dernier directe ex:
si 1 affiché et que je reste un peu appuyé il monte jusqu'à 4 et inversement.
Title: Re: Projet Control module
Post by: kamill on Jun 01, 2017, 09:05 am
Bonjour,

Il faut que tu testes si le bouton a changé d'état en comparant à l'état précédent
Comme ceci par exemple:
Code: [Select]
  static int pushPrec = LOW;    // état précédent
  Push = digitalRead(BUTTON);                 // action bouton +
  if (Push != pushPrec)
  {
    // le bouton a changé d'état
    {
      if (Push == HIGH)                             // pression capté
        vitesse++;                                  // vitesse +1
    }
    pushPrec = Push;
  }
Title: Re: Projet Control module
Post by: 200sx200 on Jun 01, 2017, 11:35 am
Bonjour
merci pour la réponse :)

mais je ne comprend pas , désolé je débute complètement :/

J'utilise votre code comme ça ?

Code: [Select]
Push = digitalRead(BUTTON);                 // action bouton +
  if (Push != pushPrec)
  {
    // le bouton a changé d'état
    {
if (Push == HIGH)                             // pression capté
  vitesse++;                                  // vitesse +1
    }
    delay(100);                                // temps de pression nécessaire
     switch (vitesse) { //début du cycle 1-4
      case 1:                 //-
        Vitesse1();
         break;
       case 2:                 //
        Vitesse2();                        // A partir de 1 monter à 4
         break; 
       case 3:                 //
        Vitesse3();
         break;
       case 4:                 //-
        Vitesse4();
         break;
         
   }//fin cycle 1-4
   
pushPrec = Push;

  }



Pas d'erreur dans le code mais la seul chose que sa à changé c'est que sa commence sans affichage et un 1er appuie sa commence au chiffre 2.
Title: Re: Projet Control module
Post by: kamill on Jun 01, 2017, 11:51 am
Comme ça:
Code: [Select]
void loop() { // début du loop
  static int pushPrec = LOW;    // état précédent
  Push = digitalRead(BUTTON);                 // action bouton +
  if (Push != pushPrec)
  {
    // le bouton a changé d'état
    {
      if (Push == HIGH)                             // pression capté
        vitesse++;                                  // vitesse +1
    }
    pushPrec = Push;
  }
  switch (vitesse) { //début du cycle 1-4
    case 1:                 //-
      Vitesse1();
      break;
    case 2:                 //
      Vitesse2();                        // A partir de 1 monter à 4
      break;
    case 3:                 //
      Vitesse3();
      break;
    case 4:                 //-
      Vitesse4();
      break;

  }//fin cycle 1-4

Tu fais la même chosse pour bouton2 et tu en profites en pour indenter correctement ton code (Utilises Ctrl T si tu est avec l'IDE sous Windows).
Title: Re: Projet Control module
Post by: 200sx200 on Jun 01, 2017, 04:58 pm
Ah super c'est nikel , Merci beaucoup.

Je suis sous Arduino 1.8.2 et ctrl +T = formatage automatique => je ne connais pas encore.
Title: Re: Projet Control module
Post by: kamill on Jun 01, 2017, 05:08 pm
L'état précédent c'est l'état du bouton avant que tu entre dans la loop
Cet état est mémorisé dans l'exécution de la loop précédente par pushPrec = Push;
Et ça se répète à chaque fois que loop s'exécute, c'est a dire indéfiniment (ou du moins jusqu'à arrêt du système)

Je n'utilise pas la version 1.8.2, c'est bizarre qu'ils aient supprimé ctrl T, qui est très pratique.
Sur les versions précédentes on peut aussi y accéder par le menu Outils/Formatage automatique. Est ce qu'il est toujours présent dans la version 1.8.2?
Title: Re: Projet Control module
Post by: 200sx200 on Jun 01, 2017, 05:37 pm
Merci pour ton explication :)
Title: Re: Projet Control module
Post by: 200sx200 on Jun 02, 2017, 06:17 pm
Par contre est-ce que je peux mettre une fin ?

Car si je suis sur "1" par exemple et que j'appuie une fois sur "-" . Il faudra que j'appuie deux fois sur "+" pour arriver à "2".

Est-ce normal ? comment l'empêcher ?
Title: Re: Projet Control module
Post by: kamill on Jun 02, 2017, 06:52 pm
Bien sur tu peux limiter l'évolution de vitesse
Par exemple si vitesse est égal à 4 tu n'incrémente plus la vitesse même si tu appuies sur le bouton
Code: [Select]
...
   {
     if (Push == HIGH)                             // pression capté
       if (vitesse<3)
         vitesse++;                                  // vitesse +1
   }
...


Tu peux faire un test aussi en décrémentation
Title: Re: Projet Control module
Post by: 200sx200 on Jun 02, 2017, 07:06 pm
Ah ok , j'ai essayé comme ça :

Code: [Select]
//   G F + A B
//   | | | | |   -> pins and segments they control
//   ---------
//  F|   A   |B
//   |---G---|   -> segments
//  E|   D   |C
//   ---------
//   | | | | |   -> pins and segments they control
//   E D + C DP

// 7 Segments Pin correspondance
const int A = 2;
const int B = 3;
const int C = 4;
const int D = 5;
const int E = 6;
const int F = 7;
const int G = 8;

// Push bouton
const int BUTTON = 10;
const int BUTTON2 = 11;
const int BUTTON3 = 12;

// Led remplace solenoid
const int LedSA = A14;
const int LedSB = A13;
const int LedSClutch = A12;
const int LedSLockup = A7;
const int LedSPressure = A6;


// on when pin is high
// off when pin is low
const int ON = HIGH;
const int OFF = LOW;

//vitesse
int Rapport = 1;




// action push bouton
int Push = +1;
int Push2 = -1;
int PushD ;

// état précédent
static int pushPrec = LOW;
static int push2Prec = LOW;


void setup() {
  pinMode(A, OUTPUT);
  pinMode(B, OUTPUT);
  pinMode(C, OUTPUT);
  pinMode(D, OUTPUT);
  pinMode(E, OUTPUT);
  pinMode(F, OUTPUT);
  pinMode(G, OUTPUT);
  pinMode(BUTTON, INPUT_PULLUP);
  pinMode(BUTTON2, INPUT_PULLUP);
  pinMode(BUTTON3, INPUT_PULLUP);
  pinMode(LedSA, OUTPUT);        //solenoid A
  pinMode(LedSB, OUTPUT);        //solenoid B
  pinMode(LedSClutch, OUTPUT);   //solenoid Overrun Clutch
  pinMode(LedSLockup, OUTPUT);  //solenoid Lock-up
  pinMode(LedSPressure, OUTPUT); //solenoid Line Pressure

}
void loop() { // début du loop

  //
  // Début du programme de passage vitesse inferrieure avec bouton -
  static int pushPrec = LOW;    // état précédent
  Push = digitalRead(BUTTON);                 // action bouton +
  PushD = digitalRead(BUTTON3);
  if (Push != pushPrec)
  {
    // le bouton a changé d'état
    {
      if ((Push == HIGH) && (PushD == HIGH) && (Rapport <= 1))        // pression capté
        Rapport++;                                  // vitesse +1
    }

    pushPrec = Push;
   
  }
  while (PushD = LOW)
  {
    PositionD();
  pinMode(BUTTON2, LOW);
  pinMode(BUTTON3, LOW);
  }
 
  switch (Rapport) { //début du cycle 1-4
    case 1:                 //-
      Vitesse1();
      break;
    case 2:                 //
      Vitesse2();                        // A partir de 1 monter à 4
      break;
    case 3:                 //
      Vitesse3();
      break;
    case 4:                 //-
      Vitesse4();
      break;

  }//fin cycle 1-4



  //
  // Fin du programme de passage vitesse inferrieure avec bouton +

  //
  // Début du programme de passage vitesse inferrieure avec bouton -
  static int push2Prec = LOW;    // état précédent
  Push2 = digitalRead(BUTTON2);                 // action bouton +
  PushD = digitalRead(BUTTON3);
  if (Push2 != push2Prec)
  {
    // le bouton a changé d'état
    {
      if ((Push2 == HIGH) && (PushD == HIGH) && (Rapport >= 4))        // pression capté
        --Rapport;                                  // vitesse -1
    }

    push2Prec = Push2;
   
  }

  while (PushD = LOW)
  {
    PositionD();
  pinMode(BUTTON2, LOW);
  pinMode(BUTTON3, LOW);
  }
 
  switch (Rapport) { //début du cycle 4-1
    case 1:                 //-
      Vitesse1();
      break;
    case 2:                 //
      Vitesse2();                        // A partir de 4 descendre à 1
      break;
    case 3:                 //
      Vitesse3();
      break;
    case 4:                 //-
      Vitesse4();
      break;

  }//fin cycle 4-1

 
  //
  // Fin du programme de passage vitesse inferrieure avec bouton -




} //fin du loop





// 1 => BC
void Vitesse1() {
  digitalWrite(A, OFF);
  digitalWrite(B, ON);
  digitalWrite(C, ON);
  digitalWrite(D, OFF);
  digitalWrite(E, OFF);
  digitalWrite(F, OFF);
  digitalWrite(G, OFF);
  digitalWrite(LedSA, HIGH);
  digitalWrite(LedSB, LOW);
  digitalWrite(LedSClutch, LOW);
  digitalWrite(LedSLockup, LOW);
  digitalWrite(LedSPressure, HIGH);

}

// 2 => ABDEG
void Vitesse2() {
  digitalWrite(A, ON);
  digitalWrite(B, ON);
  digitalWrite(C, OFF);
  digitalWrite(D, ON);
  digitalWrite(E, ON);
  digitalWrite(F, OFF);
  digitalWrite(G, ON);
  digitalWrite(LedSA, HIGH);
  digitalWrite(LedSB, HIGH);
  digitalWrite(LedSClutch, LOW);
  digitalWrite(LedSLockup, LOW);
  digitalWrite(LedSPressure, HIGH);
}

// 3 => ABCDG
void Vitesse3() {
  digitalWrite(A, ON);
  digitalWrite(B, ON);
  digitalWrite(C, ON);
  digitalWrite(D, ON);
  digitalWrite(E, OFF);
  digitalWrite(F, OFF);
  digitalWrite(G, ON);
  digitalWrite(LedSA, HIGH);
  digitalWrite(LedSB, HIGH);
  digitalWrite(LedSClutch, HIGH);
  digitalWrite(LedSLockup, LOW);
  digitalWrite(LedSPressure, HIGH);
}

// 4 => BCFG
void Vitesse4() {
  digitalWrite(A, OFF);
  digitalWrite(B, ON);
  digitalWrite(C, ON);
  digitalWrite(D, OFF);
  digitalWrite(E, OFF);
  digitalWrite(F, ON);
  digitalWrite(G, ON);
  digitalWrite(LedSA, LOW);
  digitalWrite(LedSB, LOW);
  digitalWrite(LedSClutch, HIGH);
  digitalWrite(LedSLockup, LOW);
  digitalWrite(LedSPressure, HIGH);
}

// D => ABCDEF
const void PositionD() {
  digitalWrite(A, ON);
  digitalWrite(B, ON);
  digitalWrite(C, ON);
  digitalWrite(D, ON);
  digitalWrite(E, ON);
  digitalWrite(F, ON);
  digitalWrite(G, OFF);
  digitalWrite(LedSA, LOW);
  digitalWrite(LedSB, LOW);
  digitalWrite(LedSClutch, LOW);
  digitalWrite(LedSLockup, LOW);
  digitalWrite(LedSPressure, LOW);
}



Sauf que j'essaye de rajouter un bouton. ( s'il n'est pas en "on", rien ne marche ) et (si bouton off affiche "D" ici zéro)
Title: Re: Projet Control module
Post by: 200sx200 on Jun 02, 2017, 07:28 pm
comme ça donc ?
Code: [Select]
//   G F + A B
//   | | | | |   -> pins and segments they control
//   ---------
//  F|   A   |B
//   |---G---|   -> segments
//  E|   D   |C
//   ---------
//   | | | | |   -> pins and segments they control
//   E D + C DP

// 7 Segments Pin correspondance
const int A = 2;
const int B = 3;
const int C = 4;
const int D = 5;
const int E = 6;
const int F = 7;
const int G = 8;

// Push bouton
const int BUTTON = 10;
const int BUTTON2 = 11;

// Led remplace solenoid
const int LedSA = A14;
const int LedSB = A13;
const int LedSClutch = A12;
const int LedSLockup = A7;
const int LedSPressure = A6;


// on when pin is high
// off when pin is low
const int ON = HIGH;
const int OFF = LOW;

//vitesse
int vitesse = 1;


// action push bouton
int Push = +1;
int Push2 = -1;

// état précédent
static int pushPrec = LOW;
static int push2Prec = LOW;

void setup() {
  pinMode(A, OUTPUT);
  pinMode(B, OUTPUT);
  pinMode(C, OUTPUT);
  pinMode(D, OUTPUT);
  pinMode(E, OUTPUT);
  pinMode(F, OUTPUT);
  pinMode(G, OUTPUT);
  pinMode(BUTTON, INPUT_PULLUP);
  pinMode(BUTTON2, INPUT_PULLUP);
  pinMode(LedSA, OUTPUT);        //solenoid A
  pinMode(LedSB, OUTPUT);        //solenoid B
  pinMode(LedSClutch, OUTPUT);   //solenoid Overrun Clutch
  pinMode(LedSLockup, OUTPUT);  //solenoid Lock-up
  pinMode(LedSPressure, OUTPUT); //solenoid Line Pressure

}
void loop() { // début du loop

  //
  // Début du programme de passage vitesse inferrieure avec bouton -

  static int pushPrec = LOW;    // état précédent
  Push = digitalRead(BUTTON);                 // action bouton +
  if (Push != pushPrec)
  {
    // le bouton a changé d'état
    {
      if (Push == HIGH)                             // pression capté
      if (vitesse<4)
        vitesse++;                                  // vitesse +1
    }
    pushPrec = Push;
  }
  switch (vitesse) { //début du cycle 1-4
    case 1:                 //-
      Vitesse1();
      break;
    case 2:                 //
      Vitesse2();                        // A partir de 1 monter à 4
      break;
    case 3:                 //
      Vitesse3();
      break;
    case 4:                 //-
      Vitesse4();
      break;

  }//fin cycle 1-4
  //
  // Fin du programme de passage vitesse inferrieure avec bouton +
  //
  // Début du programme de passage vitesse inferrieure avec bouton -

  static int push2Prec = LOW;    // état précédent
  Push2 = digitalRead(BUTTON2);                 // action bouton +
  if (Push2 != push2Prec)
  {
    // le bouton a changé d'état
    {
      if (Push2 == HIGH)                             // pression capté
      if (vitesse >1)
        --vitesse;                                  // vitesse +1
    }
    push2Prec = Push2;
  }
  switch (vitesse) { //début du cycle 1-4
    case 1:                 //-
      Vitesse1();
      break;
    case 2:                 //
      Vitesse2();                        // A partir de 1 monter à 4
      break;
    case 3:                 //
      Vitesse3();
      break;
    case 4:                 //-
      Vitesse4();
      break;

  }//fin cycle 1-4
  //
  // Fin du programme de passage vitesse inferrieure avec bouton -



} //fin du loop





// 1 => BC
void Vitesse1() {
  digitalWrite(A, OFF);
  digitalWrite(B, ON);
  digitalWrite(C, ON);
  digitalWrite(D, OFF);
  digitalWrite(E, OFF);
  digitalWrite(F, OFF);
  digitalWrite(G, OFF);
  digitalWrite(LedSA, HIGH);
  digitalWrite(LedSB, LOW);
  digitalWrite(LedSClutch, LOW);
  digitalWrite(LedSLockup, LOW);
  digitalWrite(LedSPressure, HIGH);

}

// 2 => ABDEG
void Vitesse2() {
  digitalWrite(A, ON);
  digitalWrite(B, ON);
  digitalWrite(C, OFF);
  digitalWrite(D, ON);
  digitalWrite(E, ON);
  digitalWrite(F, OFF);
  digitalWrite(G, ON);
  digitalWrite(LedSA, HIGH);
  digitalWrite(LedSB, HIGH);
  digitalWrite(LedSClutch, LOW);
  digitalWrite(LedSLockup, LOW);
  digitalWrite(LedSPressure, HIGH);
}

// 3 => ABCDG
void Vitesse3() {
  digitalWrite(A, ON);
  digitalWrite(B, ON);
  digitalWrite(C, ON);
  digitalWrite(D, ON);
  digitalWrite(E, OFF);
  digitalWrite(F, OFF);
  digitalWrite(G, ON);
  digitalWrite(LedSA, HIGH);
  digitalWrite(LedSB, HIGH);
  digitalWrite(LedSClutch, HIGH);
  digitalWrite(LedSLockup, LOW);
  digitalWrite(LedSPressure, HIGH);
}

// 4 => BCFG
void Vitesse4() {
  digitalWrite(A, OFF);
  digitalWrite(B, ON);
  digitalWrite(C, ON);
  digitalWrite(D, OFF);
  digitalWrite(E, OFF);
  digitalWrite(F, ON);
  digitalWrite(G, ON);
  digitalWrite(LedSA, LOW);
  digitalWrite(LedSB, LOW);
  digitalWrite(LedSClutch, HIGH);
  digitalWrite(LedSLockup, LOW);
  digitalWrite(LedSPressure, HIGH);
}





Pourquoi 3?

La comma ça, sa marche bien :)
Title: Re: Projet Control module
Post by: kamill on Jun 02, 2017, 07:48 pm
Pourquoi 3?
Parce que c'était une erreur  :smiley-confuse: . On va dire que c'était pour voir si tu suivais  :D
Title: Re: Projet Control module
Post by: 200sx200 on Jun 02, 2017, 08:20 pm
;D


Code: [Select]
//   G F + A B
//   | | | | |   -> pins and segments they control
//   ---------
//  F|   A   |B
//   |---G---|   -> segments
//  E|   D   |C
//   ---------
//   | | | | |   -> pins and segments they control
//   E D + C DP

// 7 Segments Pin correspondance
const int A = 2;
const int B = 3;
const int C = 4;
const int D = 5;
const int E = 6;
const int F = 7;
const int G = 8;

// Push bouton
const int BUTTON = 10;
const int BUTTON2 = 11;
const int BUTTON3 = 12;

// Led remplace solenoid
const int LedSA = A14;
const int LedSB = A13;
const int LedSClutch = A12;
const int LedSLockup = A7;
const int LedSPressure = A6;


// on when pin is high
// off when pin is low
const int ON = HIGH;
const int OFF = LOW;

//vitesse
int vitesse = 1;


// action push bouton
int Push = +1;
int Push2 = -1;
int Push3 = 1;

// état précédent
static int pushPrec = LOW;
static int push2Prec = LOW;
static int push3Prec = LOW;

void setup() {
  pinMode(A, OUTPUT);
  pinMode(B, OUTPUT);
  pinMode(C, OUTPUT);
  pinMode(D, OUTPUT);
  pinMode(E, OUTPUT);
  pinMode(F, OUTPUT);
  pinMode(G, OUTPUT);
  pinMode(BUTTON, INPUT_PULLUP);
  pinMode(BUTTON2, INPUT_PULLUP);
  pinMode(BUTTON3, INPUT_PULLUP);
  pinMode(LedSA, OUTPUT);        //solenoid A
  pinMode(LedSB, OUTPUT);        //solenoid B
  pinMode(LedSClutch, OUTPUT);   //solenoid Overrun Clutch
  pinMode(LedSLockup, OUTPUT);  //solenoid Lock-up
  pinMode(LedSPressure, OUTPUT); //solenoid Line Pressure

}
void loop() { // début du loop
  Push3 = digitalRead(BUTTON3);
  if (Push3 == HIGH)
  {
     Vitesse1();//
    // Début du programme de passage vitesse inferrieure avec bouton -

    static int pushPrec = LOW;    // état précédent
    Push = digitalRead(BUTTON);                 // action bouton +
    if (Push != pushPrec)
    {
      // le bouton a changé d'état
      {
        if (Push == HIGH)                               // pression capté
          if (vitesse < 4)
            vitesse++;                                  // vitesse +1
      }
      pushPrec = Push;
    }



    switch (vitesse) { //début du cycle 1-4
      case 1:                 //-
        Vitesse1();
        break;
      case 2:                 //
        Vitesse2();                        // A partir de 1 monter à 4
        break;
      case 3:                 //
        Vitesse3();
        break;
      case 4:                 //-
        Vitesse4();
        break;

    }//fin cycle 1-4
  }
    // Fin du programme de passage vitesse inferrieure avec bouton +
else Push3 == LOW;
  {
    PositionD();
  }

    //
    // Début du programme de passage vitesse inferrieure avec bouton -
if (Push3 == HIGH)
  {
 Vitesse1();
 
    static int push2Prec = LOW;    // état précédent
    Push2 = digitalRead(BUTTON2);                 // action bouton +
    if (Push2 != push2Prec)
    {
      // le bouton a changé d'état
      {
        if (Push2 == HIGH)                              // pression capté
          if (vitesse > 1)
            --vitesse;                                  // vitesse +1
      }
      push2Prec = Push2;
    }


    switch (vitesse) { //début du cycle 1-4
      case 1:                 //-
        Vitesse1();
        break;
      case 2:                 //
        Vitesse2();                        // A partir de 1 monter à 4
        break;
      case 3:                 //
        Vitesse3();
        break;
      case 4:                 //-
        Vitesse4();
        break;

    }//fin cycle 1-4
  }
  // Fin du programme de passage vitesse inferrieure avec bouton -

  else Push3 == LOW;
  {
    PositionD();
  }

} //fin du loop





// 1 => BC
void Vitesse1() {
  digitalWrite(A, OFF);
  digitalWrite(B, ON);
  digitalWrite(C, ON);
  digitalWrite(D, OFF);
  digitalWrite(E, OFF);
  digitalWrite(F, OFF);
  digitalWrite(G, OFF);
  digitalWrite(LedSA, HIGH);
  digitalWrite(LedSB, LOW);
  digitalWrite(LedSClutch, LOW);
  digitalWrite(LedSLockup, LOW);
  digitalWrite(LedSPressure, HIGH);

}

// 2 => ABDEG
void Vitesse2() {
  digitalWrite(A, ON);
  digitalWrite(B, ON);
  digitalWrite(C, OFF);
  digitalWrite(D, ON);
  digitalWrite(E, ON);
  digitalWrite(F, OFF);
  digitalWrite(G, ON);
  digitalWrite(LedSA, HIGH);
  digitalWrite(LedSB, HIGH);
  digitalWrite(LedSClutch, LOW);
  digitalWrite(LedSLockup, LOW);
  digitalWrite(LedSPressure, HIGH);
}

// 3 => ABCDG
void Vitesse3() {
  digitalWrite(A, ON);
  digitalWrite(B, ON);
  digitalWrite(C, ON);
  digitalWrite(D, ON);
  digitalWrite(E, OFF);
  digitalWrite(F, OFF);
  digitalWrite(G, ON);
  digitalWrite(LedSA, HIGH);
  digitalWrite(LedSB, HIGH);
  digitalWrite(LedSClutch, HIGH);
  digitalWrite(LedSLockup, LOW);
  digitalWrite(LedSPressure, HIGH);
}

// 4 => BCFG
void Vitesse4() {
  digitalWrite(A, OFF);
  digitalWrite(B, ON);
  digitalWrite(C, ON);
  digitalWrite(D, OFF);
  digitalWrite(E, OFF);
  digitalWrite(F, ON);
  digitalWrite(G, ON);
  digitalWrite(LedSA, LOW);
  digitalWrite(LedSB, LOW);
  digitalWrite(LedSClutch, HIGH);
  digitalWrite(LedSLockup, LOW);
  digitalWrite(LedSPressure, HIGH);
}

// D => ABCDEF
void PositionD() {
  digitalWrite(A, OFF);
  digitalWrite(B, OFF);
  digitalWrite(C, OFF);
  digitalWrite(D, OFF);
  digitalWrite(E, OFF);
  digitalWrite(F, OFF);
  digitalWrite(G, OFF);
  digitalWrite(LedSA, LOW);
  digitalWrite(LedSB, LOW);
  digitalWrite(LedSClutch, LOW);
  digitalWrite(LedSLockup, LOW);
  digitalWrite(LedSPressure, LOW);
}


J'ai trouvé mon problème avec le 3eme bouton .
LA "PositionD" s'additionne au reste du coup example:
quand le "3" s'affiche avec le "0" tous les segement sont allumés.
J'ai donc tous éteint sur la "positionD" et la sa marche normalement.

Je continue à chercher car je veus qu'il affiche D en off et rien en on sauf de 1à4 pour les positions.
Title: Re: Projet Control module
Post by: trimarco232 on Jun 02, 2017, 09:04 pm
Quote
else Push3 == LOW;
Bonjour,
est-ce juste ?
Title: Re: Projet Control module
Post by: 200sx200 on Jun 02, 2017, 09:19 pm
j'ai du retiré le Vitess1(); en début de programme car il ce voyait sur le chiffre "2".

J'ai retiré le else et effectivement sa n'a rien changé donc inutile :) merci


Le bouton3 simule la position sport(manuel) sur le levier de vitesse .
Title: Re: Projet Control module
Post by: 200sx200 on Jun 03, 2017, 12:29 pm
Peut-on avec l'arduino recevoir des infos via rs232 ou usb et les renvoyer en temps réels via aussi rs232 ou usb tous en pouvant utilisé ces informations ?

example:
Les informations sont originaire de l'ECU via une prise ODB1 (Prise de diagnostique de la voiture) ou DB9.

je souhaite me branché dessus pour utilisé les informations nécessaire au contrôle de la boite de vitesse.

Cependant je souhaite garder la prise de diagnostique libre.

Ou comment peut-on multiplier le nombre de prise sans interférer le signal (qu'il soit identique même avec 3 ou 4 recepteur de branché dessus ) ?

Title: Re: Projet Control module
Post by: trimarco232 on Jun 03, 2017, 02:11 pm
Quote
recevoir des infos via rs232 ou usb et les renvoyer en temps réels via aussi rs232 ou usb
donc tu voudrais les recevoir par un usb et les renvoyer par un autre usb ?
Title: Re: Projet Control module
Post by: 200sx200 on Jun 03, 2017, 03:25 pm
c'est ça oui.
je pense plus rs232in  => rs232out + (rs232out ou USBout).

Mais faut que l'arduino puisse travailler avec ces valeurs aussi.

Détails :

J'ai "qu'une" prise diag dans l'auto qui sort de l'ECU.
Avec cette prise je voudrais connecter l'arduino qui contrôlera la boite avec ces informations, mais aussi un écran 7" pour affiché les valeurs moteur en continue (peut-être possible directement avec l'arduino méga ou avec une 2ème ? ), tous en gardant une prise de libre en cas de diagnostique.

J'ai trouvé ça pour arduino :
https://www.sainsmart.com/sainsmart-7-7-inch-tft-lcd-screen-sd-card-slot-tft-shield-for-arduino-mega2560-r3.html (https://www.sainsmart.com/sainsmart-7-7-inch-tft-lcd-screen-sd-card-slot-tft-shield-for-arduino-mega2560-r3.html)
Title: Re: Projet Control module
Post by: trimarco232 on Jun 03, 2017, 06:31 pm
le LCD n'est pas urgent

il faut raccorder le véhicule à une des liaisons serial hardware du mega
ainsi :
requête :
console (usb) -> mega(serial1) -> nissan
réponse :
nissan -> (serial1)mega -> (usb)console



Title: Re: Projet Control module
Post by: 200sx200 on Jun 03, 2017, 10:54 pm
J'avais dessiné ça :

(https://scontent-cdg2-1.xx.fbcdn.net/v/t31.0-8/18815273_10209543029398163_4447617810159269791_o.jpg?oh=f439d33e7638fbc0bb2a459451017849&oe=59E0BB06)

Sauf qu'il faut un shield rs232 car c'est du 12V,
c'est ça ?


Nissan consult arduino:
source:
http://arduino.cybrax-computers.com/ (http://arduino.cybrax-computers.com/)
(http://arduino.cybrax-computers.com/files/arduino-button.JPG)
Title: Re: Projet Control module
Post by: trimarco232 on Jun 04, 2017, 10:30 am
Quote
Sauf qu'il faut un shield rs232 car c'est du 12V, c'est ça ?
alors ça je n'en sais rien, je suis parti de la photo que tu as mis en début de topic :
- il ne semble pas qu'il y ait de conversion 12v <-> 5v au niveau des tx et rx
- tx et rx sont reliés entre eux sur le convertisseur ft232 : on est donc en half duplex sur un fil. Si c'est du LIN BUS (peux-tu avoir l'info ?), il faudra l'interfacer proprement
Title: Re: Projet Control module
Post by: 200sx200 on Jun 04, 2017, 11:28 am
Tu parle du langage du signal ?

Sinon le langage c'est :
http://arduino.cybrax-computers.com/files/Generic-Nissan-ECU-Sensor-or-Data-register-table-Ver-2.pdf (http://arduino.cybrax-computers.com/files/Generic-Nissan-ECU-Sensor-or-Data-register-table-Ver-2.pdf)
http://arduino.cybrax-computers.com/files/Consult-Protocol-&-Commands-Issue-6.pdf (http://arduino.cybrax-computers.com/files/Consult-Protocol-&-Commands-Issue-6.pdf)

Sur http://arduino.cybrax-computers.com/ (http://arduino.cybrax-computers.com/) Il montre comment faire un nissan consult avec une arduino.

Video:
https://www.youtube.com/watch?v=kORjR_Akfbg&t=0s (https://www.youtube.com/watch?v=kORjR_Akfbg&t=0s)

Title: Re: Projet Control module
Post by: 200sx200 on Jun 04, 2017, 12:19 pm
J'suis donc dans l'optique de commander :
-RS232-Shield (http://www.conrad.fr/ce/fr/product/1310314/RS232-Shield-pour-Arduino-et-pcDuino-Joy-IT-RS232-ARD-RS232-1-pcs)
-Cable-de-raccordement-Digitus-serie SUB-D (http://www.conrad.fr/ce/fr/product/678107/Cable-de-raccordement-Digitus-serie----1x-SUB-D-male-9-poles-1x-SUB-D-femelle-9-poles----2-m)
-sd-card-slot-tft-shield-for-arduino (https://www.sainsmart.com/sainsmart-mega2560-r3-7-7-inch-tft-lcd-screen-sd-card-slot-tft-shield-for-arduino.html#) La j'ai pas compris, le kit avec la Mega est moins cher de 3€ que celui sans  :smiley-eek-blue: ICI (https://www.sainsmart.com/sainsmart-7-7-inch-tft-lcd-screen-sd-card-slot-tft-shield-for-arduino-mega2560-r3.html)
Title: Re: Projet Control module
Post by: trimarco232 on Jun 04, 2017, 01:28 pm
Quote
le LCD n'est pas urgent
rappel

Quote
RS232 Shield
pour quoi faire ?

Quote
Câble de raccordement Digitus série [1x SUB-D mâle 9
pour quoi faire ?
Title: Re: Projet Control module
Post by: 200sx200 on Jun 04, 2017, 01:56 pm
le LCD n'est pas urgent
C'est vrai mais c'est un bon moyen de voir si les infos sont bien reçue comme il faut et en temps réelle.
De plus la programmation du LCD prendras du temps.

"RS232 Shield" pour quoi faire ?
Pour eviter de branché directement sur la carte "Tx/Rx" car +12V/-12V risquerai de l'endommager (source Arduino) ?

"Câble de raccordement Digitus série [1x SUB-D mâle 9" pour quoi faire ?
Pour relié l'ECU à la Shield
Title: Re: Projet Control module
Post by: 200sx200 on Jun 04, 2017, 02:41 pm
J'ai redessiner mon idée:

(https://scontent-cdg2-1.xx.fbcdn.net/v/t31.0-8/18880134_10209547813477762_3887995394578165652_o.jpg?oh=468a8a2a7ba99ccf6bf91d3d1559dd0c&oe=59AFFBCC)

Je pense qu'une deuxième carte est nécessaire sachant le nombre de donnée à manipuler .
Title: Re: Projet Control module
Post by: trimarco232 on Jun 04, 2017, 03:23 pm
Quote
+12V/-12V
qu'est-ce qui fonctionne avec ces tensions ?


Quote
Je pense qu'une deuxième carte est nécessaire sachant le nombre de donnée à manipuler
peut-être prématuré (en tous cas tu fais des dessins, c'est bien !)



--> il y a un nouveau connecteur : subD diag, c'est pour y brancher quoi ?
Title: Re: Projet Control module
Post by: 200sx200 on Jun 04, 2017, 03:56 pm
qu'est-ce qui fonctionne avec ces tensions ?
L'ECU ;)

peut-être prématuré (en tous cas tu fais des dessins, c'est bien !)
MDR  :D Mais des fois c'est plus simple que des paragraphes ^^


--> il y a un nouveau connecteur : subD diag, c'est pour y brancher quoi ?
Diag => diagnostique, c'est la prise supplémentaire pour y branché un PC par exemple (Lecture ou modifier).
Title: Re: Projet Control module
Post by: trimarco232 on Jun 04, 2017, 04:30 pm
Quote
qu'est-ce qui fonctionne avec ces tensions ?

L'ECU ;)
c'est documenté où ( la confiance règne ... )

Title: Re: Projet Control module
Post by: 200sx200 on Jun 04, 2017, 05:14 pm
c'est documenté où ?
Sur ce site , je l'ai déjà pas déjà ecrit ?
http://arduino.cybrax-computers.com/ (http://arduino.cybrax-computers.com/)
Pages:
Consult-Protocol-&-Commands-Issue-6.pdf (http://arduino.cybrax-computers.com/files/Consult-Protocol-&-Commands-Issue-6.pdf)

( la confiance règne ... )
Pourquoi ? (j'ai pas compris)

Les infos vienne d'ici même:
https://www.arduino.cc/en/reference/serial (https://www.arduino.cc/en/reference/serial)

Après c'est juste une question de sécurité pour la carte ;) et c'est un branchement propre par la même occasion :)

Cela évite de découper la prise sortant de l'ECU puisque que c'est du DB9 (SUB-D)

Title: Re: Projet Control module
Post by: trimarco232 on Jun 04, 2017, 05:46 pm
désolé, je n'ai pas trouvé dans cette doc que l'ECU s'interface avec du +12V/-12V (notamment le -12V)
tu l'as vu, mais je ne l'ai pas vu, donc j'en doute jusqu'à preuve du contraire
il faut qu'on soit d'accord pour la suite : on ne vas pas aller mettre une tension sur le connecteur qui peut-être dangereuse pour l'ordinateur de bord
alors montre-moi l'endroit précis où tu as vu ça (détail de schéma, commentaire, autre)


as-tu une photo de l'ECU de la Nissan, celle que tu as mis se rapporte à une Pontiac, ce n'est pas forcément la même chose
Title: Re: Projet Control module
Post by: 200sx200 on Jun 04, 2017, 07:06 pm
La prise du nom "OBD1 ou 2" sont universel.

Le Shield vient de là:
http://arduino.cybrax-computers.com/files/max232.jpg (http://arduino.cybrax-computers.com/files/max232.jpg)
(http://arduino.cybrax-computers.com/files/arduino-button.JPG)
ou
CAN BUS
https://www.sparkfun.com/products/13262 (https://www.sparkfun.com/products/13262)

Mon équipement:
http://www.ecutalk.com.au/interface.aspx (http://www.ecutalk.com.au/interface.aspx)

Image de la prise diag de l'ECU:
(http://www.ecutalk.com.au/images/consult_car.jpg)
Le 12V est commun à toutes voiture, mais s'il le faut je trouverais le descriptif

Nissan Consult commercial:
http://www.ecutalk.com.au/consultlcd.aspx (http://www.ecutalk.com.au/consultlcd.aspx)
Title: Re: Projet Control module
Post by: 200sx200 on Jun 04, 2017, 07:26 pm
Schéma d'une prise Consult:
image 1 (http://arduino.cybrax-computers.com/files/consult-if-rev4.pdf)
image 2 (http://www003.upp.so-net.ne.jp/doggie/car/consult/consult_analysys/img/CONSULT_IF.BMP)

Le IGN = 12V

cable (http://s85.photobucket.com/user/eazye4you/media/Consult%20Cables/P1010289.jpg.html)
RS232 (http://www.jamiekline.com/the-yacht/)
Title: Re: Projet Control module
Post by: trimarco232 on Jun 04, 2017, 09:27 pm
Quote
La prise du nom "OBD1 ou 2" sont universel.
Non : ni la prise de la Pontiac ni celle de la Nissan ne ressemble à de l'ODB1 ou 2 ...

la Nissan, qui fait l'objet de ce topic, a une prise 14 broches, (propriétaire ?)
mécaniquement, comment compte-tu te raccorder dessus ?
- acquérir la prise femelle qui lui correspond
- détruire la prise et la remplacer par une prise "standard du commerce"
- acquérir un adaptateur Nissan vers  prise "standard du commerce"
Title: Re: Projet Control module
Post by: 200sx200 on Jun 04, 2017, 09:58 pm
Non : ni la prise de la Pontiac ni celle de la Nissan ne ressemble à de l'ODB1 ou 2
OBD1 différent du 2 oui mais sont propre à eux même, si adaptateur ou les 5 pins branché sur le "2" l'OBD2 prend en compte le "1"

la Nissan, qui fait l'objet de ce topic, a une prise 14 broches, (propriétaire ?)
Cela déprend si prise OBD1 ou 2 ;)

mécaniquement, comment compte-tu te raccorder dessus ?
Mécaniquement, je compte:
-Retirer la prise OBD1 (sortie d'ECU) pour y mettre une DB9(SUB-D).
-La prise OBD1 retiré sera relié à la sortie Tx/Rx de la MEGA pour la prise de diag supplémentaire.

Comme ça je garde mon câble adaptateur USB=>ODB1 ;)
Title: Re: Projet Control module
Post by: trimarco232 on Jun 05, 2017, 12:41 pm
Bonjour,
électriquement, tu comptes réaliser l'interface comment ?
Title: Re: Projet Control module
Post by: 200sx200 on Jun 05, 2017, 12:44 pm
Le schéma électrique ou l'interface du LCD ?
Title: Re: Projet Control module
Post by: trimarco232 on Jun 05, 2017, 07:03 pm
l'interface entre l'ECU et l'arduino ?
Title: Re: Projet Control module
Post by: 200sx200 on Jun 05, 2017, 07:25 pm
Ah ok :

C'est simple je transforme la prise OBD1 d'origine en une DB9 (5 fils à brancher)

Ensuite:

La DB9 sur la shield rx232 (MAX232)
(http://arduino.cybrax-computers.com/files/max232.jpg)
Title: Re: Projet Control module
Post by: trimarco232 on Jun 05, 2017, 09:57 pm
c'est simple mais, au mieux cela ne fonctionnera pas, au pire ça abîmera l'ECU

le max232 sert à interfacer un arduino avec un vieil ordinateur, pas avec ton ECU

il faut créer ou acquérir l'interface qui va bien et qui est décrite dans les schémas que tu as posté 
Title: Re: Projet Control module
Post by: 200sx200 on Jun 05, 2017, 10:55 pm
Exacte je suis sortie de mon idée de base  :smiley-confuse:

Il existe plusieurs interface différentes, j'en possède une mais en USB. Je peux éventuellement la modifié pour être en DB9 ?

Pour la brancher sur la shield rs232.

Ou ça ? :
https://www.sparkfun.com/products/13262 (https://www.sparkfun.com/products/13262)
ou
https://www.sparkfun.com/products/9555?_ga=2.241302658.1495317074.1496695181-1792960108.1496445297 (https://www.sparkfun.com/products/9555?_ga=2.241302658.1495317074.1496695181-1792960108.1496445297)
Title: Re: Projet Control module
Post by: trimarco232 on Jun 06, 2017, 08:09 am
Quote
Il existe plusieurs interface différentes, j'en possède une mais en USB. Je peux éventuellement la modifié pour être en DB9 ?
Pour la brancher sur la shield rs232.
oui, tu peux la modifier pour être en DB9, mais je ne vois pas en quoi cela t'avancera dans ton projet, il faudrait que tu l'explique


Quote
Pour la brancher sur la shield rs232.
à quoi se rapporte cette phrase, qu'est ce que tu veux brancher sur la shield rs232 ?
- ton interface usb que tu as évoqué avant ?
- ou une des 2 cartes dont tu as donné le lien ?
Title: Re: Projet Control module
Post by: 200sx200 on Jun 06, 2017, 09:27 am
oui, tu peux la modifier pour être en DB9, mais je ne vois pas en quoi cela t'avancera dans ton projet, il faudrait que tu l'explique
Je préfère avoir une DB9 qui ce vise sur la shield + arduino qui seront dans un boitier plutôt qu'une prise USB qui pourrait ce débrancher par exemple.

à quoi se rapporte cette phrase, qu'est ce que tu veux brancher sur la shield rs232 ?
- ton interface usb que tu as évoqué avant ?
- ou une des 2 cartes dont tu as donné le lien ?
oui l'interface USB, que je souhaite modifier en DB9.


Mais c'est juste de l'esthétique ça je dirais :)
Title: Re: Projet Control module
Post by: trimarco232 on Jun 06, 2017, 01:49 pm
essayons d'avancer :
fais le schéma électrique de l'interface entre l'ECU et l'arduino
je te dirai ce qui va et ce qui ne vas pas, et te demanderai au besoin de justifier tes choix
Title: Re: Projet Control module
Post by: 200sx200 on Jun 06, 2017, 02:26 pm
essayons d'avancer :
fais le schéma électrique de l'interface entre l'ECU et l'arduino
je te dirai ce qui va et ce qui ne vas pas, et te demanderai au besoin de justifier tes choix
oui :) en simple hein ^^

(https://scontent-cdg2-1.xx.fbcdn.net/v/t31.0-8/18891433_10209564166766584_1761533549001327915_o.jpg?oh=95c0ec7c812c50b9a021ccc338be2f67&oe=59A2662B)

Source du Schéma (http://arduino.cybrax-computers.com/files/max232.jpg) RS232

http://arduino.cybrax-computers.com/ (http://arduino.cybrax-computers.com/)
Title: Re: Projet Control module
Post by: trimarco232 on Jun 06, 2017, 02:48 pm
un schéma, c'est représenter chaque fil et chaque composant, de bout en bout
Title: Re: Projet Control module
Post by: 200sx200 on Jun 06, 2017, 06:57 pm
Je ne saurais te dessiner l'interface :/
Title: Re: Projet Control module
Post by: 200sx200 on Jun 06, 2017, 07:35 pm
un peu plus détaillé ;)

(https://scontent-cdg2-1.xx.fbcdn.net/v/t31.0-8/18891433_10209566147016089_893387239669027399_o.jpg?oh=61d14e2ec0ab16d3294d7902be4bda51&oe=599CD831)
Taille réelle (https://scontent-cdg2-1.xx.fbcdn.net/v/t31.0-8/18891433_10209566147016089_893387239669027399_o.jpg?oh=61d14e2ec0ab16d3294d7902be4bda51&oe=599CD831)

Schéma interface Consult:
http://arduino.cybrax-computers.com/files/consult-if-rev4.pdf (http://arduino.cybrax-computers.com/files/consult-if-rev4.pdf)
Title: Re: Projet Control module
Post by: trimarco232 on Jun 06, 2017, 09:57 pm
Quote
Je ne saurais te dessiner l'interface
c'est un souci, car si tu n'as pas de notion d'électronique, et, comme je crains, il n'existe pas d'interface toute faite pour ce que tu souhaites réaliser, on risque de ne pas y arriver

où en sont tes notions en électronique, sais tu ce qu'est une résistance, un transistor, as-tu déjà réalisé un module ?
Title: Re: Projet Control module
Post by: 200sx200 on Jun 06, 2017, 10:19 pm
J'ai déjà l'interface, je n'ai nullement besoin de la recréer ;)

Juste besoin de remplacer l'usb par du db9. Après comme écrit au début , oui je débute mais il faut bien commencer quelque part :)

Je fais ce projet car je créer un prototype du début à la fin, je fais toutes les étapes seul (soudage, carrosserie, mécanique, électrique, etc.....)

J'ai appris chaque étapes, je le ferais ici aussi :)
Title: Re: Projet Control module
Post by: trimarco232 on Jun 06, 2017, 10:45 pm
Quote
fais le schéma électrique de l'interface entre l'ECU et l'arduino
Quote
J'ai déjà l'interface, je n'ai nullement besoin de la recréer
alors c'est moi qui n'ai rien compris

dans ce cas sers toi de cette interface, fais des requêtes de l'arduino vers l'ECU, regarde les réponses, reviens nous solliciter si tu as des difficultés pour développer ton sketch
Title: Re: Projet Control module
Post by: 200sx200 on Jun 06, 2017, 10:59 pm
y'a pas de mal bien au contraire.

Merci beaucoup de votre aide :)

Je n'ai pas encore commencé à apprendre ce types de codes :/  mais sa va venir :)



Title: Re: Projet Control module
Post by: 200sx200 on Jun 07, 2017, 04:05 pm
Bonjour,

J'ai donc réussi à alimenter mon écu (hors de la voiture) et la connexion avec le PC est un succès (avec l'interface).
Je souhaite donc maintenant connecté l'interface sur l'arduino, ne possédant par encore le shield puis-je connecté l'usb directement sur l'arduino en utilisant les pins (+5v,gnd,Tx,Rx) ? (Tx/Rx = Data +/- ?)
 


je regarde aussi le type de langage de l'écu.
J'ai noté qu'il y a une différence entre l'écu d'une boite manuel à un écu de boite auto .

Pensez vous que je puisse récupérer le langage en le renvoyant avec le langage de boite auto ? (avec l'arduino)

Langage nissan (http://arduino.cybrax-computers.com/files/Generic-Nissan-ECU-Sensor-or-Data-register-table-Ver-2.pdf)

Cependant j'ai un programme arduino "fonctionnel" mais je trouve pas de cohérence avec le langage nissan précédemment posté. (Source internet)
La vidéo:
https://www.youtube.com/watch?v=kORjR_Akfbg&t=0s (https://www.youtube.com/watch?v=kORjR_Akfbg&t=0s)
Le code:
arduino-consult.ino (http://arduino.cybrax-computers.com/files/arduino-consult.ino)

Si par exemple je ne connaissais pas le langage de l'écu quelles seraient les étapes pour communiquer avec ?
Title: Re: Projet Control module
Post by: trimarco232 on Jun 08, 2017, 12:50 pm
Quote
puis-je connecté l'usb directement sur l'arduino en utilisant les pins (+5v,gnd,Tx,Rx) ? (Tx/Rx = Data +/- ?)
Bonjour,
à priori non, un usb device comme ton interface se raccorde sur la prise d'un PC ou d'un appareil USB Host
tu ne peux raccorder ton interface sur les lignes tx/rx de l'arduino que si ton interface est prévue pour cela, et qu'elle dispose d'une connection tx/rx


Quote
Si par exemple je ne connaissais pas le langage de l'écu quelles seraient les étapes pour communiquer avec ?
on peut essayer par tâtonnement, par analogie, mais c'est risqué
Title: Re: Projet Control module
Post by: 200sx200 on Jun 08, 2017, 01:12 pm
Merci beaucoup c'est ce que je trouvais sur internet, c'est maintenant confirmé je patient donc qu'il arrive :)

Je vais donc partir sur le principe que le langage est bon, auquel cas je peut toujours utilisé le langage du fichier .ino précédemment posté.
Title: Re: Projet Control module
Post by: 200sx200 on Jun 10, 2017, 08:30 pm
Bonjour,

J'ai fais un programme qui envoie toutes les 3 secondes les valeurs :0xff,0xff,0xef  (code de connexion avec l'écu nissan).

Pour l'envoyé sur la 2eme carte pas de soucie, en revanche je voudrais que à la réception de valeurs (0xff,0xff,0xef)=> l'écran affiche "Initializing ECU"

Mais impossible d'afficher autre chose que des chiffres ou des données incohérentes .
Title: Re: Projet Control module
Post by: 200sx200 on Jun 11, 2017, 07:05 pm
Voila donc mes 2 Programme, envoie et reception:

Arduino1 (Transmission):

Code: [Select]

#include <SoftwareSerial.h>

void setup() {
  Serial.begin(9600);
  Serial2.begin(9600);

}

void loop() {
  // lit du port 0, envoie du port 2
  if (Serial.available()) {
    int inByte = Serial.read();
    Serial2.print(inByte);

  }

  if (Serial2.available()) {
    int inByte2 = Serial2.read();
    Serial.print(inByte2);

  }
}


Arduino 2 (Reception):
Code: [Select]

#include <UTFT.h>
#include <SoftwareSerial.h>

//calibration
#define CAL_X 0x004F4E75UL
#define CAL_Y 0x00948DC0UL
#define CAL_S 0x8031F1DFUL

//Screen initialization
UTFT        myGLCD(CTE70, 38, 39, 40, 41);

// RX, TX
SoftwareSerial mySerial(17, 16);

// Declare which fonts we will be using
extern uint8_t BigFont[];
extern uint8_t SevenSegNumFont[];

byte valeur ;

//setup
void setup()
{
  Serial2.begin(9600);
  myGLCD.InitLCD(LANDSCAPE);                   // Initialize the display
  myGLCD.setFont(BigFont);
  myGLCD.fillScr(0, 0, 0);
  myGLCD.clrScr();                            // Clear the screen (black)
}

//loop
void loop()
{

  if (Serial2.available() > 0) { // si des données entrantes sont présentes
    // lit le 1er octet arrivé
    valeur = Serial2.read();

    // dit ce que vous obtenez
    valeur = Serial2.parseInt();
    int batt = valeur + 10;
    myGLCD.setFont(BigFont);
    myGLCD.setColor(87, 255, 45);
    myGLCD.setBackColor(0, 0, 0);
    myGLCD.print("J'ai recu : ", 15, 80);
    myGLCD.printNumF(batt, 1, 200, 80);
    myGLCD.print("Volts", 280, 80);
    delay(1000);
    myGLCD.clrScr();
    Serial2.println("transmis");// confirmation sur monitor de l'arduino 1
    Serial2.println();
  }
}//fin du loop



Résultat:
Si je tape "1" sur le moniteur (serial) de l'arduino 1 => ça s'affiche bien à l'écran mais comme valeur "19.0" sur l'écran au lieu de "1.0" et je reçois "transmis" en chiffre "1161149711011510910511513101310" sur le serial moniteur.


Ma question est pourquoi si je passe par le serial monitor les données changent ? (affichage TFT7")
Title: Re: Projet Control module
Post by: 200sx200 on Jun 13, 2017, 10:12 pm
Bonjour,

Je reviens après de nombreuse heures de programmation :)

J'ai fini par faire un début de programme avec comme départ une source faite http://arduino.cybrax-computers.com/ (http://arduino.cybrax-computers.com/), modifié pour être compatible avec mon écran tft.

Le code :
Code: [Select]

#include <Wire.h>  // Comes with Arduino IDE
#include <UTFT.h>
#include <SoftwareSerial.h>

//calibration
#define CAL_X 0x004F4E75UL
#define CAL_Y 0x00948DC0UL
#define CAL_S 0x8031F1DFUL

//Screen initialization
UTFT        myGLCD(CTE70, 38, 39, 40, 41);

// RX, TX
SoftwareSerial mySerial(17, 16);

// Declare which fonts we will be using
extern uint8_t BigFont[];
extern uint8_t SevenSegNumFont[];

byte valeur ;
byte consult[28]; // consult[38]
byte consultt[32];
byte iinit = 0x00; // iinit must be 0x10
boolean cf = false; // if 0xCF
boolean initt = false;
boolean ct = false;
boolean ii = false;
boolean ss = false;
boolean pp = true;
byte sped;
byte a = 0;
byte b;
byte c;
long rpm;
float rpm_msb;
float rpm_lsb;
byte water;
float batt;
float maf;
float maf_msb;
float maf_lsb;
float tps;
float inj_msb;
float inj_lsb;
float inj;
byte ign;
byte lambda;

boolean error = false; //error code definiton
byte eror[64];
byte r;
byte rr = 0;
byte ppp = 0;
byte iii = 0;
byte j;
byte but = 0;
boolean butt = true;
byte rrr;

String cas = "CAS/CamPS sensor"; // 0x11
String maff = "MAF sensor"; // 0x12
String coolant = "Coolant t sensor"; // 0x13
String spedd = "Speed sensor"; // 0x14
String ignition = "Noignitionsignal"; // 0x21
String ecu = "ECU malfunction"; // 0x31
String egr = "EGR malfunction"; // 0x32
String oxygen = "Oxygen sensor"; // 0x33
String knock = "Knock sensor"; // 0x34
String gas = "Gas t sensor"; // 0x35
String iat = "IAT sensor"; // 0x41
String fuelt = "Fuel t sensor"; // 0x42
String tpss = "TPS sensor"; // 0x43
String injector = "Injector leak"; // 0x45
String at = "A/T control"; // 0x54
String no = "No malfunction"; //0x55

int menu;
int rc;
int clc;
int test;

//setup
void setup()   /*----( SETUP: RUNS ONCE )----*/
{
  Serial.begin(9600);
  Serial2.begin(9600);
  myGLCD.InitLCD(LANDSCAPE);                   // Initialize the display
  myGLCD.setFont(BigFont);
  myGLCD.setColor(87, 255, 45);
  myGLCD.fillScr(0, 0, 0);
  myGLCD.clrScr();                            // Clear the screen (black)

}

//loop
void loop() {

skorost:      if (ii == false) {
    Serial.println();
    Serial.print("connection...");
    Serial2.write(0xFF);
    Serial2.write(0xFF);
    Serial2.write(0xEF);
    myGLCD.print("connection...", 5, 5);
    myGLCD.clrScr();
    delay(200);
    iinit = Serial2.read();
    if (iinit == 0x10) {
      myGLCD.print(iinit, 5, 5);
      Serial.println();
      Serial.println("connecter");
      myGLCD.print("connecter", 5, 5);
      delay(1);
      ii = true;
      myGLCD.clrScr();
    }
  }

  if (iinit != 0x10) {
    goto skorost;
  }



seriall:  myGLCD.clrScr();
  if (ss == false) {
    Serial2.write(0x5A);
    Serial2.write(0x0B);
    Serial2.write(0x5A);
    Serial2.write(0x00);
    Serial2.write(0x5A);
    Serial2.write(0x01);
    Serial2.write(0x5A);
    Serial2.write(0x08);
    Serial2.write(0x5A);
    Serial2.write(0x0C);
    Serial2.write(0x5A);
    Serial2.write(0x04);
    Serial2.write(0x5A);
    Serial2.write(0x05);
    Serial2.write(0x5A);
    Serial2.write(0x0D);
    Serial2.write(0x5A);
    Serial2.write(0x14);
    Serial2.write(0x5A);
    Serial2.write(0x15);
    Serial2.write(0x5A);
    Serial2.write(0x16);
    Serial2.write(0x5A);
    Serial2.write(0x09);
    Serial2.write(0xF0);

    delay(1);
    ss = true;
  }

  if (ct == false) {
    Serial2.readBytes(consultt, 32);
    Serial.print("consult");
    ct = true;
  }

  myGLCD.print("Km/h", 5, 0);
  myGLCD.print("RPM", 5, 20);
  myGLCD.print("Batt", 5, 40);
  myGLCD.print("Water-T", 5, 60);
  myGLCD.print("C", 5, 80);
  myGLCD.print("MAF", 5, 100);
  myGLCD.print("V", 5, 120);
  myGLCD.print("TPS", 5, 140);
  myGLCD.print("Inj", 5, 160);
  myGLCD.print("ms", 5, 180);
  myGLCD.print("IGN", 5, 200);


skorostt:  Serial2.readBytes(consult, 28);



 

  if (batt >= 10.0) {
    int x = batt;
    myGLCD.printNumI(x, 80, 40);
  }

  if (batt <= 9.99) {
    int x = batt;
    myGLCD.printNumI(x, 80, 40);
  }
}

 if (consult[1] == 0xFF && consult [2] == 0x0C && consult[15] == 0xFF && consult[16] == 0x0C) {
    sped = consult[3] * 2;
    rpm_msb = consult[4];
    rpm_lsb = consult[5];
    rpm = (((rpm_msb * 256.0) + rpm_lsb) * 12.5);
    water = consult[6] - 50;
    batt = (consult[7] * 80) / 1000.0;
    maf_msb = consult[8];
    maf_lsb = consult[9];
    maf = ((((maf_msb * 256) + maf_lsb) * 5) / 1000.0);
    tps = consult[10];
    tps = ((tps * 20) / 1000.0);
    inj_msb = consult[11];
    inj_lsb = consult[12];
    inj = (((inj_msb * 256) + inj_lsb) / 100.0);
    ign = 110 - consult[13];
  }

if .....


une partie à été retiré (trop de caractère pour le forum).

J'ai pue testé le programme en remplacent le "==" par "=" à "if (iinit == 0x10)" ce qui simule le changement de "iinit" et donc le programme passe au reste et affiche a l'écran les résultats (ici "0" car rien ne rentre).


Mon problème est que je n'arrive pas à recevoir ou envoyé à l'écu. Branchement ?
Title: Re: Projet Control module
Post by: trimarco232 on Jun 14, 2017, 02:08 pm
Quote
Branchement ?
Bonjour,
oui, c'est quoi ton Branchement ?
Title: Re: Projet Control module
Post by: 200sx200 on Jun 14, 2017, 07:38 pm
oui, c'est quoi ton Branchement ?
Alors j'en ai essayé plussieurs :

-En direct sur le rs232 de la prise diag (le Rx reste allumé en continue)
-via un câble fait maison USB => DB9 (même résultat)
-via usb de l'interface => l'usb de l'arduino, mais étant donné que le shield du TFT est branché sur le Rx0 et Tx0 sa dois venir en confusion.

J'ai donc commandé une interface pour arduino interface arduino (https://freematics.com/store/index.php?route=product/product&product_id=83).
Title: Re: Projet Control module
Post by: trimarco232 on Jun 16, 2017, 02:36 pm
Quote
J'ai donc commandé une interface pour arduino interface arduino.
Bonjour,
concernant ton achat :
Vehicles using following vehicle protocols are supported.
CAN 500Kbps/29bit
CAN 500Kbps/11bit
CAN 250Kbps/29bit
CAN 250Kbps/11bit
KWP2000 Fast
KWP2000 5Kbps
ISO9141-2

as-tu vérifié que ton ECU répond à un de ces protocoles ?
Title: Re: Projet Control module
Post by: 200sx200 on Jun 16, 2017, 04:29 pm
J'ai pris avec l'adapter (http://www.obdinnovations.com/14-pin-consult-to-16-pin-obd2-diagnostic-adapter-cable-for-nissan-infiniti/) OBD1 => OBD2 qui d'après le site est compatible.
Title: Re: Projet Control module
Post by: trimarco232 on Jun 16, 2017, 06:22 pm
Quote
This adapter cable allows you to connect your Nissan and Infiniti 14 pin Consult I port to a compatible 16 pin OBDII diagnostic tool.
attention à la traduction, ce que je crains de lire c'est :
adaptateur pour un ODB2 compatible (cad. compatible avec un ODB2 particulier qui serait compatible à Nissan)
au lieu de :
adaptateur compatible avec ODB2, comme on l'espère


si quelqu'un d'autre peut donner son avis ?
Title: Re: Projet Control module
Post by: 200sx200 on Jun 16, 2017, 07:39 pm
En fait c'est que le câble est compatible OBD1 / 2 (avec l'adaptateur) mais que le programme du 1 ne lit pas le 2 et vise-versa, il faut donc que j'utilise le script de la 1 pour lire la 1 et la 2 pour la 2.
Chaque version ont un langage à eux même.

Je ferais les tests via la prise usb supplémentaire pour PC.
Title: Re: Projet Control module
Post by: 200sx200 on Jun 22, 2017, 12:22 am
Photo de mon interface usb:

(https://scontent-cdg2-1.xx.fbcdn.net/v/t1.0-9/19399729_10209691920320343_243597244892658990_n.jpg?oh=88dc0206a04e056260e142ac103e6f9a&oe=59D054F3)
Taille réelle (https://scontent-cdg2-1.xx.fbcdn.net/v/t1.0-9/19399729_10209691920320343_243597244892658990_n.jpg?oh=88dc0206a04e056260e142ac103e6f9a&oe=59D054F3)

Back (FT232):

(https://scontent-cdg2-1.xx.fbcdn.net/v/t1.0-9/19424560_10209691920640351_109361242795992529_n.jpg?oh=011d1f97f09b8065b6b2abf2814aa2ed&oe=59D7EFBA)
Taille réelle (https://scontent-cdg2-1.xx.fbcdn.net/v/t1.0-9/19424560_10209691920640351_109361242795992529_n.jpg?oh=011d1f97f09b8065b6b2abf2814aa2ed&oe=59D7EFBA)
Title: Re: Projet Control module
Post by: 200sx200 on Jun 23, 2017, 06:38 pm
Si j'utilise un FTDI usb cela peut-il fonctionner ?

FTDI-FT232RL-USB-to-TTL-Serial-Adapter (http://www.ebay.fr/itm/FTDI-FT232RL-USB-to-TTL-Serial-Adapter-Module-5V-and-3-3V-For-Arduino-G3/262812320376?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2057872.m2749.l2649)
Title: Re: Projet Control module
Post by: BrUnO14200 on Jun 23, 2017, 09:15 pm
Ca détecte les chats-bielles ton truc ?

Je plaisante ;) ! Je suis avec interêt !
Title: Re: Projet Control module
Post by: 200sx200 on Jun 23, 2017, 09:23 pm
MDR qui sait ;D
Title: Re: Projet Control module
Post by: trimarco232 on Jun 24, 2017, 01:15 pm
Quote
Si j'utilise un FTDI usb cela peut-il fonctionner ?
peux-tu préciser ce que tu veux interfacer avec ceci ?
Title: Re: Projet Control module
Post by: 200sx200 on Jun 24, 2017, 02:01 pm
Pour connecter l'interface en photo à l'arduino .
Title: Re: Projet Control module
Post by: BrUnO14200 on Jun 24, 2017, 02:10 pm
Perso j'ai acheté un lecteur OBD pour Arduino de chez Freematics . Je l'ai pas encore testé en revanche ..
Title: Re: Projet Control module
Post by: 200sx200 on Jun 24, 2017, 02:29 pm
Je le possède aussi , mais la librairie fournie est prévu pour de l'OBD2 et ne peut fonctionné avec l'OBD1 (pas le même langage).

J'ai donc essayé avec mon programme et un câble adaptateur Nissan consult => OBD2 + OBD Freematics mais sans succès :(

Sur internet on peut trouver des programmes Nissan consult pour arduino mais obsolète car la 1ere version de l'adaptateur fonctionnait en RS232 et n'est plus vendue, remplacé par du FTDI FT232.

Ma question était donc si je connecte un adaptateur usb=>TTL "FTDI" pour Arduino, je devrais pouvoir envoyer et recevoir de mon interface ?

Ps: Le 12V n'est pas connecter dans l'interface USB(en photo) seul le Rw,Tx,GND,CLK sont connectés.
Title: Re: Projet Control module
Post by: trimarco232 on Jun 25, 2017, 12:01 pm
Quote
Pour connecter l'interface en photo à l'arduino
ça, tu peux oublier : cette interface est faite pour connecter l'odb à un ordinateur via usb, pas à un arduino

l'usb de l'ordinateur fonctionne en mode host, avec le driver puis le firmware qui vont bien. L'arduino n'a rien de tout cela et n'est pas destiné à l'avoir

donc je répète : ce qu'il te faut c'est une interface pour raccorder ton ECU à l'arduino
Title: Re: Projet Control module
Post by: 200sx200 on Jun 25, 2017, 02:38 pm
D'accord, mais dans ce cas précis je fais comment si je ne peux utiliser mon interface usb ?

Car la seul chose qu'il y a sur le net c'est ce Schéma (http://arduino.cybrax-computers.com/files/consult-if-rev4.pdf) + max232.jpg (http://arduino.cybrax-computers.com/files/max232.jpg)


Je peux peut-être utiliser mon shield rs232 ? (Shield-Arduino (http://www.conrad.fr/ce/fr/product/1310314/RS232-Shield-pour-Arduino-et-pcDuino-Joy-IT-RS232-ARD-RS232-1-pcs))
Title: Re: Projet Control module
Post by: trimarco232 on Jun 25, 2017, 10:18 pm
Quote
la seul chose qu'il y a sur le net c'est ce Schéma
dans ce cas c'est de là qu'il faut partir


Quote
+ max232.jpg
inutile, ce qu'on veut interfacer c'est :
Quote
donc je répète : ce qu'il te faut c'est une interface pour raccorder ton ECU à l'arduino
donc le rs232 n'a aucune utilité


Quote
Je peux peut-être utiliser mon shield rs232 ?
Quote
le rs232 n'a aucune utilité
définitivement !
Title: Re: Projet Control module
Post by: 200sx200 on Jun 25, 2017, 10:34 pm
D'accord, donc le rs232 n'a aucune utilité, mais le schéma aussi alors ? (puisqu'il est en rs232)

je commence par quoi car si je ne peux rien utilisé de ce qui existe déjà ?

C'est pas mieux de rendre compatible le FTDI pour l'arduino ?

Title: Re: Projet Control module
Post by: trimarco232 on Jun 25, 2017, 10:53 pm
Quote
D'accord, donc le rs232 n'a aucune utilité, mais le schéma aussi alors ? (puisqu'il est en rs232)
l'auteur du schéma à ajouté un max232 sans doute parce qu'il en a besoin par ailleurs, ce qui n'est pas ton cas


Quote
je commence par quoi car si je ne peux rien utilisé de ce qui existe déjà ?
l'auteur de l'article à réalisé son interface avec une plaque pastillée



Quote
C'est pas mieux de rendre compatible le FTDI pour l'arduino ?
je ne comprends pas ce que tu veux dire ?
Title: Re: Projet Control module
Post by: 200sx200 on Jun 25, 2017, 11:04 pm
Rendre l'arduino compatible avec le FTDI permet d'utilisé les interfaces actuelles qui fonctionnent sous FTDI comme ce que j'ai posté plus tôt en photo.
Title: Re: Projet Control module
Post by: trimarco232 on Jun 26, 2017, 04:31 pm
désolé, toujours obscur pour moi
Title: Re: Projet Control module
Post by: 200sx200 on Jun 26, 2017, 04:55 pm
Pour quelles raisons ?
Title: Re: Projet Control module
Post by: trimarco232 on Jun 27, 2017, 06:54 pm
il faudrait que tu fasses un petit dessin de ton idée, afin que l'on puisse comprendre
tu ne voudrais par hasard pas brancher la prise usb de ton interface ordinateur sur un arduino ?
Title: Re: Projet Control module
Post by: 200sx200 on Jun 27, 2017, 07:02 pm
Oui c'est ça ;)

interface "USB" = "interface ordinateur" à brancher sur l'arduino.
Title: Re: Projet Control module
Post by: trimarco232 on Jun 27, 2017, 07:53 pm
on aurait donc ceci :

utilisation normale :
ECU <-> interface ECU/USB <-> PC (avec le driver et l'appli qui vont bien)

utilisation projetée par 200sx200 :
ECU <-> interface ECU/USB <-> shield usb host <-> arduino (avec le driver et l'appli qui iraient bien)

perso, je ne saurai pas faire, et tu trouveras difficilement quelqu'un qui puisse t'aider dans cette aventure
les 2 difficultés sont :
1) mise en oeuvre d'un shield usb host : perso, jamais vu dans ce forum
2) rétro-ingénierie de l'appli sur PC (celle qui fait fonctionner ton interface ECU/USB) et transcription sur l'arduino : il y risque que personne au monde ne se soit lancé dans une telle affaire, parce que pour quiconque, il est mille fois plus simple de réaliser une interface ECU/arduino, conformément au schéma dont tu disposes. Donc, je peux me tromper mais je crains que tu n'auras aucune aide pour ton utilisation projetée
Title: Re: Projet Control module
Post by: 200sx200 on Jun 27, 2017, 07:56 pm
D'accord merci, donc je crée une interface avec le Schéma mais sans le MAX232 ?
Title: Re: Projet Control module
Post by: trimarco232 on Jun 27, 2017, 08:01 pm
Quote
sans le MAX232 ?
oui, car il ne sert à rien dans une interface ECU/arduino
tu devrais également pouvoir te passer du générateur d'horloge, car l'arduino doit pouvoir s'en charger
Title: Re: Projet Control module
Post by: 200sx200 on Jun 27, 2017, 08:02 pm
J'ai trouvé ça sur le net:

(https://scontent-cdg2-1.xx.fbcdn.net/v/t31.0-8/19401950_10209741235873201_4589449887992852812_o.jpg?oh=e0b76216bf895e4ecbcfc8eb25fff5d2&oe=59C6EC40)
Taille réelle (https://scontent-cdg2-1.xx.fbcdn.net/v/t31.0-8/19401950_10209741235873201_4589449887992852812_o.jpg?oh=e0b76216bf895e4ecbcfc8eb25fff5d2&oe=59C6EC40)

et

arduino nissan consult (https://www.google.fr/imgres?imgurl=http%3A%2F%2Fsnag.gy%2FQ7i92.jpg&imgrefurl=http%3A%2F%2Fforum.arduino.cc%2Findex.php%3Ftopic%3D238967.15&docid=ZavREZl_tL2YeM&tbnid=dyPJheCRkqfNkM%3A&vet=10ahUKEwjO4r23zt7UAhVFDMAKHW5mAtgQMwghKAAwAA..i&w=1173&h=1139&client=firefox-b&bih=820&biw=1586&q=arduino%20nissan%20consult%20ecu&ved=0ahUKEwjO4r23zt7UAhVFDMAKHW5mAtgQMwghKAAwAA&iact=mrc&uact=8)
Title: Re: Projet Control module
Post by: trimarco232 on Jun 27, 2017, 11:15 pm
le 1er schéma m'a l'air moins tourmenté que le 2ème

je partirais donc sur le 1er (as-tu le lien ?)
il faut dupliquer la partie TX -> RX pour transmettre l'horloge ( l'appeler TCK et RCK)

Title: Re: Projet Control module
Post by: 200sx200 on Jun 27, 2017, 11:47 pm
Je l'ai eu ici (https://forum.arduino.cc/index.php?topic=81296.0) mais forum laissé à l'abandon.


J'ai dessiné ça via fritzing = celui là (http://arduino.cybrax-computers.com/files/consult-if-rev4.pdf)

(https://scontent-cdg2-1.xx.fbcdn.net/v/t31.0-8/19466293_10209741589282036_1150219420853772051_o.jpg?oh=ffa9319ed8eca26c3b20a13a13341989&oe=59CC025A)
Taille réelle (https://scontent-cdg2-1.xx.fbcdn.net/v/t31.0-8/19466293_10209741589282036_1150219420853772051_o.jpg?oh=ffa9319ed8eca26c3b20a13a13341989&oe=59CC025A)
Title: Re: Projet Control module
Post by: trimarco232 on Jun 28, 2017, 12:51 pm
Quote
il faut dupliquer la partie TX -> RX pour transmettre l'horloge ( l'appeler TCK et RCK)
pour la partie réception, je mettrais un simple résistance de pull up à 5v, pour l'instant
Title: Re: Projet Control module
Post by: 200sx200 on Jun 28, 2017, 05:45 pm
Comme cela ?

(https://scontent-cdg2-1.xx.fbcdn.net/v/t31.0-8/19467784_10209752025622938_1110419410498058982_o.jpg?oh=98c5322f9d6fd88e01048717284cb016&oe=5A111B20)
Taille réelle (https://scontent-cdg2-1.xx.fbcdn.net/v/t31.0-8/19467784_10209752025622938_1110419410498058982_o.jpg?oh=98c5322f9d6fd88e01048717284cb016&oe=5A111B20)
Title: Re: Projet Control module
Post by: trimarco232 on Jun 28, 2017, 10:57 pm
zut, je parlais de la réception de l'arduino ...

donc vis à vis de l'ECU :
TX : diviseur de tension (pas d'ampli op)
RX : transistor avec pull up sur IGN
CLK : idem RX
Title: Re: Projet Control module
Post by: 200sx200 on Jun 29, 2017, 08:32 pm
Je vais redessiner le Schéma.


Avec un programme en C++ je ne pourrais pas transmettre les infos nécessaires à l'arduino ? (en examinant un programme de consultation comme "Ecutalk")

Ex:
-ECU branché avec interface FTDI sur PC Windows + Prog de diagnostique.
-Programme C++ de transmission des données tr/min, km/h, %accel.
-Réception Arduino (3données) = + de rapidité (moins de calcul)

Je demande car je vais plutôt utiliser mini PC sous Windows pour l'écran 7" de diagnostique. (et multitâches comme lecteur audio ect...)

Title: Re: Projet Control module
Post by: trimarco232 on Jun 30, 2017, 01:18 am
Quote
Avec un programme en C++ je ne pourrais pas transmettre les infos nécessaires à l'arduino ?
oui, avec 2 liaisons usb :
1 entre ton interface et le PC
1 entre l'arduino et le PC

2 soucis se profilent :
- liaison entre le programme de diagnostic et ton programme C++, je ne sais pas si ton programme de diagnostic est assez ouvert pour récupérer et transmettre des données (ou des scripts)
- windaube dans un véhicule : "et hop je dépasse le camion ... zut, écran bleu"
Title: Re: Projet Control module
Post by: 200sx200 on Jun 30, 2017, 08:05 am
oui, avec 2 liaisons usb :
1 entre ton interface et le PC
1 entre l'arduino et le PC
Tu veux dire comme si les 2 USB était connectés sur un hub usb, qu'il y est une connexion physique entre les deux ?

liaison entre le programme de diagnostic et ton programme C++, je ne sais pas si ton programme de diagnostic est assez ouvert pour récupérer et transmettre des données (ou des scripts)
Je ne pense pas mais plusieurs freeware existe par exemple Ecutalk (http://www.ecutalk.com.au/ecutalk.aspx) qui est un mini programme .exe (pas d'installation) qui le pourrait peut-être. 

windaube dans un véhicule : "et hop je dépasse le camion ... zut, écran bleu"
Perso j'ai roulé avec un système similaire avec pendant 1an et j'ai jamais eu de soucis :/

Sinon je mettrais des amortisseurs inertiel ....  MDR
Title: Re: Projet Control module
Post by: trimarco232 on Jun 30, 2017, 08:20 am
Quote
Quote
oui, avec 2 liaisons usb :
1 entre ton interface et le PC
1 entre l'arduino et le PC
Tu veux dire comme si les 2 USB était connectés sur un hub usb, qu'il y est une connexion physique entre les deux ?
oui, mais il faut savoir que :
- le hub usb ne dispense pas d'un PC, il ne faut pas espérer connecter 2 usb devices entre eux comme ça,  juste avec un hub
- un hub usb peut dans certains cas compromettre le bon fonctionnement : c'est juste du vécu, sans que je sache expliquer pourquoi

Quote
qui le pourrait peut-être
il faut donc vérifier, finalement tout ce que tu risques, c'est d'apprendre un tas de choses intéressantes
Title: Re: Projet Control module
Post by: 200sx200 on Jul 02, 2017, 01:41 am
Donc le nouveau Schéma d'après le 1er (https://scontent-cdg2-1.xx.fbcdn.net/v/t31.0-8/19401950_10209741235873201_4589449887992852812_o.jpg?oh=e0b76216bf895e4ecbcfc8eb25fff5d2&oe=59C6EC40) :

Nouveau Shéma
(https://scontent-cdg2-1.xx.fbcdn.net/v/t31.0-8/19577480_10209785894989651_801602460412027670_o.jpg?oh=d1de31960598eaad8a715d3b2d647c41&oe=59DEAC6D)

Taille réelle (https://scontent-cdg2-1.xx.fbcdn.net/v/t31.0-8/19577480_10209785894989651_801602460412027670_o.jpg?oh=d1de31960598eaad8a715d3b2d647c41&oe=59DEAC6D)

Le "5v ou 12v", je ne sais pas (par rapport à la flèche différente des 2 autre(1er (https://scontent-cdg2-1.xx.fbcdn.net/v/t31.0-8/19401950_10209741235873201_4589449887992852812_o.jpg?oh=e0b76216bf895e4ecbcfc8eb25fff5d2&oe=59C6EC40))).

oui, mais il faut savoir que :
- le hub usb ne dispense pas d'un PC, il ne faut pas espérer connecter 2 usb devices entre eux comme ça,  juste avec un hub
- un hub usb peut dans certains cas compromettre le bon fonctionnement : c'est juste du vécu, sans que je sache expliquer pourquoi
Je prends note merci :)

il faut donc vérifier, finalement tout ce que tu risques, c'est d'apprendre un tas de choses intéressantes.
Oui :) je vais éssayer. Un conseil, par ou commencer ?
Title: Re: Projet Control module
Post by: trimarco232 on Jul 02, 2017, 12:18 pm
modifie comme suit :
                       
TX arduino ---[R1]--- base T1
collecteur T1 --- [R5] --- IGN (à la place du 12V)
collecteur T1 --- RX ECU
émetteur T1 --- gnd

même principe pour T2



Quote
Un conseil, par ou commencer ?
on est + dans le domaine de l'informatique, je suis bien trop creux pour pouvoir donner un quelconque conseil






Title: Re: Projet Control module
Post by: 200sx200 on Jul 02, 2017, 01:41 pm
merci :)

modifie comme suit :
                      
TX arduino ---[R1]--- base T1
collecteur T1 --- [R5] --- IGN (à la place du 12V)
collecteur T1 --- RX ECU
émetteur T1 --- gnd
Comme ça ? :

(https://scontent-cdg2-1.xx.fbcdn.net/v/t31.0-8/19667650_10209790894074625_1909874605480434585_o.jpg?oh=3b640f6e1d80f16cc9fc452368269c15&oe=59DD5A18)
Taille réelle (https://scontent-cdg2-1.xx.fbcdn.net/v/t31.0-8/19667650_10209790894074625_1909874605480434585_o.jpg?oh=3b640f6e1d80f16cc9fc452368269c15&oe=59DD5A18)
Title: Re: Projet Control module
Post by: trimarco232 on Jul 02, 2017, 10:22 pm
encore remplacer R3 et R4 par 3,3k et ça doit le faire
Title: Re: Projet Control module
Post by: 200sx200 on Jul 02, 2017, 10:29 pm
D'accord merci je vais testé ça :)

Je mets quoi en dessous de la R2 ?
Title: Re: Projet Control module
Post by: trimarco232 on Jul 03, 2017, 06:33 pm
Quote
Je mets quoi en dessous de la R2 ?
0v (gnd)
Title: Re: Projet Control module
Post by: 200sx200 on Jul 03, 2017, 10:36 pm
Merci,

Je vais donc commander ce qu'il faut pour tester :)

Pour les transistor, je prend les BC549 du schéma original  ?
Title: Re: Projet Control module
Post by: trimarco232 on Jul 05, 2017, 06:26 pm
bc549 : bon choix

comment comptes-tu procéder pour réaliser le montage (cela peut influer la liste du matériel)
Title: Re: Projet Control module
Post by: 200sx200 on Jul 05, 2017, 07:27 pm
Pour le moment juste sur une plaque d'essai voir déjà si cela fonctionne ?  :)

Pour le transistor il existe plusieurs modèle "A (http://www.ebay.fr/itm/231600140059?var=530837762159), B (http://www.ebay.fr/itm/Transistor-NPN-BC549B-Boitier-TO92-/231600142234?refid=store&ssPageName=STORE:HTMLBUILDER:SIMPLEITEM), C (http://www.ebay.fr/itm/Transistor-NPN-BC549C-Boitier-TO92-/331587701073?refid=store&ssPageName=STORE:HTMLBUILDER:SIMPLEITEM)" . Lequel est plus adapté ?
Title: Re: Projet Control module
Post by: trimarco232 on Jul 05, 2017, 09:23 pm
le C
Title: Re: Projet Control module
Post by: 200sx200 on Jul 06, 2017, 07:13 pm
Merci :)
Les résistance je l'ai prend toutes en 2W ?
Title: Re: Projet Control module
Post by: 68tjs on Jul 07, 2017, 09:03 pm
Euh P=UI ou comme U= RI et donc I = U/R  on obtient la deuxième formulation P= U2/R
12V dans une résistance de 10k donne une puissance égale à 122/10k = 15 mW
2W cela fait un peu beaucoup non ?

Des résistances très classiques de 250mW ou 500 mW suffiront très largement.

Avantage : tu trouveras facilement des résistances à 5% ou 1% alors qu'en 2W ce seront des résistances de puissance qui seront à 10 ou 20 %, sauf à y mettre le prix.
Title: Re: Projet Control module
Post by: 200sx200 on Jul 07, 2017, 10:56 pm
Merci beaucoup :)
Title: Re: Projet Control module
Post by: 200sx200 on Jul 11, 2017, 01:30 am
De retour avec le 1er essaie => échec :(

Résistance utilisé 1/4W.

Je n'ai pas encore programmé le "CLK" (non obligatoire pour la connexion).

Plaque d'essais:
(https://scontent-cdg2-1.xx.fbcdn.net/v/t1.0-9/19989496_10209869546640890_1011698216691083178_n.jpg?oh=cce2c274c9c14c968264ab0d11e4a17c&oe=59C5E264)
Taille réelle (https://scontent-cdg2-1.xx.fbcdn.net/v/t1.0-9/19989496_10209869546640890_1011698216691083178_n.jpg?oh=cce2c274c9c14c968264ab0d11e4a17c&oe=59C5E264)

(https://scontent-cdg2-1.xx.fbcdn.net/v/t1.0-9/19875443_10209869547080901_9088564412376435122_n.jpg?oh=5cb2a5204013f79e0c3b7836357c74d7&oe=5A0AEF2D)
Taille réelle (https://scontent-cdg2-1.xx.fbcdn.net/v/t1.0-9/19875443_10209869547080901_9088564412376435122_n.jpg?oh=5cb2a5204013f79e0c3b7836357c74d7&oe=5A0AEF2D)

Vert => Transmission
Blanc => Réception

Schéma :
(https://scontent-cdg2-1.xx.fbcdn.net/v/t31.0-8/19667650_10209790894074625_1909874605480434585_o.jpg?oh=8c761d6c1b7f859b734a26b1290d60f3&oe=5A04E718)
R3 et R4 => 3.3K

Title: Re: Projet Control module
Post by: 200sx200 on Jul 14, 2017, 08:14 pm
J'ai encore pas réussi à recevoir quelque chose, voyez un défaut quelconque sur mon branchement ?
Title: Re: Projet Control module
Post by: 200sx200 on Jul 17, 2017, 03:15 pm
Si je devais faire une extension de programme :

-Continues stream
-Com Port speed from "9600" to "57600"
-format type Hexadecimal, decimal...

suffirais ?
Title: Re: Projet Control module
Post by: trimarco232 on Jul 19, 2017, 08:00 pm
Bonjour,

il faut générer la fréquence qui va bien et l'envoyer sur l'entrée clk
il faut peut-être vérifier que le timer dédié a cette fonction n'est pas déjà pris par d'autres fonctions provenant des bibliothèques utilisées
Title: Re: Projet Control module
Post by: 200sx200 on Jul 20, 2017, 12:22 pm
D'accord, je demande ça car j'ai contacté les programmeurs d'un logiciel Nissan Consult , et ils serait OK pour une option/mise à jour pour renvoyer les infos via un autre port com.

Ce qui est bien mieux que de créer interface et prise doublons.
Title: Re: Projet Control module
Post by: 200sx200 on Jul 27, 2017, 08:19 pm
Le logiciel mise à part , je n'ai pas réussi à faire fonctionner l'interface, une idée ?
Title: Re: Projet Control module
Post by: trimarco232 on Jul 27, 2017, 08:40 pm
comment tu génères le clk au niveau de l'arduino ?
Title: Re: Projet Control module
Post by: 200sx200 on Jul 27, 2017, 08:49 pm
Je ne l'ai pas généré (pas nécessaire d'après le protocol (http://arduino.cybrax-computers.com/files/Consult-Protocol-&-Commands-Issue-6.pdf) et sur les différents programmes trouvés aucun ne fait le CLK.
Title: Re: Projet Control module
Post by: trimarco232 on Aug 02, 2017, 12:37 pm
Quote
pas nécessaire d'après le protocole
Bonjour,
ben si, c'est écrit dans la première ligne, je te l'ai mis en gras

"Consult terminal or PC communications is via three wire bus. TX, RX and Async
Clock
"
Title: Re: Projet Control module
Post by: 200sx200 on Aug 10, 2017, 12:59 am
Bonjour,

Désolé de cette réponse tardive, Merci pour ta réponse. J'assigne donc comme un Tx ? tous comme pour le programme ?
Title: Re: Projet Control module
Post by: trimarco232 on Aug 10, 2017, 07:02 pm
il faut que l'arduino génère une fréquence de 153.6 Khz et l'envoie vers le CLK de l'ECU
au niveau de l'interface, c'est le même montage que pour le TX (voir ton schéma)
Title: Re: Projet Control module
Post by: 200sx200 on Aug 11, 2017, 04:05 pm
D'accord, je vais essayer de trouver comment faire ça merci. (pour le moment pas la moindre :( )

J'ai trouvé ça sinon Nissan-Consult-Interface-to-PC-Schematic.pdf (http://www.obd2be.com/download/Nissan-Consult-Interface-to-PC-Schematic.pdf)
Title: Re: Projet Control module
Post by: 200sx200 on Aug 12, 2017, 01:47 pm
Je ne trouve pas comment faire, pourrais tu m'aiguiller sur les recherches à faire pour le réaliser ?

Je ne trouve que 2/3 sujet pour faire un signal carré par exemple, mais je pense que je ne fais pas les bonnes recherche.
Title: Re: Projet Control module
Post by: trimarco232 on Aug 13, 2017, 02:39 pm
tu mets au début du main :
tone(3,154);
j'ai choisi la broche 3 de l'arduino, mais si tu préfères tu peux le mettre sur la broche 11
Title: Re: Projet Control module
Post by: 200sx200 on Aug 13, 2017, 04:31 pm
Ah merci , effectivement j'étais loin de ça ^^

Par contre tu est sur car je lis 65khz max pour la méga et j'ai besoin de 153.6khz ?

Je n'ai aucun résultats pour le moment.
Title: Re: Projet Control module
Post by: trimarco232 on Aug 13, 2017, 09:43 pm
Quote
Par contre tu est sur car je lis 65khz max pour la méga et j'ai besoin de 153.6khz ?
tu as raison
je ne m'explique pas cette limitation car je ne peux pas mettre la main sur la librairie tone
je recherche une autre librairie ...

édit : eh non, on va faire manuellement :

void setup () // on le rajoute dans le setup
{
  pinMode (3, OUTPUT) ; // vaut mieux prendre un timer spécifique au méga ?
  TCCR2A = 0x23 ;
  TCCR2B = 0x09 ; // mode 7, clock prescale by 1
  OCR2A = 104-1 ;  // 16000khz / 104 = 153.8khz
 }
Title: Re: Projet Control module
Post by: 200sx200 on Aug 13, 2017, 11:31 pm
Merci,

Y'a un moyen de vérifier le bon fonctionnement car je n'ai aucun changement ?
Title: Re: Projet Control module
Post by: trimarco232 on Aug 15, 2017, 07:29 am
ah oui, sur un mega OC2A est sur la pin 10

void setup () // on le rajoute dans le setup
{
  pinMode (10, OUTPUT) ; // sur un mega OC2A est sur la pin 10
  TCCR2A = 0x23 ;
  TCCR2B = 0x09 ; // mode 7, clock prescale by 1
  OCR2A = 104-1 ;  // 16000khz / 104 = 153.8khz
 }

tu peux vérifier qu'il se passe quelque chose en mesurant 2v5 sur la pin 10
Title: Re: Projet Control module
Post by: 200sx200 on Aug 16, 2017, 01:27 pm
Merci beaucoup, je teste ça ce weekend :)
Title: Re: Projet Control module
Post by: 200sx200 on Aug 24, 2017, 02:15 pm
J'ai donc mesuré et j'obtiens bien mes env 12V sur la transmission, et 2,63V sur le CLK par contre

seulement après le transistor.

Je n'obtiens aucune valeur directement sur la Pin 10 normal ?
Title: Re: Projet Control module
Post by: trimarco232 on Aug 25, 2017, 11:37 am
Bonjour,
il faudrait 2v5 sur la pin
tu obtiens 5v si tu la mets en sortie high ?
Title: Re: Projet Control module
Post by: 200sx200 on Aug 25, 2017, 12:55 pm
Bonjour,

Je n'ai rien en "pinMode", j'ai les 5v avec "digitalWrite"
Title: Re: Projet Control module
Post by: 200sx200 on Aug 28, 2017, 12:21 pm
édit:

J'ai commencé le C+ avec Visual studio et j'ai réalisé une vidéo et ma question porte surtout sur le fait que l'arduino perd vite le compte ? (les chiffres dépassent le nombre (4 au max)sur un déplacement rapide)

Je souhaite aussi avoir trois données en simultanés comment faire ? (je ne trouve pas sur le net, ou le terme qui permettrait de le trouver)

Mon application ce connecte à l'arduino via le port Com ici "3", ensuite envoie le chiffre comme montre la vidéo. Le gros "IK" c'est que je souhaite faire 3 envois de donnés via le port série pour avoir 3 différents affichage sur l'écran.

Lien de la Vidéo 1er programme windows (https://www.facebook.com/kevin.martin.735944/videos/10210243600712008/)
Title: Re: Projet Control module
Post by: trimarco232 on Aug 28, 2017, 09:46 pm
Quote
Je n'ai rien en "pinMode", j'ai les 5v avec "digitalWrite"
Bonjour,
au moins la pi fonctionne
peux-tu donner l'ensemble du code concernant la pin, pour chacune des 2 configurations :
- code OC2A ? (qui ne fonctionne pas) ?
- code "digitalWrite"  (qui fonctionne) ?
Title: Re: Projet Control module
Post by: trimarco232 on Aug 28, 2017, 10:32 pm
Quote
Le gros "IK" c'est que je souhaite faire 3 envois de donnés via le port série pour avoir 3 différents affichage sur l'écran
il faut "simplement" que l'arduino puisse savoir quel affichage est concerné par la donnée qu'il vient de recevoir. Donc avant d'envoyer la donnée, il faut que ton programme VS C++ envoie "quelque chose" qui permet d'identifier l'affichage concerné : en français, cela reviendrait à dire : "attention, ce qui suit concerne tel ou tel affichage"
pour cela il faut définir un petit protocole : sous quel format tu envoies et reçois les données ?


par ailleurs - il faudra prendre ceci en compte plus tard - si tu utilises la propriété "change" des sliders pour envoyer les données sous VS C++, ils faut savoir que ton PC est capable de le faire à une grande vitesse, et que par conséquent l'arduino ne pourra pas forcément suivre. Il en résulterait une réception des données tronquées, donc fausses
en attendant, je pense qu'une vitesse de transmision basse, cad. 9600 bits/s, nous met à l'abri de ce désagrément. Il faut ce pendant que ton buffer d'émission, au niveau du contrôle serial de ton application VS C++, soit dimensionné de façon confortable, de manière à ce que les dernières valeurs émises par le(s) slider(s) ne soient pas perdues dans le PC (les dernières valeurs étant sans doute les plus importantes)
Title: Re: Projet Control module
Post by: 200sx200 on Aug 28, 2017, 10:45 pm
J'ai copié coller exactement ce que tu m'as donné ?
Ensuite j'ai changé juste "pinMode" par digitalWrite" pour être sur de la Pin et j'ai bien les 5v

Code: [Select]

void setup()   /*----( SETUP: RUNS ONCE )----*/
{
  pinMode (10, HIGH); // sur un mega OC2A est sur la pin 10
  TCCR2A = 0x23 ;
  TCCR2B = 0x09 ; // mode 7, clock prescale by 1
  OCR2A = 104-1 ;  // 16000khz / 104 = 153.8khz
  Serial.begin(9600);
}


-----------------------------------------------------------------------------------------------------------

il faut "simplement" que l'arduino puisse savoir quel affichage est concerné par la donnée qu'il vient de recevoir. .....
edit:
Programme complet en bas.
Je n'ai pas donné de type ou autre pour le moment juste une lettre précédant le nombre.

je pense qu'une vitesse de transmision basse, cad. 9600 bits/s
En principe cela le devrait :

Code: [Select]

' Arduino and Visual Basic: Receiving Data From the Arduino
' A simple example of recing data from an Arduino
'

Imports System
Imports System.IO.Ports



Public Class Form1

    Dim comPORT As String
    Dim receivedData As String = ""



    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Timer1.Enabled = False
        comPORT = ""
        For Each sp As String In My.Computer.Ports.SerialPortNames
            comPort_ComboBox.Items.Add(sp)
        Next
    End Sub


    Private Sub comPort_ComboBox_SelectedIndexChanged(sender As Object, e As EventArgs) Handles comPort_ComboBox.SelectedIndexChanged
        If (comPort_ComboBox.SelectedItem <> "") Then
            comPORT = comPort_ComboBox.SelectedItem
        End If
    End Sub


    Private Sub connect_BTN_Click(sender As Object, e As EventArgs) Handles connect_BTN.Click
        If (connect_BTN.Text = "Connection") Then
            If (comPORT <> "") Then
                SerialPort1.Close()
                SerialPort1.PortName = comPORT
                SerialPort1.BaudRate = 9600
                SerialPort1.DataBits = 8
                SerialPort1.Parity = Parity.None
                SerialPort1.StopBits = StopBits.One
                SerialPort1.Handshake = Handshake.None
                SerialPort1.Encoding = System.Text.Encoding.Default 'very important!
                SerialPort1.ReadTimeout = 10000

                SerialPort1.Open()
                connect_BTN.Text = "Déconnecter"
                Timer1.Enabled = True
                Timer_LBL.Text = "Connecter"
            Else
                MsgBox("Select a COM port first")
            End If
        Else
            SerialPort1.Close()
            connect_BTN.Text = "Connection"
            Timer1.Enabled = False
            Timer_LBL.Text = "Déconnecter"
        End If


    End Sub


    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        receivedData = ReceiveSerialData()
        RichTextBox1.Text &= receivedData
    End Sub


    Function ReceiveSerialData() As String
        Dim Incoming As String
        Try
            Incoming = SerialPort1.ReadExisting()
            If Incoming Is Nothing Then
                Return "nothing" & vbCrLf
            Else
                Return Incoming
            End If
        Catch ex As TimeoutException
            Return "Error: Serial Port read timed out."
        End Try

    End Function



    Private Sub clear_BTN_Click(sender As Object, e As EventArgs) Handles clear_BTN.Click
        RichTextBox1.Text = ""
    End Sub

    Private Sub TrackBar1_Scroll(sender As Object, e As EventArgs) Handles TrackBar1.Scroll
        Label3.Text = TrackBar1.Value.ToString()
        SerialPort1.Write("R" + Label3.Text)
    End Sub

    Private Sub TrackBar2_Scroll(sender As Object, e As EventArgs) Handles TrackBar2.Scroll
        Label4.Text = TrackBar2.Value.ToString()
        SerialPort1.Write("S" + Label4.Text)
    End Sub

    Private Sub TrackBar3_Scroll(sender As Object, e As EventArgs) Handles TrackBar3.Scroll
        Label6.Text = TrackBar3.Value.ToString()
        SerialPort1.Write("%" + Label6.Text)
    End Sub
End Class

Title: Re: Projet Control module
Post by: 200sx200 on Aug 29, 2017, 10:01 am
Voila mon programme Arduino, je cherche comment séparer les données reçues par exemple si il y à un R,S,% avant le nombre, si cela est faisable comma ça.

La partie entre les pointilles est complètement fausse mais je l'ai créer pour l'idée.

édit: J'ai fini par touver, voilà le programme complet si ça peut aider.

Code: [Select]

#include <UTFT.h>

#define CAL_X 0x004F4E75UL
#define CAL_Y 0x00948DC0UL
#define CAL_S 0x8031F1DFUL

// Declare which fonts we will be using
extern uint8_t BigFont[];
extern uint8_t SevenSegNumFont[6];

UTFT        myGLCD(CTE70, 38, 39, 40, 41);        //Screen initialization

int inByte;
int RPM;
int Speed;
int Accel;

void setup() {
  Serial.begin (9600);
  myGLCD.InitLCD(LANDSCAPE);
  myGLCD.clrScr();
  myGLCD.setFont(BigFont);
  myGLCD.fillScr(0, 0, 0);
  myGLCD.clrScr();
  Menu1();
}

void loop () {

  while (Serial.available() > 0) {
    int inByte = Serial.read(); // lire un premier caractère

    // controle éventuel : décommenter pour voir ce qui arrive
    //Serial.print("index : "); Serial.println(inByte);


    // filtrer : il doit etre une lettre majuscule
    if (inByte >= 'A') {
      int valeur = Serial.parseInt();

      // controle eventuel de la valeur
      //Serial.print("valeur : "); Serial.println(valeur);


      // traitement
      switch (inByte) {
        case 'R':
          if (valeur > 0) {
            myGLCD.setFont(SevenSegNumFont);
            myGLCD.setColor(87, 255, 45);
            myGLCD.setBackColor(0, 0, 0);
            myGLCD.printNumI(valeur , 130, 85);
          }
          break;
      }

      switch (inByte) {
        case 'S': //
          if (valeur > 0) {
            myGLCD.setFont(SevenSegNumFont);
            myGLCD.setColor(87, 255, 45);
            myGLCD.setBackColor(0, 0, 0);
            myGLCD.printNumI(valeur , 130, 185);
          }
          break;
      }

      switch (inByte) {
        case 'A':
          if (valeur > 0) {
            myGLCD.setFont(SevenSegNumFont);
            myGLCD.setColor(87, 255, 45);
            myGLCD.setBackColor(0, 0, 0);
            myGLCD.printNumI(valeur , 130, 285);
          }
          break;
      }
      delay(10); //pas la peine de tourner à plein régime
    }
  }
}



void Menu1()    // DATA DISPLAY MENU
{
  myGLCD.clrScr();
  myGLCD.setFont(BigFont);
  myGLCD.setColor(0, 0, 255);
  myGLCD.setBackColor(0, 0, 255);
  myGLCD.setColor(195, 195, 195);
  myGLCD.setBackColor(0, 0, 0);
  myGLCD.setColor(254, 242, 0);
  myGLCD.print("RPM :", 15, 100);
  myGLCD.print("Speed :", 15, 200);
  myGLCD.print("Accel :", 15, 300);
}



Mais j'ai toujours mon soucis d'erreurs vidéo (https://www.facebook.com/kevin.martin.735944/videos/10210248043343071/)

Les erreurs:
-Si l'écran affiche 1002 et pour ensuite affiché 134 le "2" de 1002 reste affiché => 1342. (une fois affiché pas d'effacement)
-Les valeurs dépassent les 9 chiffres, idem pour les autres.
-avoir une position fixe de 0 à 9999.
Title: Re: Projet Control module
Post by: trimarco232 on Aug 30, 2017, 05:04 pm
Bonjour,
essaye avec pinMode (10, OUTPUT); au lieu de pinMode (10, HIGH);
je ne sais pas si cela résout le problème, mais en tous cas c'est d'avantage correct
Title: Re: Projet Control module
Post by: trimarco232 on Aug 30, 2017, 05:24 pm
Quote
Mais j'ai toujours mon soucis d'erreurs vidéo

Les erreurs:
-Si l'écran affiche 1002 et pour ensuite affiché 134 le "2" de 1002 reste affiché => 1342. (une fois affiché pas d'effacement)
il faudrait justifier ton affichage à droite, donc mettre des espaces selon le nombre de chiffres
cela doit certainement se trouver dans la biblipthèque


Quote
-Les valeurs dépassent les 9 chiffres, idem pour les autres.
-avoir une position fixe de 0 à 9999.
il semble que le problème survint quand tu as déplacé le curseur rapidement vers la gauche : peux-tu confirmer que cela fonctionne bien quand le déplacement ne se fait pas trop vite ?

Title: Re: Projet Control module
Post by: 200sx200 on Aug 31, 2017, 02:15 pm
Bonjour,
essaye avec pinMode (10, OUTPUT); au lieu de pinMode (10, HIGH);
je ne sais pas si cela résout le problème, mais en tous cas c'est d'avantage correct
Hi,
Je vais tester ça, merci.

edit:
J'ai essayé même résultat 0V en sortie de pin(10)

Test:
Code: [Select]

void setup() {
  pinMode (10, HIGH); // sur un mega OC2A est sur la pin 10
  TCCR2A = 0x23 ;
  TCCR2B = 0x09 ; // mode 7, clock prescale by 1
  OCR2A = 104-1 ;  // 16000khz / 104 = 153.8khz
  Serial.begin(9600);
  Serial2.begin(9600);
}

--------------------------------------

void setup() {
  digitalWrite (10, HIGH); // sur un mega OC2A est sur la pin 10
  TCCR2A = 0x23 ;
  TCCR2B = 0x09 ; // mode 7, clock prescale by 1
  OCR2A = 104-1 ;  // 16000khz / 104 = 153.8khz
  Serial.begin(9600);
  Serial2.begin(9600);
}
--------------------------------------

void setup() {
  pinMode (10, OUTPUT); // sur un mega OC2A est sur la pin 10
  TCCR2A = 0x23 ;
  TCCR2B = 0x09 ; // mode 7, clock prescale by 1
  OCR2A = 104-1 ;  // 16000khz / 104 = 153.8khz
  Serial.begin(9600);
  Serial2.begin(9600);
}

--------------------------------------

void setup() {
  digitalWrite (10, OUTPUT); // sur un mega OC2A est sur la pin 10
  TCCR2A = 0x23 ;
  TCCR2B = 0x09 ; // mode 7, clock prescale by 1
  OCR2A = 104-1 ;  // 16000khz / 104 = 153.8khz
  Serial.begin(9600);
  Serial2.begin(9600);
}

--------------------------------------




il faudrait justifier ton affichage à droite, donc mettre des espaces selon le nombre de chiffres
cela doit certainement se trouver dans la biblipthèque
J'ai trouvé ça "myGLCD.printNumI(valeur , 130, 185, 3, '0');" ça à résolue le décalage et ça retourne à zéro si pas de valeur.
J'ai éssayé les espaces, car je souhaite que ça reste sur fond noir si pas de valeur mais ça me dessine un truc bizarre surement à cause du printNimI.

édit:
J'ai rajouté un "if (valeur > 9999) {}" qui améliore pas mal le truc mais ne l'évite pas complètement.

Une partie du programme :
Code: [Select]


void setup() {
  Serial.begin (9600);
  .....
   Zero4();
  }

void loop () {

  while (Serial.available() > 0) {
    int inByte = Serial.read(); // lire un premier caractère

// filtrer : il doit etre une lettre majuscule
    if (inByte >= 'A') {
      int valeur = Serial.parseInt();

      // traitement
      switch (inByte) {
        case 'R':
          if (valeur > 0) {
            myGLCD.setFont(SevenSegNumFont);
            myGLCD.setColor(87, 255, 45);
            myGLCD.setBackColor(0, 0, 0);
            myGLCD.printNumI(valeur, 100, 85, 4, '0');
            // controle eventuel de la valeur
            Serial.print("RPM : "); Serial.println(valeur);
            if (valeur > 9999) {}
          }
          break;
      }
} //end loop

void Zero4()
{
  int valeur = 0;
  myGLCD.setFont(SevenSegNumFont);
  myGLCD.setColor(87, 255, 45);
  myGLCD.setBackColor(0, 0, 0);
  myGLCD.printNumI(valeur, 100, 85, 4, '0');
}


il semble que le problème survint quand tu as déplacé le curseur rapidement vers la gauche : peux-tu confirmer que cela fonctionne bien quand le déplacement ne se fait pas trop vite ?
donc oui cela survient seulement avec beaucoup de données, 5/10 données par secondes passe bien sans erreurs, mais je n'ai pas trouvé le moyen de limiter avec la réception de données pour éviter la surcharge.

J'ai même rajouté un flux sur le logiciel VS qui envoie les 3 données simultanément, ça marche bien selon la limite qu'elle peut gérer.

J'ai pas trouvé de limitation que ce soit du coté logiciel que coté arduino.
Title: Re: Projet Control module
Post by: trimarco232 on Sep 02, 2017, 10:32 am
Bonjour 200sx200,

on  a 2 soucis depuis un moment :
1) génération d'un signal carré par un arduino méga
2) réception de chiffres depuis un PC et affichage sur écran LCD

je te propose de créer 2 topics distincts pour pouvoir faire participer les autres forumistes
Title: Re: Projet Control module
Post by: 200sx200 on Sep 02, 2017, 03:56 pm
Bonjour trimarco,

D'accord sa marche, je crée 2 nouveau poste.

Merci de ton aide. :)
Title: Re: Projet Control module
Post by: 200sx200 on Sep 04, 2017, 08:53 am
Donc le Signal résolue (merci pepe) + mon programme cela donne :

Code: [Select]

#include <Wire.h>  // Comes with Arduino IDE
#include <UTFT.h>
#include <SoftwareSerial.h>


//***************************************************************//
// Fréquence du signal
#define F_ECU 153600ul
// Valeur de OCRxA du timer configuré en mode 7
#define OCRxA_ECU_mode7 ((F_CPU+F_ECU)/F_ECU/2-1)

/********************************************************
   WGM2[2:0] = 111 : mode 7 (comptage normal)
   COM2A[1:0] = 01 : sortie A en mode toggle
   COM2B[1:0] = 00 : sortie B déconnectée
   CS2[2:0] = 001  : prédiviseur clk/1
 ********************************************************/
void Timer2setup() {
  pinMode (10, HIGH); // OC2A = pin 10
  TCCR2A = 0x43;
  TCCR2B = 0x09;
  OCR2A = OCRxA_ECU_mode7;
}

/********************************************************
   WGMx[3:0] = 0000 : mode 0 (comptage normal)
   COMxA[1:0] = 00  : sortie A déconnectée
   COMxB[1:0] = 00  : sortie B déconnectée
   COMxC[1:0] = 00  : sortie C déconnectée
   CSx[2:0] = 111   : source Tx sur fronts montants
   TOIEx = 1        : interruption Timer Overflow activée
 ********************************************************/
void Timer5setup() {
  TCCR5A = 0;
  TCCR5B = 7;
  TIMSK5 = 1;
}

uint32_t volatile TOVtime = 0ul;
uint8_t volatile OV = 0;

ISR (TIMER5_OVF_vect) {
  TOVtime = micros();
  OV++;
}
uint32_t oldTOVtime;
//***************************************************************//

//calibration
#define CAL_X 0x004F4E75UL
#define CAL_Y 0x00948DC0UL
#define CAL_S 0x8031F1DFUL

//Screen initialization
UTFT        myGLCD(CTE70, 38, 39, 40, 41);

// RX, TX
SoftwareSerial mySerial(17, 16);

// Declare which fonts we will be using
extern uint8_t BigFont[];
extern uint8_t SevenSegNumFont[];

byte valeur ;
byte consult[28]; // consult[38]
byte consultt[32];
byte iinit = 0x00; // iinit must be 0x10
boolean cf = false; // if 0xCF
boolean initt = false;
boolean ct = false;
boolean ii = false;
boolean ss = false;
boolean pp = true;
byte sped;
byte a = 0;
byte b;
byte c;
long rpm;
float rpm_msb;
float rpm_lsb;
byte water;
float batt;
float maf;
float maf_msb;
float maf_lsb;
float tps;
float inj_msb;
float inj_lsb;
float inj;
byte ign;
byte lambda;

boolean error = false; //error code definiton
byte eror[64];
byte r;
byte rr = 0;
byte ppp = 0;
byte iii = 0;
byte j;
byte but = 0;
boolean butt = true;
byte rrr;

String cas = "CAS/CamPS sensor"; // 0x11
String maff = "MAF sensor"; // 0x12
String coolant = "Coolant t sensor"; // 0x13
String spedd = "Speed sensor"; // 0x14
String ignition = "Noignitionsignal"; // 0x21
String ecu = "ECU malfunction"; // 0x31
String egr = "EGR malfunction"; // 0x32
String oxygen = "Oxygen sensor"; // 0x33
String knock = "Knock sensor"; // 0x34
String gas = "Gas t sensor"; // 0x35
String iat = "IAT sensor"; // 0x41
String fuelt = "Fuel t sensor"; // 0x42
String tpss = "TPS sensor"; // 0x43
String injector = "Injector leak"; // 0x45
String at = "A/T control"; // 0x54
String no = "No malfunction"; //0x55

int menu;
int rc;
int clc;
int test;

void setup() {
  Timer2setup();// Sortie signal 153,8 kHz sur pin 10 (OCR2A)
  // Entrée fréquencemètre sur pin 47 (T5)
  oldTOVtime = micros();
  Timer5setup();
  Serial.begin(115200);
  Serial.begin(9600);
  Serial2.begin(9600);
  myGLCD.InitLCD(LANDSCAPE);                   // Initialize the display
  myGLCD.setFont(BigFont);
  myGLCD.setColor(87, 255, 45);
  myGLCD.fillScr(0, 0, 0);
  myGLCD.clrScr();                            // Clear the screen (black)
}

//loop
void loop() {

skorost:      if (ii == false) {
    unit32();
    Serial.println();
    Serial.print("connection...");
    Serial2.write(0xFF);
    Serial.print(0xFF);
    Serial2.write(0xFF);
    Serial.print(0xFF);
    Serial2.write(0xEF);
    Serial.println(0xEF);
    myGLCD.print("connection...", 5, 5);
    delay(2000);
    myGLCD.clrScr();


    if (Serial2.available() > 0) {
      int read_byte;
      read_byte = Serial2.read();

      myGLCD.printNumI(read_byte, 10, 5);
      Serial.println("reception");
      Serial.println(read_byte);
      myGLCD.print("reception", 5, 5);

      delay(500);
    }

    iinit = Serial2.read();

    if (iinit == 0x10) {
      myGLCD.print(iinit, 5, 5);
      Serial.println();
      Serial.println("connecter");
      myGLCD.print("connecter", 5, 5);
      delay(1000);
      ii = true;
      myGLCD.clrScr();
    }

  }



  if (iinit != 0x10) {
    goto skorost;
  }


Malheureusement je n'obtiens toujours aucune réponse :(
J'ai bien les 2.5V sur la pin 10.

Photo:

(https://scontent-cdg2-1.xx.fbcdn.net/v/t1.0-9/21231297_10210289616262368_8998116966645002806_n.jpg?oh=15fdbdb90fec903f9c398cd9ecfe33e5&oe=5A587404)
Taille réelle (https://scontent-cdg2-1.xx.fbcdn.net/v/t1.0-9/21231297_10210289616262368_8998116966645002806_n.jpg?oh=15fdbdb90fec903f9c398cd9ecfe33e5&oe=5A587404)

(https://scontent-cdg2-1.xx.fbcdn.net/v/t1.0-9/21272213_10210289616862383_4177841508789375821_n.jpg?oh=0e51e7c9c14609573c77b7e027e33dd6&oe=5A54FE94)
Taille réelle (https://scontent-cdg2-1.xx.fbcdn.net/v/t1.0-9/21272213_10210289616862383_4177841508789375821_n.jpg?oh=0e51e7c9c14609573c77b7e027e33dd6&oe=5A54FE94)

Basic_Consult_Interface_Schematic.pdf (https://evoecu.logic.net/mirror/nissan/Basic_Consult_Interface_Schematic.pdf)
https://github.com/Crim/Arduino-Nissan-Consult-Library (https://github.com/Crim/Arduino-Nissan-Consult-Library)
Title: Re: Projet Control module
Post by: _pepe_ on Sep 04, 2017, 11:15 am
Supprimé
Title: Re: Projet Control module
Post by: 200sx200 on Sep 04, 2017, 12:38 pm
Les masses GND des circuits doivent être reliées ensemble.
Merci pepe, j'ai corrigé de suite :)

• La partie du code qui concerne le fréquencemètre dans le code d'exemple peut être supprimé. La partie utile pour générer le signal sur la pin 10 est ...
Modifié :)

• SoftwareSerial n'a rien à faire sur une carte Mega, qui présente justement l'avantage de posséder 4 interfaces série matérielles.
D'accord je l'ai supprimé, je pensais qu'il était quand même nécessaire, merci

Le code:

Code: [Select]

#include <Wire.h>  // Comes with Arduino IDE
#include <UTFT.h>

//***************************************************************//
// Fréquence du signal
#define F_ECU 153600ul
// Valeur de OCRxA du timer configuré en mode 7
#define OCRxA_ECU_mode7 ((F_CPU+F_ECU)/F_ECU/2-1)

/********************************************************
   WGM2[2:0] = 111 : mode 7 (comptage normal)
   COM2A[1:0] = 01 : sortie A en mode toggle
   COM2B[1:0] = 00 : sortie B déconnectée
   CS2[2:0] = 001  : prédiviseur clk/1
 ********************************************************/
void Timer2setup() {
  pinMode (10, HIGH); // OC2A = pin 10
  TCCR2A = 0x43;
  TCCR2B = 0x09;
  OCR2A = OCRxA_ECU_mode7;
}
//***************************************************************//

//Screen initialization
UTFT        myGLCD(CTE70, 38, 39, 40, 41);

// Declare which fonts we will be using
extern uint8_t BigFont[];
extern uint8_t SevenSegNumFont[];

byte valeur ;
byte consult[28]; // consult[38]
byte consultt[32];
byte iinit = 0x00; // iinit must be 0x10
boolean cf = false; // if 0xCF
boolean initt = false;
boolean ct = false;
boolean ii = false;
boolean ss = false;
boolean pp = true;
byte sped;
byte a = 0;
byte b;
byte c;
long rpm;
float rpm_msb;
float rpm_lsb;
byte water;
float batt;
float maf;
float maf_msb;
float maf_lsb;
float tps;
float inj_msb;
float inj_lsb;
float inj;
byte ign;
byte lambda;

boolean error = false; //error code definiton
byte eror[64];
byte r;
byte rr = 0;
byte ppp = 0;
byte iii = 0;
byte j;
byte but = 0;
boolean butt = true;
byte rrr;

String cas = "CAS/CamPS sensor"; // 0x11
String maff = "MAF sensor"; // 0x12
String coolant = "Coolant t sensor"; // 0x13
String spedd = "Speed sensor"; // 0x14
String ignition = "Noignitionsignal"; // 0x21
String ecu = "ECU malfunction"; // 0x31
String egr = "EGR malfunction"; // 0x32
String oxygen = "Oxygen sensor"; // 0x33
String knock = "Knock sensor"; // 0x34
String gas = "Gas t sensor"; // 0x35
String iat = "IAT sensor"; // 0x41
String fuelt = "Fuel t sensor"; // 0x42
String tpss = "TPS sensor"; // 0x43
String injector = "Injector leak"; // 0x45
String at = "A/T control"; // 0x54
String no = "No malfunction"; //0x55

int menu;
int rc;
int clc;
int test;

void setup() {
  Timer2setup();// Sortie signal 153,8 kHz sur pin 10 (OCR2A)
  Serial.begin(115200);
  Serial.begin(9600);
  Serial2.begin(9600);
  myGLCD.InitLCD(LANDSCAPE);                   // Initialize the display
  myGLCD.setFont(BigFont);
  myGLCD.setColor(87, 255, 45);
  myGLCD.fillScr(0, 0, 0);
  myGLCD.clrScr();                            // Clear the screen (black)
}

//loop
void loop() {

skorost:      if (ii == false) {
    Serial.println();
    Serial.print("connection...");
    Serial2.write(0xFF);
    Serial2.write(0xFF);
    Serial2.write(0xEF);
    delay(1);
    iinit = Serial2.read();
    if (iinit == 0x10) {
      Serial.println();
      Serial.println("connecter");
      delay(2000);
      ii = true;
    }
  }

  if (iinit != 0x10) {
    goto skorost;
  }
}//end loop

Title: Re: Projet Control module
Post by: _pepe_ on Sep 04, 2017, 06:29 pm
Supprimé
Title: Re: Projet Control module
Post by: 200sx200 on Sep 04, 2017, 09:46 pm
Il y a encore un « Serial.begin(115200); » de trop dans setup().

Sinon, ça fonctionne depuis que les masses sont reliées ?
OK, je pensais qu'il devait être là pour le signal, je l'ai retiré mais malheureusement pas de réponse :(
Title: Re: Projet Control module
Post by: trimarco232 on Sep 04, 2017, 10:01 pm
Bonjour,
le programme est trop touffu à ce stade : il faudrait commencer par une requête simple, qui attend une réponse simple
Title: Re: Projet Control module
Post by: 200sx200 on Sep 04, 2017, 10:36 pm
Bonjour,
le programme est trop touffu à ce stade : il faudrait commencer par une requête simple, qui attend une réponse simple
Chose faite :)  la version light ^^

Code: [Select]

//*********************************Signal*********************************//
// Fréquence du signal
#define F_ECU 153600ul
// Valeur de OCRxA du timer configuré en mode 7
#define OCRxA_ECU_mode7 ((F_CPU+F_ECU)/F_ECU/2-1)

void Timer2setup() {
  pinMode (10, HIGH); // OC2A = pin 10
  TCCR2A = 0x43;
  TCCR2B = 0x09;
  OCR2A = OCRxA_ECU_mode7;
}
//*********************************Signal*********************************//

byte iinit = 0x00; // iinit must be 0x10
boolean ii = false;

void setup() {
  Timer2setup();// Sortie signal 153,8 kHz sur pin 10 (OCR2A)
  Serial.begin(9600);
  Serial2.begin(9600);
}

void loop() {

skorost:      if (ii == false) {
    Serial.println();
    Serial.print("connection...");
    Serial2.write(0xFF);
    Serial2.write(0xFF);
    Serial2.write(0xEF);
    delay(1);
    iinit = Serial2.read();
    if (iinit == 0x10) {
      Serial.println();
      Serial.println("connecter");
      delay(2000);
      ii = true;
    }
  }

  if (iinit != 0x10) {
    goto skorost;
  }

}//end loop
Title: Re: Projet Control module
Post by: trimarco232 on Sep 05, 2017, 11:00 pm
Bonjour,
monitore sans distinction tout ce qui pourrait en provenir : les données reçues sont peut-être corrompues, mais pour l'instant ce qui urge c'est de recevoir quelque chose, quoi que ce soit
Title: Re: Projet Control module
Post by: 200sx200 on Sep 05, 2017, 11:23 pm
Bonjour,
- remets stp la bonne vitesse de transmission série vers ton ECU
- monitore sans distinction tout ce qui pourrait en provenir : les données reçues sont peut-être corrompues, mais pour l'instant ce qui urge c'est de recevoir quelque chose, quoi que ce soit
Bonjour trimarco,
C'est 9600 la vitesse de l'écu donc je suis bon.

Ok je rajoute:

if (Serial2.available() > 0) {
     int read_byte;
     read_byte = Serial2.read();
     Serial.println(read_byte);
   }

Code: [Select]

void loop() {

skorost:      if (ii == false) {
    Serial.println();
    Serial.print("connection...");
    Serial2.write(0xFF);
    Serial2.write(0xFF);
    Serial2.write(0xEF);
    delay(1);

if (Serial2.available() > 0) {
      int read_byte;
      read_byte = Serial2.read();
      Serial.println(read_byte);
    }
   
    iinit = Serial2.read();
    if (iinit == 0x10) {
      Serial.println();
      Serial.println("connecter");
      delay(2000);
      ii = true;
    }
  }

  if (iinit != 0x10) {
    goto skorost;
  }

}//end loop
Title: Re: Projet Control module
Post by: trimarco232 on Sep 06, 2017, 07:26 pm
Bonjour,
oui et ça affiche quoi ?
Title: Re: Projet Control module
Post by: 200sx200 on Sep 06, 2017, 09:54 pm
C'est ce que j'avais avant et j'avais rien du tous, je refais le teste de suite.

Edit: je confirme toujours rien :(
Title: Re: Projet Control module
Post by: 200sx200 on Sep 07, 2017, 11:43 am
On essaye de modifier l'interface ? https://www.plmsdevelopments.com/images_if/consult_if_rev4.pdf (https://www.plmsdevelopments.com/images_if/consult_if_rev4.pdf)

Vous en pensez quoi ?

Title: Re: Projet Control module
Post by: trimarco232 on Sep 07, 2017, 09:24 pm
Bonjour,
avant de modifier, peux-tu mettre en oeuvre ton interface USB (celle qui fonctionne), et espionner avec l'arduino ce qui se passe sur le fil rx ou le fil tx ?
Title: Re: Projet Control module
Post by: 200sx200 on Sep 07, 2017, 10:24 pm
Bonjour,

Tu veut que je connecte le Rx de l'arduino sur le Tx de l'ECU pendant le fonctionnement sur PC par USB ?

Je peux essayer, oui.

edit:

Donc oui sa fonctionne bien je reçois pas mal de données selon ce que je fais avec le logiciel, les données mon l'air correct. Mais seulement sur le Rx et pas le Tx, je serais pas étonné que ce que je reçois soit l'envoie du PC.
Title: Re: Projet Control module
Post by: 200sx200 on Sep 08, 2017, 11:02 am
L'idée de recevoir les infos à 2 endroit me plait car cela n'empêche pas le bon fonctionnement sur Pc.

J'ai contacté ceux qui ont créer l'interface et mon donnée le schéma à suivre :
(https://scontent-cdg2-1.xx.fbcdn.net/v/t31.0-8/21457507_10210316816542358_6929737062352487398_o.jpg?oh=e9d58b4690fb43953635264eef9d00f2&oe=5A5A85FC)
Taille réelle (https://scontent-cdg2-1.xx.fbcdn.net/v/t31.0-8/21457507_10210316816542358_6929737062352487398_o.jpg?oh=e9d58b4690fb43953635264eef9d00f2&oe=5A5A85FC)

Je peux pour le moment créer seulement la partie Rx(Arduino) pour recevoir les infos pendant le fonctionnement sur Pc ?
Title: Re: Projet Control module
Post by: trimarco232 on Sep 08, 2017, 12:47 pm
Bonjour,
oui, tu peux, mais pour l'instant le simple diviseur de tension que as déjà sur ta breadboard doit faire l'affaire

il faut juste raccorder le rx de l'ecu et la masse sur ta breadboard, et espionner (afficher sur le moniteur série)     ce qui s'y passe
Title: Re: Projet Control module
Post by: 200sx200 on Sep 08, 2017, 04:48 pm
Pour la réception de l'arduino je n'ai que les 2résistances, c'est pas bon alors ?

Les BC549 sont seulement sur la transmission de l'arduino.

Le Rx de l'écu ? Mais je reçois que les données du PC , sur le Tx de l'écu je n'obtient rien avec le montage actuelle.

Je dis réception du PC car c'est seulement avec une action sur le programme que j'ai des données réceptionné par l'arduino, Mais un changement de valeur ne me donne rien.
Title: Re: Projet Control module
Post by: trimarco232 on Sep 08, 2017, 05:37 pm
Quote
Pour la réception de l'arduino je n'ai que les 2résistances, c'est pas bon alors ?
si, cela devrait suffire, on convertit le signal en amplitude de 12v provenant de l'ECU en amplitude de 5v pour être compatible avec le rx de l'arduino. Ceci par un diviseur de tension.

Quote
Les BC549 sont seulement sur la transmission de l'arduino.
exact, on ne s'en préoccupe pas pour l'instant, car on veut seulement lire avec l'arduino ce qui se passe entre l'ECU et ton interface USB (celle qui fonctionne avec ton PC)

Quote
Le Rx de l'écu ? Mais je reçois que les données du PC , sur le Tx de l'écu je n'obtient rien avec le montage actuelle
c'est bien parce qu'on ne reçoit rien avec le montage actuel, que je souhaite voir ce qui se passe avec ton interface USB, qui semble-t-il fonctionne, donc te permet de recevoir des choses


Quote
Je dis réception du PC car c'est seulement avec une action sur le programme que j'ai des données réceptionné par l'arduino, Mais un changement de valeur ne me donne rien.
peux-tu préciser le contexte de cette phrase, je crains de ne pas comprendre ce que tu fais et ce que tu veux dire ?
Title: Re: Projet Control module
Post by: 200sx200 on Sep 08, 2017, 06:12 pm
D'accord :)

Bien donc quand je fait fonctionner l'interface USB avec le PC et que je branche l'arduino sur le Rx de l'écu, je reçois bien un tas de données mais ce sont celles envoyés par le PC(demande d'information).
Si une valeur change sur le programme il n'y à aucune donné réceptionné par l'arduino.

En revanche si je me branche sur le Tx de l'arduino (normalement les valeurs transmise ), je ne reçois rien du tous.

edit:
j'ai essayé de plusieurs façon, et rien n'y fait, je capte seulement les demandes du Pc (Rx de l'écu) mais rien provenant de l'écu (Tx).
Title: Re: Projet Control module
Post by: trimarco232 on Sep 09, 2017, 11:53 am
Quote
Bien donc quand je fait fonctionner l'interface USB avec le PC et que je branche l'arduino sur le Rx de l'écu, je reçois bien un tas de données mais ce sont celles envoyés par le PC(demande d'information)
Bonjour,
ok, cela prouve que le sens ECU -> arduino fonctionne. As-tu regardé les donnée
as-tu également monitoré via l'arduino les données envoyées depuis ton interface usb vers l'ecu ?
Title: Re: Projet Control module
Post by: 200sx200 on Sep 09, 2017, 12:48 pm
Bonjour,
ok, cela prouve que le sens ECU -> arduino fonctionne. As-tu regardé les donnée
as-tu également monitoré via l'arduino les données envoyées depuis ton interface usb vers l'ecu ?
Je comprends pas çe que tu dis car c'est pas les données de l'écu que je capte sur le Rx de l'écu, c'est les données transmissent par le pc ex:

Pc => demande d'info sur le voltage à l'écu => Rx ecu = réponse par le Tx.

Les données captés par l'arduino sont identique à chaque action (reset ecu, fin de demande) or je connais déjà ce qui faut pour les demandes :  

Protocoles (http://arduino.cybrax-computers.com/files/Consult-Protocol-&-Commands-Issue-6.pdf)
Title: Re: Projet Control module
Post by: trimarco232 on Sep 09, 2017, 04:47 pm
Quote
Je comprends pas çe que tu dis car c'est pas les données de l'écu que je capte sur le Rx de l'écu, c'est les données transmissent par le pc ex:
ok, et pour le tx de l'ecu, tu peux le monitorer ?
Title: Re: Projet Control module
Post by: 200sx200 on Sep 09, 2017, 05:35 pm
J'ai essayé et j'obtiens rien sur le Tx, mais j'ai reçue le LM358 donc je vais tester avec.  

Edit:

Donc c'est bon avec le nouveau montage j'ai plein de données :) 

(https://scontent-cdg2-1.xx.fbcdn.net/v/t1.0-9/21462641_10210325637362873_3492158358343373244_n.jpg?oh=9a834ca574afc6ad1908e6dc2b212526&oe=5A5CB04D)
(https://scontent-cdg2-1.xx.fbcdn.net/v/t1.0-9/21370829_10210325637962888_1739088299493291167_n.jpg?oh=a625df710ada6364efc1f8a2e7959a15&oe=5A152CE1)

Et cette fois cela provient bien de l'écu, maintenant je n'ai pas encore les 2 condensateurs à brancher sur la masse (pas encore reçue) donc j'ai peut être des valeurs erronées ?

Je vais donc essayer de filtré au moins une donnée pour tester le fonctionnement.

je fais comme avec les lettres ?  switch (inByte) {   case 'Z': ....
Title: Re: Projet Control module
Post by: trimarco232 on Sep 09, 2017, 08:22 pm
et c'est l'arduino qui envoie les requêtes ?
Title: Re: Projet Control module
Post by: 200sx200 on Sep 09, 2017, 08:31 pm
non, seulement de la recup, quand la connexion entre PC écu est faite ;)
Title: Re: Projet Control module
Post by: 200sx200 on Sep 10, 2017, 11:04 am
J'ai fini par réussir à séparer les valeurs.

D'après le protocole, l'écu envoie "FF" suivi du nombre de byte,j'ai donc trouvé que en supprimant les "0" j'obtenais bien le nombre de byte suivant le "FF" (exemple en fin de code )

Code: [Select]


5E
FF
0
0
FF
12
0
4C
5B
0
0
FF
0
5E
FF
0
0
12
0
0
FF
0
C0
0
4C
5B
0
0
C0
0
4C
5B
0
0

FF
12
5E
64
4C
5B
10
C0
----
9B  // 12.4V
5B
10
FF
5E
64
12
FF
C0
FF
12
9B // 12.4V
----
5B
10
0


J'ai donc crée un tableau de 13 valeurs (avec le zéro pour FF) :

Code: [Select]

void loop() {

  Serial2.readBytes(consult, 12);


  if ((consult[0] == 0xFF) && ( consult[0]++ > 1 )) {
    // RPM Tr/min
    rpm_msb = consult[0];
    rpm_lsb = consult[1];
    rpm = (((rpm_msb * 256.0) + rpm_lsb) * 12.5);
    //Speed
    sped = consult[4] * 2;
    //Température d'eau C
    water = consult[5] - 50;
    //Battery Volt
    batt = (consult[6] * 80) / 1000.0;
    //MAF
    maf_msb = consult[7];
    maf_lsb = consult[8];
    maf = ((((maf_msb * 256) + maf_lsb) * 5) / 1000.0);
    //Throttle Position voltage
    tps = consult[9];
    tps = ((tps * 20) / 1000.0);
    //Injecteur
    inj_msb = consult[10];
    inj_lsb = consult[11];
    inj = (((inj_msb * 256) + inj_lsb) / 100.0);
    //Timing
    ign = 110 - consult[12];

    Serial.print("RPM="); Serial.println(rpm);
    Serial.print("Speed="); Serial.println(sped);
    Serial.print("Water="); Serial.println(water);
    Serial.print("Battery="); Serial.println(batt);
    Serial.print("MAFs="); Serial.println(maf);
    Serial.print("Throttle="); Serial.println(tps);
    Serial.print("Injector="); Serial.println(inj);
    Serial.print("Timing="); Serial.println(ign);
  }

}//End Loop


J'ai essayé "consult[0]++ > 1" pour ne pas prendre en compte les valeurs qui sont à zéro, mais je pense que c'est plutôt à l'enregistrement qu'il faut lui dire de sauter tous les "0" ?
Title: Re: Projet Control module
Post by: trimarco232 on Sep 10, 2017, 09:56 pm
ok,
mais il faut réussir à envoyer les requêtes depuis l'arduino, c'est un passage obligé !
Title: Re: Projet Control module
Post by: 200sx200 on Sep 10, 2017, 10:10 pm
ok,
mais il faut réussir à envoyer les requêtes depuis l'arduino, c'est un passage obligé !
oui je sais bien, mais même en copiant la partie Tx du schéma cela n'a pas été suffisant, je pense que je vais être obligé de faire la partie du signal qui est d'ailleurs connecté avec une résistance.
Title: Re: Projet Control module
Post by: 200sx200 on Sep 11, 2017, 09:26 pm
La partie réception étant bonne même si je n'ai pas réussi à faire sortir les bonnes valeurs, j'essaye la partie transmission.

Schéma avant :
(https://scontent-cdg2-1.xx.fbcdn.net/v/t31.0-8/21457507_10210316816542358_6929737062352487398_o.jpg?oh=e9d58b4690fb43953635264eef9d00f2&oe=5A5A85FC)
Taille réelle (https://scontent-cdg2-1.xx.fbcdn.net/v/t31.0-8/21457507_10210316816542358_6929737062352487398_o.jpg?oh=e9d58b4690fb43953635264eef9d00f2&oe=5A5A85FC)

Schéma de la board actuel (no fonctionnel) :(
(https://scontent-cdg2-1.xx.fbcdn.net/v/t31.0-8/21544031_10210338966536094_8099521030744977730_o.jpg?oh=a44364a0773c2a2fce88105888da597d&oe=5A4A5D8D)
Taille réelle (https://scontent-cdg2-1.xx.fbcdn.net/v/t31.0-8/21544031_10210338966536094_8099521030744977730_o.jpg?oh=a44364a0773c2a2fce88105888da597d&oe=5A4A5D8D)

Qu'en pensez vous ?
Title: Re: Projet Control module
Post by: 200sx200 on Sep 12, 2017, 08:15 pm
J'ai donc réussi à séquencer les données :)

En vidéo ICI (https://www.facebook.com/kevin.martin.735944/videos/10210344611357211/)

Mon seul problème récurant, c'est que je suis obligé de synchroniser manuellement avec le Pc, c'est à dire démarrer le programme de gauges seulement après le sérial monitor.

Je dois trouver le moyen de remplir le consult[28] seulement quand ce sont les données qui m'intéresse et pas toutes.
Title: Re: Projet Control module
Post by: 200sx200 on Sep 14, 2017, 07:08 pm
J'ai donc avancé dans mon programme :

Code: [Select]

/* R13-Consult-V0.1 By 200sx200*/

boolean recept = false;
byte display1[37];//Open Display
//Consult
byte consult[28];
//int gauges
int batt;
int tps;
int water;
//setup
void setup() {
  Serial.begin(9600);
  Serial2.begin(9600);
  Serial3.begin(9600);
}

void loop() {
  while (recept == true) {
    goto Consult;
  }

  if ( recept == false) {
    displayO();
  }
  
Consult:  Serial2.readBytes(consult, 28);

  if (consult[0] == 0xFF) {
    //Water Temp C
    water = consult[5] - 50;
    //Battery Volt
    batt = (consult[6] * 80) / 1000.0;

    //Throttle Position voltage
    tps = consult[11];
    tps = ((tps * 20) / 1000.0);

    Print();
  }
}//End Loop

//-----------------------Open Display-----------------------//
void displayO() {
  Serial3.readBytes(display1, 37);
  if ((display1[0] == 6) && (display1[1] == 41) && (display1[3] == 41) && (display1[35] == 41)) {
    Serial.println("Open Display");
    recept = true;
  }
}

void Print() {
  Serial.print("Water Temp C="); Serial.println(water);
  Serial.print("Battery="); Serial.println(batt);
  Serial.print("Throttle="); Serial.println(tps);
}


Le Prog est bien fonctionnel avec mon interface (doublé:Rx,Tx) et attend d'avoir reçu la demande du Pc via le Serial3 pour recevoir les infos de l'écu Serial2.

Je pense rester sur cette option car l'arduino n'est pas assez puissante pour gérer "une" gauge sur 12 comme je souhaite.

Je vais donc passer sur la gestion de transmission avec les données reçues, via un tableau 2D ou 3D si possible ?
Title: Re: Projet Control module
Post by: trimarco232 on Sep 14, 2017, 07:49 pm
Quote
Qu'en pensez vous ?
Bonjour,
je ne peux pas admettre qu'avec un vulgaire oscillateur cela fonctionne, et pas avec l'arduino qui génère exactement le même signal à la même fréquence. Il faux que tu pousses plus loin tes investigations, tu dois en être capable maintenant !

Quote
Je vais donc passer sur la gestion de transmission avec les données reçues, via un tableau 2D ou 3D si possible ?
pourquoi pas, perso je fais plutôt 3 tableaux 1D avec le même pointeur, la présentation s'en trouve allégée
mais tous le goûts etc ...
Title: Re: Projet Control module
Post by: 200sx200 on Sep 14, 2017, 07:55 pm
Bonjour,
Bonjour,
je ne peux pas admettre qu'avec un vulgaire oscillateur cela fonctionne, et pas avec l'arduino qui génère exactement le même signal à la même fréquence. Il faux que tu pousses plus loin tes investigations, tu dois en être capable maintenant !
Je n'arrive pas à comprendre non plus :/
J'ai testé plusieurs montage dont le dernier présenté plus haut.

Une chose me viens à l'esprit, est-on sur que le signal dois être carré ?

pourquoi pas, perso je fais plutôt 3 tableaux 1D avec le même pointeur, la présentation s'en trouve allégée
mais tous le goûts etc ...
Alors je serais comme toi, je préfère alléger le truc pour plus de rapidité possible :)
Title: Re: Projet Control module
Post by: 200sx200 on Sep 15, 2017, 07:42 pm
Je m'approche du but :)

J'ai quasiment terminé le programme, je poste une version light fonctionnel :

Code: [Select]

/* R13 Consult Auto Transmission By 200sx200*/
boolean recept = false;
boolean displayP = false;
byte display1[37];//Open Display
//Consult
byte consult[28];
//int gauges
int tps;
int sped;
// Led remplace solenoid
const int Solenoid_A = 31;
const int Solenoid_B = 33;
const int Solenoid_Clutch = 35;
const int Solenoid_Lockup = 37;
//const int Solenoid_Pressure = 39;
// on when pin is high
// off when pin is low
const int SON = LOW;
const int SOFF = HIGH;
//vitesse
int vitesse = 1;


//setup
void setup() {
  Serial.begin(9600);
  Serial2.begin(9600);
  Serial3.begin(9600);
  pinMode(Solenoid_A, OUTPUT);        //solenoid A
  pinMode(Solenoid_B, OUTPUT);        //solenoid B
  pinMode(Solenoid_Clutch, OUTPUT);   //solenoid Overrun Clutch
  pinMode(Solenoid_Lockup, OUTPUT);  //solenoid Lock-up
  //pinMode(Solenoid_Pressure, OUTPUT); //solenoid Line Pressure
}

void loop() {

  if ( recept == false) {
    displayO();
  }

  while (recept == true) {
    Serial2.readBytes(consult, 28);

    if (consult[0] == 0xFF) {
      byteconsult();
      //Print();



      //-----------------------------Gearbox----------------------------------//
      if (recept == true) {
        byteconsult();

        if (tps >= 3) { //Volt position papillons (5.1V pour 100%)
          if (sped < 10) {
            Vitesse1();
          }
          if (sped > 10 && sped <= 14) {
            Vitesse2();
          }
        }
      }
      //-----------------------------Gearbox----------------------------------//
    }
  }


}//End Loop



//-----------------------Open Display-----------------------//
void displayO() {
  Serial3.readBytes(display1, 37);
  if ((display1[0] == 6) && (display1[1] == 41) && (display1[3] == 41) && (display1[35] == 41)) {
    Serial.println("Open Display Windows detected");
    recept = true;
  }
}

void byteconsult() {
  //Speed kph
  sped = consult[4] * 2;
  //Throttle Position voltage
  tps = consult[11];
  tps = ((tps * 20) / 1000.0);
}

void Print() {
  Serial.print("Speed kph="); Serial.println(sped);
  Serial.print("Throttle="); Serial.println(tps);
}

// 1 => BC
void Vitesse1() {
  Serial.println("Vitesse1");
  digitalWrite(Solenoid_A, SON);
  digitalWrite(Solenoid_B, SON);
  digitalWrite(Solenoid_Clutch, SON);
  digitalWrite(Solenoid_Lockup, SOFF);
  //digitalWrite(Solenoid_Pressure, SOFF);
}

// 2 => ABDEG
void Vitesse2() {
  Serial.println("Vitesse2");
  digitalWrite(Solenoid_A, SOFF);
  digitalWrite(Solenoid_B, SON);
  digitalWrite(Solenoid_Clutch, SON);
  digitalWrite(Solenoid_Lockup, SOFF);
  //digitalWrite(Solenoid_Pressure, SOFF);
}


Me reste à généré le code avec les 3 boutons dont le 3eme(mode manuel) prenant le dessus sur tous et donnant accès au 2 autres(+et-).
Title: Re: Projet Control module
Post by: trimarco232 on Sep 15, 2017, 10:29 pm
Quote
Une chose me viens à l'esprit, est-on sur que le signal dois être carré ?
Bonjour,
c'est bien de vouloir tout vérifier et de se méfier de tout !
mais là, il s'agit d'un oscillateur qui ne délivre rien d'autre qu'un signal carré

Quote
J'ai testé plusieurs montage dont le dernier présenté plus haut
pour t'aider il faudrait pouvoir tout vérifier :
- la génération de la fréquence par l'arduino a-elle bien été initialisée ?
- peux-tu mesurer avec l'arduino la fréquence délivrée par ton interface usb ? Mesure aussi la tension pour la comparer avec celle en sortie de ton montage (12v/2 en principe), vérifie que tout est pareil
- vérifie en monitorant que les requêtes que tu envoies avec l'arduino sont bien identiques à celles envoyées par ton interface usb
Title: Re: Projet Control module
Post by: 200sx200 on Sep 15, 2017, 11:22 pm
Bonjour,
c'est bien de vouloir tout vérifier et de se méfier de tout !
mais là, il s'agit d'un oscillateur qui ne délivre rien d'autre qu'un signal carré
pour t'aider il faudrait pouvoir tout vérifier :
- la génération de la fréquence par l'arduino a-elle bien été initialisée ?
- peux-tu mesurer avec l'arduino la fréquence délivrée par ton interface usb ? Mesure aussi la tension pour la comparer avec celle en sortie de ton montage (12v/2 en principe), vérifie que tout est pareil
Ok, je pourrais effectivement, je vais chercher comment faire les contrôles via l'arduino ou peut être avez vous déjà des programmes ? (je n'ai encore fais ce type de prog)

- vérifie en monitorant que les requêtes que tu envoies avec l'arduino sont bien identiques à celles envoyées par ton interface usb
Le problème est là justement, quand je reçois de l'écu, les données suivent le protocole donné mais l'arduino n'affiche pas les bonnes valeurs dans le serial sous n'importe quel "DEC,HEX...".

Mais sans serial mon programme fonctionne très bien et suit le protocole  :smiley-roll: (chercher l'erreur lol)

Via le PC c'est pareil ex: (demande gauges)=>Reception Arduino en mode HEX
Code: [Select]

6==(0xc9)
29== normalement je devrais recevoir (0x5A)(mode HEX) et 90 DECIMAL
0
29== (0x5A)
7F
29== (0x5A)
7A
29== (0x5A)
F00
29== (0x5A)
1E
29== (0x5A)
3A
29== (0x5A)
1D
29== (0x5A)
75
29== (0x5A)
39
29== (0x5A)
79
29== (0x5A)
1F
29== (0x5A)
7D
29== (0x5A)
7B
29== (0x5A)
74
29== (0x5A)
76
29== (0x5A)
38
29== (0x5A)
70
29== (0x5A)
6F
0==(0xf0)
Title: Re: Projet Control module
Post by: trimarco232 on Sep 17, 2017, 04:32 pm
Quote
Mais sans serial mon programme fonctionne très bien et suit le protocole
Bonjour,
j'ai du mal à te suivre, je vais poser une série de questions pour savoir ce qui fonctionne ou pas
question (1) : l'arduino peux-t-il envoyer des requêtes à l'ecu, et obtenir des réponses ?
 
Title: Re: Projet Control module
Post by: 200sx200 on Sep 17, 2017, 05:17 pm
Bonjour,
j'ai du mal à te suivre, je vais poser une série de questions pour savoir ce qui fonctionne
Ca à l'air compliqué mais sa ne l'ai pas ^^
Pour faire simple, ce que je reçois de l'arduino, ne sont pas les bonnes valeurs(sur le moniteur de série), mais affiche les bons résultats à la fin.
Je ne serais te dire pourquoi, une fois la variable transformé en valeur elle se retrouve bonne.
 
l'arduino peux-t-il envoyer des requêtes à l'ecu, et obtenir des réponses ?
Non, ou du moins s'il envoi je ne reçois rien de l'écu.
Mais je c'est que la réception est bonne donc c'est la transmission qui bloque.
Title: Re: Projet Control module
Post by: trimarco232 on Sep 17, 2017, 11:27 pm
Quote
ce que je reçois de l'arduino, ne sont pas les bonnes valeurs(sur le moniteur de série), mais affiche les bons résultats à la fin
sur quoi et en vertu de quoi les bonnes valeurs sont affichés à la fin ?
Title: Re: Projet Control module
Post by: 200sx200 on Sep 17, 2017, 11:46 pm
sur quoi et en vertu de quoi les bonnes valeurs sont affichés à la fin ?
Quand j'ai les valeurs comme le voltage batterie , les rpm, la vitesse ect... elles sont toutes correcte et identique au logiciel de diagnostique.

ex: valeurs reçue[1] *80 / 1000= valeur à afficher.
Title: Re: Projet Control module
Post by: trimarco232 on Sep 18, 2017, 08:12 am
Bonjour,
les bonnes valeurs sont affichées sur quoi ?
( exemple de réponse souhaitée :
- sur le programme correspondant à l'interface usb
- sur le moniteur série de l'arduino
- sur une interface série que tu as fait sur ton ordinateur en programmation visual studio
- sur ta tv lors d'une émission de stéphane berne
- sur le smartphone de la bêtasse qui passe dans la rue ... )
Title: Re: Projet Control module
Post by: 200sx200 on Sep 18, 2017, 10:10 am
Bonjour, lol

Les bonnes valeurs sont affichés sur:
- sur le programme correspondant à l'interface usb
- sur le moniteur série de l'arduino (après calcul)

Je vais essayer d'être plus clair car c'est simple mais pas évidement à expliquer.

1.En premier lieu voici Le-Generic-Nissan-ECU-Data-register-table-Ver-2.pdf (http://arduino.cybrax-computers.com/files/Generic-Nissan-ECU-Sensor-or-Data-register-table-Ver-2.pdf) qui nous donne le langage à savoir pour discuter avec l'écu.

2. Le protocole à suivre si on veut que l'écu nous comprenne et réponde Consult-Protocol-&-Commands-Issue-6.pdf (http://arduino.cybrax-computers.com/files/Consult-Protocol-&-Commands-Issue-6.pdf)

3.Les commandes envoyées (sources http://arduino.cybrax-computers.com/ (http://arduino.cybrax-computers.com/):
Code: [Select]

    Serial2.write(0x5A);///ECU_COMMAND_READ_REGISTER 0x5A
    Serial2.write(0x0B);//ECU_REGISTER_VEHICLE_SPEED 0x0B
    Serial2.write(0x5A);///ECU_COMMAND_READ_REGISTER 0x5A
    Serial2.write(0x00);//ECU_REGISTER_TACH_MSB 0x00
    Serial2.write(0x5A);///ECU_COMMAND_READ_REGISTER 0x5A
    Serial2.write(0x01);//ECU_REGISTER_TACH_LSB 0x01
    Serial2.write(0x5A);///ECU_COMMAND_READ_REGISTER 0x5A
    Serial2.write(0x08);//ECU_REGISTER_COOLANT_TEMP 0x08
    Serial2.write(0x5A);///ECU_COMMAND_READ_REGISTER 0x5A
    Serial2.write(0x0C);//ECU_REGISTER_BATTERY_VOLTAGE 0x0C
....
    Serial2.write(0xF0);//ECU_COMMAND_TERM 0xF0

On envoie à l'écu "(0x5A)" (je veux la valeur suivante) suivi du type ex: "(0x0B)".

4.Les donnés reçus par l'arduino transmisse du programme correspondant à l'interface usb à l'écu (HEX mode):
Code: [Select]

6
29
0
29
7F
29
7A
29
F00
29
1E
29
3A
29
1D
29
75
29
39
29
79
29
1F
29
7D
29
7B
29
74
29
76
29
38
29
70
29
6F
0

Même si ce n'ai pas ce que je voulais recevoir, on distingue une similitude.

5.Je me suis donc basé sur le fait que le (0x5A) et reconnue en tant que "29" par l'arduino. Qui au final n'a pas encore été utiliser jusque là.

6.J'ai crée un tableau de valeurs du nombre de demande du Pc "byte consult[28]" et un calcul pour sortir sur le Serial moniteur la bonne valeur:

Code: [Select]

Serial2.readBytes(consult, 28);
    if (consult[0] == 0xFF) {
      byteconsult();
      Print();
}

void byteconsult() {
  //Speed kph
  sped = consult[4] * 2;
}
void Print() {
  Serial.print("Speed kph="); Serial.println(sped);
}


Conclusion :

1-Soit l'interface USB (FTDI) ne me permet pas de comprendre correctement les bonnes valeurs, ici pas très important sauf si l'on veut que l'arduino discute seul avec l'écu.
=> l'interface maison comprend l'écu mais pas le FTDI ?

2.Soit le Serial moniteur n'affiche pas les bonnes valeurs ?

Ps:La discussion entre arduino et écu à seulement été tester avec les valeurs HEX "(0x5A)" et pas "0x29" (comme reçue avec l'interface usb).
Title: Re: Projet Control module
Post by: trimarco232 on Sep 18, 2017, 09:32 pm
Quote
3.Les commandes envoyées
très concrètement stp, les commandes envoyées par quoi vers quoi, et comment on est certain qu'il s'agit bien de ces datas (et pas par exemple celles qui sont vues ailleurs)

Quote
4.Les donnés reçus par l'arduino transmisse du programme correspondant à l'interface usb à l'écu (HEX mode):
c'est ce que l'arduino lit sur le rx de l'ecu ?
attention, sur le rx de l'ecu les signaux serial sont inversés, fais un essai avec softwareserial, en ajoutant le paramètre "inverse_logic", pour voir ce que ça donne ?


Title: Re: Projet Control module
Post by: 200sx200 on Sep 18, 2017, 10:10 pm
c'est ce que l'arduino lit sur le rx de l'ecu ?
attention, sur le rx de l'ecu les signaux serial sont inversés, fais un essai avec softwareserial, en ajoutant le paramètre "inverse_logic", pour voir ce que ça donne ?
Oui, sur le Rx de l'écu donc ce qu'envoie le PC à l'écu.
Je vais essayer, voir déjà comment ajouter.

très concrètement stp, les commandes envoyées par quoi vers quoi, et comment on est certain qu'il s'agit bien de ces datas (et pas par exemple celles qui sont vues ailleurs)
La c'est un exemple de programme arduino vers écu, mais les HEX doivent être identique.
Title: Re: Projet Control module
Post by: trimarco232 on Sep 19, 2017, 01:45 pm
Quote
mais les HEX doivent être identique
Bonjour,
on peut le supposer, mais le mieux c'est de s'en assurer
cela permet en outre de vérifier le fonctionnement de chaque maillon de toute la boucle
Title: Re: Projet Control module
Post by: 200sx200 on Sep 19, 2017, 10:09 pm
D'accord je répondrais dès que j'aurais essayé "inverse_logic".
Title: Re: Projet Control module
Post by: 200sx200 on Sep 23, 2017, 07:01 pm
attention, sur le rx de l'ecu les signaux serial sont inversés, fais un essai avec softwareserial, en ajoutant le paramètre "inverse_logic", pour voir ce que ça donne ?
Je viens de regarder un peu à ce sujet mais en faites tu veux juste inverser les Pin ?

Car j'ai déjà essayé de recevoir sur les Rx et Tx de l'écu mais l'écu ne transmets rien t'en qu'il n'a pas reçue de commande.

Aucune activités si l'écu ne reçoit pas "00xff 0xff 0xef"
Title: Re: Projet Control module
Post by: 200sx200 on Sep 24, 2017, 04:49 pm
Bonjour,

Savez-vous s'il existe des Relais qui permette d'être actif dès le contact mais qui ont un "minuteur" pour se désactiver ?

exemple:
1-Moteur tourne relais ON
2-Arret du moteur relais ON pendant X temps
3-Relais OFF

Celui la (http://www.ebay.fr/itm/DC-5V-12V-24V-Signal-Off-Delay-Turn-Off-Relay-Module-Adjustable-Timer-Switch-DVD-/282536124244?var=&hash=item41c8771f54:m:mnO8MR76C6PXxmYgw4cWIew) pourrais faire l'affaire ?
Title: Re: Projet Control module
Post by: trimarco232 on Sep 24, 2017, 10:19 pm
Quote
Savez-vous s'il existe des Relais qui permette d'être actif dès le contact mais qui ont un "minuteur" pour se désactiver
si le relais est commandé par l'arduino, il est quand même plus logique de faire cette "minuterie" par le soft

édit : pour ces questions particulières : -> topic particulier
Title: Re: Projet Control module
Post by: trimarco232 on Sep 24, 2017, 10:50 pm
Quote
mais en fait tu veux juste inverser les Pin ?
prête à confusion, veux-tu dire :
inverser les niveaux logiques ?
ou permuter les pins ?

en tous cas ce que je souhaites c'est que l'arduino lise les requêtes valables envoyées par l'interface usb vers l'ecu (et les comparer avec le protocole)
Title: Re: Projet Control module
Post by: 200sx200 on Sep 24, 2017, 11:05 pm
si le relais est commandé par l'arduino, il est quand même plus logique de faire cette "minuterie" par le soft
édit : pour ces questions particulières : -> topic particulier
Je ne souhaite pas le faire via l'arduino pour alléger le plus possible le programme qui ce charge de la gestion de la boite pour qu'il soit le plus rapide possible. Ainsi que pour le programme VS.
Et si le relais devais être contrôlé par l'arduino, cela voudrait dire qu'elle est sous tension ;)

en tous cas ce que je souhaites c'est que l'arduino lise les requêtes valables envoyées par l'interface usb vers l'écu (et les comparer avec le protocole)
C'est justement ce que j'ai posté plus haut avec "serial.print"HEX" :
Code: [Select]


6
29
0
29
7F
29
7A
29
F00
29
1E
29
3A
29
1D
29
75
29
39
29
79
29
1F
29
7D
29
7B
29
74
29
76
29
38
29
70
29
6F
0


C'est la liste de codes transmis par le logiciel de l'interface USB à l'écu.
Title: Re: Projet Control module
Post by: trimarco232 on Sep 25, 2017, 02:26 pm
Quote
C'est justement ce que j'ai posté plus haut avec "serial.print"HEX" :
Bonjour,
oui, mais tu ne l'as pas fait avec le sotware serial comme je l'ai suggéré
Title: Re: Projet Control module
Post by: 200sx200 on Sep 30, 2017, 03:29 pm
Bonjour,
oui, mais tu ne l'as pas fait avec le sotware serial comme je l'ai suggéré
Bonjour, nan c'est vrai.
Je le ferait dès que possible, je suis beaucoup sur la mécanique en ce moment ;)
Title: Re: Projet Control module
Post by: 200sx200 on Dec 30, 2017, 02:49 am
Bonjour tous le monde,

Je reprends le topic après une longue pause, je posterais les photos et évolutions qu'il y à eu entre temps.

Sur-ce bonne fêtes.
Title: Re: Projet Control module
Post by: 200sx200 on Dec 30, 2017, 06:53 pm
Voici la préparation en photos pour la boite de vitesse.

J'ai donc crée une entretoise pour fixer un volant moteur et convertisseur de couple sur un moteur électrique 380Volts (pour simuler la rotation moteur).

(https://scontent-cdg2-1.xx.fbcdn.net/v/t1.0-9/25660283_10211005390356273_6261427466070075172_n.jpg?oh=98dbcf93784c6151786a2051ecd30975&oe=5AC79F3C)

Volant moteur + 2éme entretoise (centreur du convertisseur de couple)
(https://scontent-cdg2-1.xx.fbcdn.net/v/t1.0-9/25550357_10211005391836310_8679069832588388800_n.jpg?oh=d7152f0ca702620d381d14895657069a&oe=5AFA124D)

Montage complet
(https://scontent-cdg2-1.xx.fbcdn.net/v/t1.0-9/25594250_10211005392156318_6721448029406525800_n.jpg?oh=4c2d380ef44613fdca7d4c6a4904e3c5&oe=5AB9BA7E) (https://scontent-cdg2-1.xx.fbcdn.net/v/t1.0-9/25507796_10211005390076266_2451122883232926145_n.jpg?oh=da5e53c52a8c39e5e2501f5557e33702&oe=5ABFB9F5)


La création du support pour le placer devant la boite automatique va venir assez vite.
Title: Re: Projet Control module
Post by: 200sx200 on Jan 21, 2018, 05:00 pm
Je mets à jour un peu le poste car arrêté depuis quelque temps :(

J'me suis donc remis sur l'interface avec le LM358 pour réception des infos du PC et de l'écu en étant superposé à l'interface usb :

(https://scontent-cdg2-1.xx.fbcdn.net/v/t31.0-8/27021834_10211208844642503_4683268731888942097_o.jpg?oh=21fecbce465a85bdf0065c2a65a854c4&oe=5AF6F124)(https://scontent-cdg2-1.xx.fbcdn.net/v/t1.0-9/26904215_10211208850922660_1984412959173856084_n.jpg?oh=a36ef4bceaf1cde6207d1db855c67ee7&oe=5AE61E25)

Testé et fonctionnel, pour la réception de données car parlé seul entre ECU et Arduino à toujours été soldé par un échec.

Ce qui en soit n'est pas si grave car comme j'ai besoin des infos de l'écu à deux endroit différents et que l'écu ne le permets pas, l'interface me permet de transmettre X fois toutes les données à partir du moment ou il est déjà "initialisé" bien entendue.
Title: Re: Projet Control module
Post by: trimarco232 on Jan 22, 2018, 07:46 pm
Bonjour,
alors 1 karma pour la persévérance + 1 pour le pcb
Title: Re: Projet Control module
Post by: 200sx200 on Jan 23, 2018, 11:49 am
Bonjour trimarco :)

Merci :)
Title: Re: Projet Control module
Post by: 200sx200 on Jun 10, 2018, 06:23 pm
Bonjour à tous :)

Les tests vont bientôt pouvoir commencer, La boite est en place :)

(https://scontent-cdg2-1.xx.fbcdn.net/v/t1.0-9/34864823_10212208575915160_7202969779584368640_n.jpg?_nc_cat=0&_nc_eui2=AeHSKHL3O0Y-oYYwqpbW4d-aFx2NArecHFv2KwuiIbE7PqoQ8VLPrNrNX8IXnVYww78JFrDpHG-Fy3vdZcOLiI-lCCweCdV48L4xSxzVZnNgZw&oh=94b68f153a9163687bd7a6be6d7e2c74&oe=5BB0580B)

Lien de la vidéo : En rotation (https://www.facebook.com/kevin.martin.735944/videos/10212177234691649/)
Title: Re: Projet Control module
Post by: trimarco232 on Jun 11, 2018, 01:34 pm
Bonjour,

géant !

-> fixer la boîte + gants + casque + lunettes !
Title: Re: Projet Control module
Post by: 200sx200 on Jun 15, 2018, 10:37 am
Merci, oui faut pas avoir peur mais bon c'est bien fixer et c'est tellement lourd ^^
Title: Re: Projet Control module
Post by: 200sx200 on Jul 24, 2018, 10:03 am
Je reviens donner le résultat :)

Sa MAAAARRRRRCCCCHHHHEEEEEEE

Têtu le mec mdr

(https://scontent-cdg2-1.xx.fbcdn.net/v/t1.0-9/37351550_10212460237766549_1969086739637075968_n.jpg?_nc_cat=0&oh=9aa4f9493fb6e88f77207047408ad10f&oe=5C11D418)

Vidéo  (https://www.facebook.com/kevin.martin.735944/videos/pcb.10212460241846651/10212460238046556/?type=3) On voit rien mais sa marche ^^