!!

Avis aux invités: certaines sections de ce forum ne sont accessibles qu'aux membres inscrits.

Pour vous inscrire, il suffit de remplir ce formulaire. Quelques exemples de sections auxquelles vous n'avez pas accès pour l'instant: - L'atelier - Présentation des membres et de leurs Porsche - Partenaires et Guide des bonnes adresses - Petites annonces de pièces détachées

Auteur Sujet: Arduino, qui maitrise?  (Lu 19424 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne supertotof78

Arduino, qui maitrise?
« le: 30 Mai 2013, 20:53:57 »
Bon, je suis en train de me préparer un afficheur au tdb sur ma Legacy.

Côté matériel, le gros est débroussaillé, je prépare une intégration dans le compte tours



Coté programme, pour l'ensemble ça devrait le faire.

Là où je coince c'est sur la communication série entre Arduino et ECU. Pour les branchements tout ça, c'est bon. J'ai des liens avec le protocole à utiliser et les adresses, mais je bloque sur la syntaxe à utiliser (pas pro du tout, loin de là,  en terme de programmation). L'ecu me renvoie un symbole qui doit être, je pense, un message d'erreur.

Voilà le prog d'essai avec l'adresse compte tour (78...).

#include <LiquidCrystal.h>
 
// initialisation lcd sur arduino
 LiquidCrystal lcd(2, 3, 4, 5, 6, 7, 8);
 
  char incomingByte = 0;// Pour stocker les données entrantes
  String chaine=0;
  int i=0;
  byte adresse[4]={0x78, 0x10, 0x6F, 0x00};
  byte Stop[4]={0x12, 0x00, 0x00, 0x00};
 
  void setup() {
  // initialize serial:
  Serial.begin(1953);
 
   lcd.begin(16, 2);
   lcd.print("regime moteur");
}

void loop() {
 
 chaine=0;
 Serial.flush();
 delay(200);
 
 Serial.write(adresse, 4);
 
 
  while (Serial.available()>0) {
 // On lit le byte:
 incomingByte = Serial.read();
 chaine+=String(incomingByte);
 i++;
 if(i==8) {Serial.write(Stop, 4); }
  }
 lcd.clear();
 lcd.setCursor(0,0);
 lcd.print("regime moteur");
  lcd.setCursor(0,1);
  lcd.print(chaine);
  i=0;
  delay(1000);
}


Ci-dessous, protocole et adresses:
http://www.alcyone.org.uk/ssm/protocol.html
http://www.alcyone.org.uk/ssm/ecureverse.html

Si quelqu'un a une idée ou bien peut me dire la grosse connerie que j'ai faite, ça m'arrangerai (je tourne en rond là)...  :mrgreen:

Nigo

Re : Arduino, qui maitrise?
« Réponse #1 le: 30 Mai 2013, 22:16:26 »
c'est le prog d'essai qui marche pas ? si oui, faudrait plutôt voir avec le vendeur, parce que je suppose que le code qu'ils proposent eux mêmes doit fonctionner ;)
ya rien de bien compliqué dans ce code (il affiche "régime moteur" puis ce qui est récupéré par le port série), après si ça marche pas faut voir ce qui la doc :roll:
« Modifié: 30 Mai 2013, 22:19:43 par Nigo »

Hors ligne supertotof78

Re : Arduino, qui maitrise?
« Réponse #2 le: 30 Mai 2013, 22:58:15 »
Le code, c'est le mien...

J'essaie juste d'appliquer les infos en lien. Mais je ne dois pas utiliser correctement les fonctions Arduino.

Il n'y a pas vraiment de doc Arduino. C'est Open source avec un forum officiel, entre autres.
Là, j'ai le protocole, les adresses. Il n'y a plus qu'à mettre dans la boucle de mon programme normalement. Mais le miracle n'a pas lieu.

Hors ligne supertotof78

Re : Arduino, qui maitrise?
« Réponse #3 le: 09 Juin 2013, 13:10:12 »
Petit aperçu de ce que ça peut donner.

Avant projet (pas très visible...) :
[flash(425,350)]http://www.youtube.com/v/aU1ZICy7dAs[/flash]

Option possible, faire varier le rétroéclairage (soit par capteur, soit en détectant l'allumage des feus...):


En cours d'intégration:




Simulation alerte compte tours:
[flash(425,350)]http://www.youtube.com/v/d4PQoUagJrg[/flash]

La led sera dans le "8". Elle clignote dès 6500 tours et s'allume en continu dès 7500 tours (paramétrable évidemment)

pierre944S2

Re : Arduino, qui maitrise?
« Réponse #4 le: 10 Juin 2013, 09:10:19 »
chouette boulot   :enaccord6:

Hors ligne supertotof78

Re : Arduino, qui maitrise?
« Réponse #5 le: 11 Juin 2013, 18:56:43 »
Merci.

Le problème, c'est que c'est inachevé. Je bloque complètement sur la com avec l'ECU...  :evil:

Hors ligne -FX-

  • Wastegate Valve Looser Serial Steering Rack Killer
  • Membre d'honneur
  • *****
  • Messages: 11 205
  • Guru For Ever !
    • http://www.webclub944.fr.st
  • Ville: Lyon
  • Pays: FRANCE
Re : Re : Arduino, qui maitrise?
« Réponse #6 le: 11 Juin 2013, 20:51:56 »
Merci.

Le problème, c'est que c'est inachevé. Je bloque complètement sur la com avec l'ECU...  :evil:

j'ai parcouru 15 seconde la doc et ton programme.
Dans la doc, le protocole dit que ça envoi 8 bits de données et 1 bit stop.
Et ton programme lit 8 bytes (octets) et envoie 1 byte stop.
C'est pas la le problème ?

Maintenant, comme indiqué, je ne lu que tout ça pendant 15 secondes (donc pas une lecture attentive).
944 TURBO env. 290cv 1989 Rouge Indien. GURU 15 psi. VM allégé. Options : M030,220,490,533,573,593,946
Réfection moteur : http://www.club944.net/forum/index.php?topic=94315.0
Réfections diverses : https://www.club944.net/forum/index.php?topic=10510

Hors ligne fred_426_38

  • Membre
  • **
  • Messages: 113
Re : Arduino, qui maitrise?
« Réponse #7 le: 12 Juin 2013, 19:06:55 »
Bonjour,
d'abord ne pas confondre bit (bit) et byte (octet) : 8 bits
L'adresse de ton régime moteur est pas en 78 mais en 106F : http://www.alcyone.org.uk/ssm/ecureverse.html
« Modifié: 12 Juin 2013, 19:09:01 par fred_426_38 »

Hors ligne supertotof78

Re : Arduino, qui maitrise?
« Réponse #8 le: 13 Juin 2013, 00:21:55 »
C'est le site que j'ai consulté.

Mais je me débat avec la syntaxe à utiliser. Ça à l'air simple en les lisant, mais concrètement, c'est un désastre.

En fait , 78 n'est pas l'adresse RPM, mais le 1er buté du message qui indique à l'ECU qu'on veut lire à une adresse.

http://www.alcyone.org.uk/ssm/protocol.html

On retrouve le 106f juste après, puis le 00 pour clôturer la commande:
  byte adresse[4]={0x78, 0x10, 0x6F, 0x00};
« Modifié: 13 Juin 2013, 00:30:30 par supertotof78 »

Hors ligne -FX-

  • Wastegate Valve Looser Serial Steering Rack Killer
  • Membre d'honneur
  • *****
  • Messages: 11 205
  • Guru For Ever !
    • http://www.webclub944.fr.st
  • Ville: Lyon
  • Pays: FRANCE
Re : Arduino, qui maitrise?
« Réponse #9 le: 13 Juin 2013, 07:40:40 »
oui mais encore une fois ta boucle for lit 8 octets alors qu'elle ne devrait en lire qu'un seul (8 bits = 1 octet = 1 byte)
944 TURBO env. 290cv 1989 Rouge Indien. GURU 15 psi. VM allégé. Options : M030,220,490,533,573,593,946
Réfection moteur : http://www.club944.net/forum/index.php?topic=94315.0
Réfections diverses : https://www.club944.net/forum/index.php?topic=10510

seb968

Re : Arduino, qui maitrise?
« Réponse #10 le: 13 Juin 2013, 08:56:23 »
Bah là je peux vraiment pas t'aider, j'y connais rien (ou presque!)

Par contre, je connaissais pas ce genre de matériel, c'est un ordinateur additionnel adaptable à toute voiture???

Par contre ici il y a un super pro de l'informatique: RTDemons, demande lui il saura sans doute t'aider. :merci:

Hors ligne Victor

Re : Arduino, qui maitrise?
« Réponse #11 le: 13 Juin 2013, 09:19:02 »
Ca avance bien!

Vérifie aussi dans ta lecture de trames, que les octets sont lus dans le même sens (petit-boutiens et grand-boutiens). Ca m'a valu quelques cheveux blancs il y a une paire d'années...

Nigo

Re : Arduino, qui maitrise?
« Réponse #12 le: 13 Juin 2013, 09:45:11 »
FX : mais si la fonction Serial.read() renvoie un byte, pas vraiment le choix. Pour avoir les 8 bits associés à incomingByte, ils faut utiliser les opérateurs binaires ( &, << ... )
et dans ce cas le i==8 n'a sans doute rien à faire là (c'est 8 bytes et non 8 bits)
« Modifié: 13 Juin 2013, 10:01:53 par Nigo »

Hors ligne fred_426_38

  • Membre
  • **
  • Messages: 113
Re : Arduino, qui maitrise?
« Réponse #13 le: 13 Juin 2013, 11:26:57 »
J'ai trouvé aussi ça :
A la ligne 19, j'utilise la fonction write() qui envoie le caractère en tant que variable de type byte, signifiant que l'on renvoie l'information sous la forme d'un seul octet. Sinon Arduino enverrait le caractère en tant que 'int', ce qui donnerait des problèmes lors de l'affichage.

Sur ce site : http://www.siteduzero.com/sciences/tutoriels/arduino-pour-bien-commencer-en-electronique-et-en-programmation/exercice-attention-a-la-casse

Nigo

Re : Arduino, qui maitrise?
« Réponse #14 le: 13 Juin 2013, 12:14:20 »
c'est le cas, il envoie ses tableaux de 4 octets, jusque là c'est cohérent
par contre en retour faut savoir si il récupère 8 bits (1 octet) ou 8 octets. J'ai pas le protocole sous les yeux