Club944.net

Les salons de discussion du Club944.net => Le salon de l'auto => Discussion démarrée par: supertotof78 le 30 Mai 2013, 20:53:57

Titre: Arduino, qui maitrise?
Posté par: supertotof78 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

(http://www.kirikoo.net/images/7supertotof78-20130510-191330.jpg)

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/protocol.html)
http://www.alcyone.org.uk/ssm/ecureverse.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:
Titre: Re : Arduino, qui maitrise?
Posté par: Nigo 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:
Titre: Re : Arduino, qui maitrise?
Posté par: supertotof78 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.
Titre: Re : Arduino, qui maitrise?
Posté par: supertotof78 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...):
Varier le rétro éclairage d'un lcd (http://www.youtube.com/watch?v=HNEVCjTegmU#)

En cours d'intégration:
(http://www.kirikoo.net/images/7supertotof78-1-20130608-115845.jpg)

(http://www.kirikoo.net/images/7supertotof78-2-20130608-115845.jpg)

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)
Titre: Re : Arduino, qui maitrise?
Posté par: pierre944S2 le 10 Juin 2013, 09:10:19
chouette boulot   :enaccord6:
Titre: Re : Arduino, qui maitrise?
Posté par: supertotof78 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:
Titre: Re : Re : Arduino, qui maitrise?
Posté par: -FX- 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).
Titre: Re : Arduino, qui maitrise?
Posté par: fred_426_38 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 (http://www.alcyone.org.uk/ssm/ecureverse.html)
Titre: Re : Arduino, qui maitrise?
Posté par: supertotof78 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 (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};
Titre: Re : Arduino, qui maitrise?
Posté par: -FX- 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)
Titre: Re : Arduino, qui maitrise?
Posté par: seb968 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:
Titre: Re : Arduino, qui maitrise?
Posté par: Victor 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...
Titre: Re : Arduino, qui maitrise?
Posté par: Nigo 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)
Titre: Re : Arduino, qui maitrise?
Posté par: fred_426_38 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 (http://www.siteduzero.com/sciences/tutoriels/arduino-pour-bien-commencer-en-electronique-et-en-programmation/exercice-attention-a-la-casse)
Titre: Re : Arduino, qui maitrise?
Posté par: Nigo 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
Titre: Re : Re : Arduino, qui maitrise?
Posté par: -FX- le 13 Juin 2013, 17:50:54
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)

tout à fait. de toute façon les fonctions I/O ne travaille que sur des bytes, mais il ne faut pas lire 8 bytes mais bien 1 seul byte et ensuite analyser le retour avec des décalages binaires successifs ou des masques.

Enfin bon, je m'avance un peu car je n'ai pas lu dans le détail la spec.
Titre: Re : Arduino, qui maitrise?
Posté par: supertotof78 le 14 Juin 2013, 11:51:37
Ok, merci pour ces infos. ;)

Je ferai un test en ne paramétrage plus 8 mais 1 en réception.
Titre: Re : Arduino, qui maitrise?
Posté par: supertotof78 le 19 Juin 2013, 22:13:37
Lcd dans compte tours Legacy turbo (http://www.youtube.com/watch?v=hSPIFUlk04w#)
Titre: Re : Arduino, qui maitrise?
Posté par: Agato le 19 Juin 2013, 22:51:12
ça progresse :)
Titre: Re : Arduino, qui maitrise?
Posté par: seb968 le 20 Juin 2013, 09:42:54
On pourrait mettre ça sur nos pmas?
Titre: Re : Arduino, qui maitrise?
Posté par: supertotof78 le 20 Juin 2013, 13:05:33
Tout est possible.

Le point bloquant, dans la 944, c'est la place derrière les fonds de compteurs. A voir. Après, il faut voir s'il est possible de repiquer des infos du DME et/ou de rajouter des sondes sur le bloc.

Cela dit, pour ceux qui ont l'horloge fichue, il y a moyen de s'en refaire une personnalisée pour un coût dérisoire (avec d'autres fonctionnalités).

Titre: Re : Arduino, qui maitrise?
Posté par: Agato le 20 Juin 2013, 21:53:32
Cela dit, pour ceux qui ont l'horloge fichue, il y a moyen de s'en refaire une personnalisée pour un coût dérisoire (avec d'autres fonctionnalités).
Bonne idée. ;)
Titre: Re : Arduino, qui maitrise?
Posté par: supertotof78 le 20 Juin 2013, 22:01:31
20€ l'Arduino, moins de 10€ le lcd, quelques fils et de la patience...

Comparés aux 200€ que doit coûter l'horloge...
Titre: Re : Arduino, qui maitrise?
Posté par: STeppenWolf944 le 20 Juin 2013, 22:20:11
 :mrgreen:
Titre: Re : Arduino, qui maitrise?
Posté par: tonia le 20 Juin 2013, 22:24:37
genre mon horloge quoi :lol:
 ah ouais 200 balles ils sont ouf..... :enaccord3:
Titre: Re : Arduino, qui maitrise?
Posté par: supertotof78 le 20 Juin 2013, 22:29:58
Je ne connais pas le prix exact, mais ça doit être un truc du genre.
Titre: Re : Arduino, qui maitrise?
Posté par: tonia le 20 Juin 2013, 23:14:49
ça m'étonne pas.....quand on voit le reste....les seules trucs cheap ce sont les vis et clips.....
Titre: Re : Arduino, qui maitrise?
Posté par: supertotof78 le 21 Juin 2013, 06:42:48
Tu es de Port Marly dans le 78?
Titre: Re : Arduino, qui maitrise?
Posté par: fred_426_38 le 20 Juillet 2013, 20:46:05
Re !
Sur ma WRX aujourd'hui je viens d'utiliser un scangauge c'est très bien, http://www.scangauge.fr/ (http://www.scangauge.fr/) ça marche même sur mon jumper !
Puissant, il m'a donné le code défaut j'ai réparé et effacé le défaut.
On me l'a preté mais je me tate à en acheter un !
Titre: Re : Arduino, qui maitrise?
Posté par: supertotof78 le 20 Septembre 2013, 12:57:14
Salut,

J'ai intégré le bouton dans la console centrale (mode "c'est d'origine" ON), remonté le bloc instruments, réussi à récupérer le signal compte tours (pour le shift light).

J'ai monté les sondes et tiré les câbles dans l'habitacle. Ils ne sont pas encore connectés ce qui expliques les valeurs incohérentes pour la T huile et la P huile.

http://m.youtube.com/watch?v=NeerLEYiEKQ&feature=em-upload_owner&desktop_uri=%2Fwatch%3Fv%3DNeerLEYiEKQ%26feature%3Dem-upload_owner (http://m.youtube.com/watch?v=NeerLEYiEKQ&feature=em-upload_owner&desktop_uri=%2Fwatch%3Fv%3DNeerLEYiEKQ%26feature%3Dem-upload_owner)
Titre: Re : Arduino, qui maitrise?
Posté par: STeppenWolf944 le 20 Septembre 2013, 19:05:21
Cool  8)
Titre: Re : Re : Arduino, qui maitrise?
Posté par: Nelson le 20 Septembre 2013, 19:41:02

J'ai monté les sondes et tiré les câbles dans l'habitacle. Ils ne sont pas encore connectés ce qui expliques les valeurs incohérentes pour la T huile et la P huile.

ca m'interresse j'suis en train de travailler là dessus (forcement me suis renseigné sur l'arduino :) )
Titre: Re : Arduino, qui maitrise?
Posté par: supertotof78 le 20 Septembre 2013, 21:15:23
Si tu veux des infos, n'hésite pas. je peux te mettre le lien sur le forum où je sévis avec tout l'historique du bidule.
Je tiens aussi le prog à dispo si quelqu'un est tenté (à adapter en fonction des envies/idées/véhicule).  ;)

Bon, ce n'est pas du niveau de Kraftwerk, mais je suis quand même content de moi.

Dernière étape, la com' ECU. Mais déjà, je vais pouvoir aller cramer les pneus de la Leg sereinement à Lurcy en novembre!  :)
Titre: Re : Arduino, qui maitrise?
Posté par: Nelson le 20 Septembre 2013, 21:18:04
balance l'url
merci

je pars de 0...
Titre: Re : Arduino, qui maitrise?
Posté par: STeppenWolf944 le 20 Septembre 2013, 22:29:01
j'ai trouvé ca sur le net nelson, si ca te donne des idées  :enaccord6:
http://cstark27.blogspot.fr/ (http://cstark27.blogspot.fr/)

et enfin ca !!
Display arduino output on tv for less than $1 (http://www.youtube.com/watch?v=WlBXiZpuncg#)

 8)

sur quel fofo tu sévit supertotof78 ?
Titre: Re : Arduino, qui maitrise?
Posté par: supertotof78 le 20 Septembre 2013, 22:46:52
Sur le GTTF.  ;)

Mais je crois me rappeler qu'il faut être inscrit pour avoir accès.

Le sujet en question. C'est un peu éparpillé, mais il y a déjà pas mal d'infos. De toutes façons, je vais faire le point sur tout ça et faire une synthèse sous excel. Je mettrai ça ici aussi.
http://www.gtturbofan.com/t2185p30-logging-savoir-ce-qui-se-passe-au-niveau-de-la-gestion (http://www.gtturbofan.com/t2185p30-logging-savoir-ce-qui-se-passe-au-niveau-de-la-gestion)
Titre: Re : Arduino, qui maitrise?
Posté par: gerald le 21 Septembre 2013, 11:43:57
Je trouve ce post super intéressant !
Titre: Re : Arduino, qui maitrise?
Posté par: gerald le 22 Septembre 2013, 22:08:05
D'ailleurs je vient juste d'acheter une Mega 2560.

J'ai plein d'idée pour du monitoring, reste le temps et les compétences...
Titre: Re : Arduino, qui maitrise?
Posté par: Nelson le 22 Septembre 2013, 22:13:17
le lien sur le forum sub n'est pas accessible aux jeune inscrits sur le forum...

au passage je cherche un truc mais je ne sais pas comment ca s'appelle
j'ai un afficheur LCD sans connectique, juste les pistes du circuit
je cherche des "picots" a souder sur les pistes pour pouvoir enfoncer le LCD sur une planche d'essai

Comment ca s'appelle ces picots que je puisse m'en acheter ?
merci
Titre: Re : Arduino, qui maitrise?
Posté par: STeppenWolf944 le 22 Septembre 2013, 23:00:31
fais voir a quoi ca ressemble.  ;)
Titre: Re : Arduino, qui maitrise?
Posté par: Nelson le 22 Septembre 2013, 23:16:55
là on voit l'afficheur sur la planche d'essai
http://arduino.cc/en/uploads/Tutorial/lcd_photo.png (http://arduino.cc/en/uploads/Tutorial/lcd_photo.png)

Titre: Re : Arduino, qui maitrise?
Posté par: supertotof78 le 23 Septembre 2013, 12:28:10
Pin ou broche en français. On trouve des écrans lcd déjà équipés pour pas trop cher, ce qui évite de galèrera si on n'a pas de poste assez précis.

Un exemple ici (mais se trouve partout: Conrad, eBay...)
http://mchobby.be/PrestaShop/search.php?orderby=position&orderway=desc&search_query=Pin&submit_search=Rechercher (http://mchobby.be/PrestaShop/search.php?orderby=position&orderway=desc&search_query=Pin&submit_search=Rechercher)
Titre: Re : Re : Arduino, qui maitrise?
Posté par: Nelson le 23 Septembre 2013, 13:38:55
Pin ou broche en français. On trouve des écrans lcd déjà équipés pour pas trop cher, ce qui évite de galèrera si on n'a pas de poste assez précis.

c'est juste que j'ai pas envie de me faire C.... a souder des cables sur mon LCD et que donc je dois commander soit des pin/broches soit un LCD equipé :)

merci
Titre: Re : Arduino, qui maitrise?
Posté par: supertotof78 le 23 Septembre 2013, 17:13:23
Si tu as la place, prend un lcd avec les pins déjà soudés, c'est plus simple. Il n'y à plus qu'à en ficher les fils dessus.

Perso, il me fallait une platine la plus étroite possible. J'ai donc du souder mes fils un à un sans faire de faux contact (mon lcd n'a pas le pas standard entre les pins pour gain de place).

Ensuite, pour les branchements, seules 4 des 8 pins dédiées aux datas sont nécessaires. Ça fait toujours moins de fils à brancher et plus de sorties dispo sur l'Arduino.

Après, il y a encore plus simple en passant par le serial, mais ce n'est plus la même bibliothèque et donc moins facil quand on débute: utiliser la fonction serial del'arduino, seuls 2 fils nécessaires.

Je ne l'ai pas fait, car j'ai besoin de la fonction serial pour la 2ème partie de mon projet.
Titre: Re : Arduino, qui maitrise?
Posté par: Nelson le 23 Septembre 2013, 17:39:57
là c'est clairement pour les essais
Pour l'application que je vise, j'aimerai trouver autre chose que l'afficheur 2x16 que j'ai eu dans mon kit arduino

mais faut pas aller trop vite :)
Titre: Re : Arduino, qui maitrise?
Posté par: STeppenWolf944 le 23 Septembre 2013, 20:43:27
alors ce  truc serait parfait !
http://mchobby.be/PrestaShop/product.php?id_product=307 (http://mchobby.be/PrestaShop/product.php?id_product=307)
Titre: Re : Arduino, qui maitrise?
Posté par: Nelson le 23 Septembre 2013, 20:48:23
avant d'utiliser un oled, je vais tacher de faire hello world sur mon 2x16 :)
Titre: Re : Arduino, qui maitrise?
Posté par: STeppenWolf944 le 23 Septembre 2013, 20:50:11
OK  :mrgreen:

c'est un bon début  :merci:
Titre: Re : Arduino, qui maitrise?
Posté par: supertotof78 le 23 Septembre 2013, 21:08:03
Le "Hello world", on y arrive tes vite.

Oui, pourquoi pas un oled ou autre en lieu et place de l'instrumentation d'origine, avec aiguilles virtuelles, model able
à l'envie...
Titre: Re : Re : Arduino, qui maitrise?
Posté par: Nelson le 23 Septembre 2013, 21:08:52
Le "Hello world", on y arrive tes vite.

Ca serait triste que j'arrive pas à ça
Titre: Re : Arduino, qui maitrise?
Posté par: supertotof78 le 26 Septembre 2013, 23:04:33
Si ça intéresse quelqu'un ou bien donne des idées:

// Sonde pression1301 fonctionnelle
// sonde température Zeitronix fonctionnelle, sonde grove fonctionnelle
// Intro Subaru
// variation affichage avec bouton
// RPM par prise signal sur alim compt tours
// Thuile ok à 75°
// Thuile chaude à 120° et trop chaude à 140°

 #include <LiquidCrystal.h>
 
LiquidCrystal lcd(7,8,9,10,11,12);
 
  byte subaru1[8] = {
  B00100,
  B00100,
  B01110,
  B11111,
  B01110,
  B00100,
  B00100,
  B00000
  };
  byte subaru2[8] = {
  B00000,
  B00000,
  B00000,
  B00000,
  B00000,
  B00010,
  B00111,
  B00010
  };
  byte subaru3[8] = {
  B00000,
  B00000,
  B00000,
  B00010,
  B00111,
  B00010,
  B00000,
  B00000
  };
  byte subaru4[8] = {
  B01000,
  B11100,
  B01000,
  B00010,
  B00111,
  B00010,
  B00000,
  B00000
  };
  byte subaru5[8] = {
  B01000,
  B11100,
  B01000,
  B00000,
  B00000,
  B00000,
  B00000,
  B00000
  };
  byte subaru6[8] = {
  B10000,
  B01000,
  B00100,
  B00010,
  B00010,
  B00001,
  B00001,
  B00001
  };
  byte subaru7[8] = {
  B00001,
  B00001,
  B00001,
  B00010,
  B00010,
  B00100,
  B01000,
  B10000
  };
 
 int ledRougePin = 4;
 int ledVertPin = 5;
 int ledBleuPin = 6;
 
 float Thuile=0;
 float Phuile=0;
 float volthuile=0;
 float varThuile=1;
 int c=0;
 int x=0;
 int y=0;
 int z=0;
 
 float psi=0;
 float voltPhuile=0;
 
 float tempin; //calcul température habitacle
 int B=3975; //calcul température habitacle
 float resistance; //calcul température habitacle
 
 float Thuilemax=-50;
 float Phuilemax=0;
 float Phuilemin=10;
 int bouton=0;
 #define valeurMax 6
 
 const char* TempIn="T. In";
 const char* TempEx="T. Ex";
 const char* Batt="Batt.";
 const char* Rpm="RPM";
 char Unite='0';
 const char* Intitule=0;
 float t=0;
 
 int RPM=0;
 float RPMfloat=0;
 int ledRPMPin = 2;
 

 const int numReadingsR = 1500 ;     // Nombre de relevés pour la moyenne rpm
 int readingsR ;  // Variable lecture pour le relevé tension
 int indexR = 0 ;                  // position dans la création de la moyenne
 float totalR = 0 ;                  // Total en cours
 float averageR = 0 ;                // La moyenne
 
 
void setup(){
  pinMode(3, OUTPUT); // 5V pour rétroéclairage (option variation d'intensité)
  digitalWrite(3, HIGH);
  lcd.begin(16, 2); // paramètre lcd
 
  pinMode(13,INPUT); // bouton sur pin 13
  digitalWrite(13, HIGH); // alimentation pin 13
 
  pinMode( ledRougePin, OUTPUT );
  pinMode( ledVertPin, OUTPUT );
  pinMode( ledBleuPin, OUTPUT );
  pinMode( ledRPMPin, OUTPUT );
 
 
  digitalWrite( ledRougePin, HIGH );
  digitalWrite( ledVertPin, HIGH );
  digitalWrite( ledBleuPin, HIGH );
 
  lcd.clear();
 
  lcd.createChar(1, subaru1);
  lcd.createChar(2, subaru2);
  lcd.createChar(3, subaru3);
  lcd.createChar(4, subaru4);
  lcd.createChar(5, subaru5);
  lcd.createChar(6, subaru6);
  lcd.createChar(7, subaru7);
 
 
  lcd.setCursor(0,0);
  lcd.print((char)1); lcd.print((char)2);
  lcd.setCursor(3,0); lcd.print((char)6);
  lcd.setCursor(3,1); lcd.print((char)7);
  lcd.setCursor(6,0); lcd.print("SUBARU");
  lcd.setCursor(0,1); lcd.print((char)3);lcd.print((char)4); lcd.print((char)5);

  delay(3000); // Ecran vide 5 seconde
  lcd.clear();
 
  for (int positionCounter = 0; positionCounter < 12; positionCounter++) {
    // Décalle le curseur de 12 colonnes vers la gauche
    lcd.scrollDisplayLeft();
    }
   
  lcd.print("LEGACY TURBO");
 
  for (int positionCounter = 0; positionCounter < 14; positionCounter++) {
    // Décalle le texte vers la droite et le centre
    lcd.scrollDisplayRight();
    // wait a bit:
    delay(150);   }
 
  // Réinitialisation de l'affichage et de la position du curseur
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("  LEGACY TURBO");
  delay(1000);
     
  lcd.setCursor(16,1);
  lcd.print("Bienvenue a bord");
     
  for (int positionCounter = 0; positionCounter < 16; positionCounter++) {
    // scroll one position right:
    lcd.scrollDisplayLeft();
    // wait a bit:
    delay(150);   }
       
  lcd.clear();
  lcd.setCursor(2,0);
  lcd.print("LEGACY TURBO");
  lcd.setCursor(0,1);
  lcd.print("Bienvenue a bord");
  delay(2000);
  lcd.clear();
}
 
 void loop(){
 // Interprétation sonde temperature grove
  resistance=(float)(1023-analogRead(A4))*10000/analogRead(A4);
  tempin=1/(log(resistance/10000)/B+1/298.15)-273.15;
   
  volthuile=analogRead(A1)*5.0/1024.0;
  varThuile=0.5608*volthuile+1.4498;
  if(varThuile<2.02){Thuile=((440.12*pow(volthuile,4)-1493.9*pow(volthuile,3)+1881.8*pow(volthuile,2)-1083.8*volthuile+335.06))/varThuile;}
  if(varThuile>2.02){Thuile=((0.1541*pow(volthuile,4)-2.6435*pow(volthuile,3)+17.306*pow(volthuile,2)-60.03*volthuile+124.59))/varThuile;}
 
  voltPhuile=analogRead(A0)*5.0/1024.0;
  psi=(37.5*(voltPhuile))-18.75;
  Phuile=psi/14.51; // conversion en bar
  if (Phuile<0) {Phuile==0;}
 
  if(Thuile<75) {Thuilefroide();}
  if(Thuile>75 and Thuile<110) {Thuileok();}
  if(Thuile>115 and Thuile<130) {Thuilechaude();}
  if(Thuile>130) {Thuiletropchaud();}
 
  if (Thuile>Thuilemax) {Thuilemax=Thuile;}
  if (Phuile>Phuilemax) {Phuilemax=Phuile;}
  if (Phuile<Phuilemin) {Phuilemin=Phuile;}
 
  // Convertir le signal du compte tours (moyenné pour lisser l'affichage)
  while(indexR< numReadingsR) {         
    readingsR = analogRead (5) ;
    totalR = totalR + readingsR ;         
    indexR = indexR + 1 ;  }
                   
  indexR = 0 ;
  averageR = totalR / numReadingsR ;
  RPMfloat=averageR*10.3;
  RPMfloat=RPMfloat/10;
  RPM=RPMfloat;
  RPM=RPM*10;
  totalR=0;
 
  if(RPM<=6000) {delay(200);}
  if(RPM>6800) {delay(300);}
  if(RPM>6000 and RPM<6800) { for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=50) {
  analogWrite(ledRPMPin, fadeValue);         
  delay(10);                           
  }
   for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=50) {
    // sets the value (range from 0 to 255):
    analogWrite(ledRPMPin, fadeValue);         
    // wait for 30 milliseconds to see the dimming effect   
    delay(10);                           
  } }
 
  if(RPM>6800) {digitalWrite(2, HIGH); }
 
 
  if (digitalRead(13)==HIGH) // incrément x par appui bouton
  { lcd.clear();
    if (bouton<valeurMax){ bouton++;} else {bouton=0;}
    delay(200);
    while((digitalRead(13)==HIGH));
  }
 
  switch (bouton) { // en fonction de la valeur de x, on modifie l'affichage
   case 0: Intitule=Batt; t=0; Unite='V'; break;
   case 1: Intitule=TempIn; t=tempin; Unite=(char)223; break;
   case 2: Intitule=TempEx; t=0; Unite=(char)223; break;
   case 3: Intitule=Rpm; t=RPM; Unite=' '; break;
   case 4: lcd.setCursor(0,0); lcd.print("T huile maxi:");
           lcd.setCursor(0,1); lcd.print(Thuilemax);
           lcd.print((char)223); lcd.print("C"); break;
   case 5: lcd.setCursor(0,0); lcd.print("P huile maxi:");
           lcd.setCursor(0,1); lcd.print(Phuilemax);
           lcd.print("b"); break;       
   case 6: lcd.setCursor(0,0); lcd.print("P huile mini.");
           lcd.setCursor(0,1); lcd.print(Phuilemin);
           lcd.print("b"); break;}
 
  // Affichage sur lcd
  if (bouton<4) {
   lcd.clear();
   lcd.setCursor(0,0); lcd.print("OilT");
   lcd.setCursor(6,0); lcd.print("OilP");
   lcd.setCursor(11,0); lcd.print(Intitule);
   lcd.setCursor(0,1);
   if(Thuile<100) {lcd.print(Thuile, 1);} else {lcd.print(Thuile, 0);}
   lcd.print((char)223);
   lcd.setCursor(6,1); lcd.print(Phuile, 1); lcd.print("b");
   lcd.setCursor(11,1);
   if(Intitule==Batt || Intitule==TempEx) {lcd.print(" No");}
   if(Intitule==TempIn){lcd.print(t, 1);}
   if(Intitule==Rpm){lcd.print(t, 0);}
   if(Intitule==TempIn || Intitule==Rpm){lcd.print(Unite);}
  }
  delay(50);
}
 
 
void Thuilefroide(){
   int iBleu = Thuile*3.1875; iBleu>0;
   int iVert = 255 - iBleu;
   analogWrite( ledBleuPin, iBleu );
   analogWrite( ledVertPin, iVert );
  }

void Thuileok(){
  digitalWrite( ledRougePin, HIGH );
  digitalWrite( ledVertPin, HIGH );
  digitalWrite( ledBleuPin, HIGH );
 
  if (y==0) {
    x=0;
    y++;
   lcd.clear();
   lcd.setCursor(0,0);
   lcd.print("       GO       ");
   for (x==0; x<6; x++) {
   lcd.setCursor(0,1);
   lcd.print("  ! ! !  ! ! !  ");
   delay(250);
   lcd.clear(); lcd.setCursor(0,0);    lcd.print("       GO       ");
   delay(250); lcd.setCursor(0,1);  lcd.print("  ! ! !  ! ! !  "); }
}}

void Thuilechaude(){
   int iVert = Thuile*6-593; iVert>127;
   analogWrite( ledRougePin, 0 );
   analogWrite( ledVertPin, iVert );
 }

void Thuiletropchaud(){
  digitalWrite( ledRougePin, LOW );
  digitalWrite( ledVertPin, HIGH );
  digitalWrite( ledBleuPin, HIGH );
     
   if (z==0) {
   x=0;
   z++;
   lcd.print("ARRET  IMPERATIF");
   for (x==0; x<6; x++) {
   lcd.setCursor(0,1);
   lcd.print("  ! ! !  ! ! !  ");
   delay(250);
   lcd.clear(); lcd.setCursor(0,0);    lcd.print("ARRET  IMPERATIF");
   delay(250); lcd.setCursor(0,1);  lcd.print("  ! ! !  ! ! !  ");}
  }}
 
Titre: Re : Re : Arduino, qui maitrise?
Posté par: Nelson le 26 Septembre 2013, 23:23:08
Si ça intéresse quelqu'un ou bien donne des idées:

carrement !
merci, j'vais tacher de decrypter tout ça

ps : j'ai commandé les pin header lundi, ils sont arrivés aujourd'hui, Nickel !
Titre: Re : Arduino, qui maitrise?
Posté par: find944 le 28 Septembre 2013, 18:12:19
Ca a l'air amusant votre truc...  :mrgreen:

Ma 944 n'a pas d'ODB digne de ce nom pour que cela soit exploitable, et en plus j'ai pas du faire une ligne de C depuis 15 ans  :mrgreen:

Amusez vous bien ;)
Titre: Re : Arduino, qui maitrise?
Posté par: supertotof78 le 28 Septembre 2013, 19:35:25
Je te rassure, je ne suis ni informaticien, ni électronicien.

Un peu d'esprit scientifique, de logique. Bien lire les datasheets des éléments utilisés et go!

Ca peut très bien aller sur une 944: Pour le moment, je ne communique pas du tout avec l'ecu de ma Legacy. Tout fonctionne à partir de sondes que j'ai ajoutées (non présentes d'origine) et de signaux électriques repiqués et interprétés (régime moteur).

Après, le plus compliqué a été d'intégrer un écran sans dénaturer l'habitacle... Dans la 944, je ne me rappelle plus comment est fichu le bloc instruments. Dans la Legacy, j'avais juste assez de place: J'ai un peu élagué à la dremel et cherché sur le net pour un lcd le moins encombrant possible.
Titre: Re : Arduino, qui maitrise?
Posté par: find944 le 28 Septembre 2013, 19:41:26
Oui, il faut mettre des sondes, ca peut le faire. Dans ce cas, l'afficheur peut être intégré dans un cache et mis sous l'autoradio (Phase 2) à la place du vide poche, pour préserver le reste.

Titre: Re : Arduino, qui maitrise?
Posté par: Nelson le 28 Septembre 2013, 19:53:35
en meme temps a part la temperature d'huile il y a quasi tout dans une 944...
Titre: Re : Arduino, qui maitrise?
Posté par: find944 le 28 Septembre 2013, 20:00:08
Net, y manque pas grand chose ;)
c'est histoire de faire joujou avec la chose.
Titre: Re : Arduino, qui maitrise?
Posté par: supertotof78 le 28 Septembre 2013, 20:08:39
Se faire un shift light, une alarme pour la température d'huile (trop basse pour attaquer, trop haute = arrête-toi), une alerte si la température extérieure descend sous 0, un indicateur de rapport de boite... Enfin, il y a plein de trucs à imaginer!
Titre: Re : Arduino, qui maitrise?
Posté par: STeppenWolf944 le 28 Septembre 2013, 20:38:32
et ca permet surtout de virer l'horloge de bord  :mdr8:
Titre: Re : Arduino, qui maitrise?
Posté par: Agato le 28 Septembre 2013, 20:53:00
... ou de la reproduire virtuellement, en plus du reste ;)
Titre: Re : Arduino, qui maitrise?
Posté par: supertotof78 le 29 Septembre 2013, 00:41:18
Voilà! La liste est longue...
On peut communiquer en wifi avec Arduino, il existe des modules au peuvent faire office de radar de recule. On peut se faire un Gmetre...
Titre: Re : Arduino, qui maitrise?
Posté par: STeppenWolf944 le 29 Septembre 2013, 10:06:52
attention a ne pas mettre n'importe quoi dans vos caisses les gars...
surtout qd on touche pas à l'électronique de manière pro  ;)
Titre: Re : Arduino, qui maitrise?
Posté par: gerald le 29 Septembre 2013, 14:11:01
On peut s'en servi en monitoring mais aussi  en recherche de panne .
On peut afficher les données du débitmètre, lambda, t° eau, TPS, etc..
c'est déjà pas mal non ?
Moi j'ai pas encore reçu le mien snif...
recu hier !
petits liens que j'ai trouvé:
http://fr.openclassrooms.com/sciences/cours/arduino-pour-bien-commencer-en-electronique-et-en-programmation (http://fr.openclassrooms.com/sciences/cours/arduino-pour-bien-commencer-en-electronique-et-en-programmation)
http://www.pobot.org/Debuter-avec-une-carte-Arduino.html (http://www.pobot.org/Debuter-avec-une-carte-Arduino.html)
http://www.craslab.org/arduino/LivretArduinoFr06.pdf (http://www.craslab.org/arduino/LivretArduinoFr06.pdf)

Voili voila
Titre: Re : Arduino, qui maitrise?
Posté par: Nelson le 23 Octobre 2013, 21:21:24
trop d'info noie l'info :)

 j'aimerai savoir s'il est possible de contrôler les pixels d'un afficheur LCD (du genre 16x2) sans avoir a déclarer un caractère ?
Titre: Re : Arduino, qui maitrise?
Posté par: gerald le 27 Novembre 2013, 12:36:09
il me semble j'ai vu des librairy pour faire des jauges:
sur http://arduino.cc/playground/Code/LcdBarGraph (http://arduino.cc/playground/Code/LcdBarGraph)

et un tuto qui peut t'interesser:
http://tutoarduino.com/progressbar-arduino (http://tutoarduino.com/progressbar-arduino)

pixel par pixel j'ai pas creusé. sorry
Titre: Re : Arduino, qui maitrise?
Posté par: gerald le 27 Novembre 2013, 12:37:51
j'ai trouvé ça:
http://learn.adafruit.com/character-lcds/character-vs-graphical-lcds (http://learn.adafruit.com/character-lcds/character-vs-graphical-lcds)
Titre: Re : Arduino, qui maitrise?
Posté par: gerald le 27 Novembre 2013, 12:54:54
De mon coté voici mes maigres avancées:
il me reste les diviseurs de tension à construire et faire les essais.

PS: ne regardez pas les soudures même moi j'ai honte....
Titre: Re : Arduino, qui maitrise?
Posté par: Teddy de Montréal le 27 Novembre 2013, 13:47:34
C'est vachement intéressant ce petit sujet, je suis avec attention... :merci:
Titre: Re : Arduino, qui maitrise?
Posté par: gerald le 27 Novembre 2013, 15:50:12
Bon je me suis compliqué la vie pour rien car en fait les capteur sont tous en 5V !!  :merci:

Après m'être flagellé avec des orties fraiches j'ai souder directement toutes les entrées qui m'intéressaient et....

- la tension du débitmètre fonctionne. Donc avec une formule tenue secrète par les druides, je pourrait sortie une tension corrigée d'un AFM à fil chaud par exemple...
- le signal du TPS est bon. l'écran m'indique si je suis au ralenti, croisière ou à fond.
- la temperature d'eau du moteur : il me reste à retrouver la correspondance entre voltage est température de notre capteur et voilà !
- la sonde lambda: bof. Je me suis pas trop attardé dessus pour l'instant.

J'attend un boitier pour faire un montage plus propre et je cherche un débitmètre à fil chaud pour faire mes mesures et en déduire une formule.
Titre: Re : Arduino, qui maitrise?
Posté par: Teddy de Montréal le 27 Novembre 2013, 15:56:54
Dites, c'est hors-sujet, mais je vous vois  bidouiller votre Arduino, là...le Rapsberry Pi, ça serait pas plus simple à gérer?
Titre: Re : Arduino, qui maitrise?
Posté par: gerald le 27 Novembre 2013, 17:41:30
Si tu le dis....
comment tu rentres une valeur de tension ou de résistance dans le Rapsberry ?

Spécifications
Modèle A
Processeur : ARM1176JZF-S (ARMv6) 700MHz Broadcom 28351(dispose d'un décodeur Broadcam VideoCore IV, permettant le décodage H.264 FullHD 1080P et d'un VFPv2 pour le calcul des opérations à virgule) ;
RAM : 256 Mo ;
2 Sorties vidéo : Composite et HDMI ;
1 Sortie audio stéréo Jack 3 5 mm (sortie son 5.1 sur la prise HDMI) ;
Unité de lecture-écriture de carte mémoire : SDHC / MMC / SDIO ;
1 Port USB 2.0 ;
Prise pour alimentation Micro-USB (consommation : 400mA + périphériques) ;
des entrées / sorties supplémentaires devraient être accessibles directement sur la carte mère via des pins 3v3 (à confirmer : GPIO, S2C, SPI)[réf. nécessaire] ;
API logicielle vidéo : OpenGL : version embarquée OpenGL ES 2.0 ;
Décodage vidéo : 1080p30 H.264 high-profile.
Titre: Re : Arduino, qui maitrise?
Posté par: STeppenWolf944 le 27 Novembre 2013, 20:39:11
c'est un micro PC.... rien a voir avec un module arduino  ;)
Titre: Re : Arduino, qui maitrise?
Posté par: supertotof78 le 28 Novembre 2013, 21:49:00
Pour la température d'eau, tu relevés les valeurs de déclenchement et d'arrêt des ventilos. Ça fait déjà une base. Le soucis, c'est que les sondes resistive n'ont pas de signal linéaire.
Titre: Re : Arduino, qui maitrise?
Posté par: Victor le 29 Novembre 2013, 11:32:22
Ou tu plonges la sonde dans une casserole d'eau froide que tu fais chauffer, avec un thermomètre de cuisson (pour la viande) à côté comme référence. Et tu relèves les valeurs de tension au fur et à mesure que l'eau chauffe.
Titre: Re : Arduino, qui maitrise?
Posté par: Nelson le 29 Novembre 2013, 13:57:50
j'ai procédé comme ça avec deux multimetres
par contre c'est difficile d'extrapolé en negatif et au dela de 100°

l'ideal est quand meme d'avoir la courbe du fournisseur

j'ai trouvé un fichier sur les VDO, mais je n'ai pas retrouvé mes sondes dedans, je n'ai depuis pas creusé davantage pour savoir s'il y a des correspondance de ref.

au passage j'ai mesuré deux sondes VDO, une pour l'huile moteur de ma 205 (sonde after market) et une d'origine d'une Audi
les deux courbes sont TRES differentes, elles ne peuvent pas etre montés sur le meme afficheur .... ou alors il y a une subtilité qui m'a échappé
Titre: Re : Arduino, qui maitrise?
Posté par: PGombeer le 29 Novembre 2013, 14:31:47
Pour les sondes, je cite mon propre message de l'autre topic:
Ce qui marche vraiment bien, ce sont les sondes de température digitales 1-Wire, telles que la DS18B20 par exemple. L'avantage, c'est que tu peux installer plusieurs sondes sur le même bus qui n'utilise qu'un seul fil (d'où le nom 1-Wire, aussi appelé bus Dallas). Je les utilise dans un de mes projets. Ces sondes digitales sont aussi programmables (cf. datasheet [url]http://www.maximintegrated.com/datasheet/index.mvp/id/2812[/url] ([url]http://www.maximintegrated.com/datasheet/index.mvp/id/2812[/url])).

On les trouves packagées et prêtes à l'emploi pour quelques euros sur eBay.
[url]http://www.befr.ebay.be/itm/DS18B20-Dallas-1-Wire-Digital-Thermometer-Etanche-Waterproof-/161101360600[/url] ([url]http://www.befr.ebay.be/itm/DS18B20-Dallas-1-Wire-Digital-Thermometer-Etanche-Waterproof-/161101360600[/url])

Il existe plein d'exemples d'intégration avec Arduino sur Internet.

Titre: Re : Arduino, qui maitrise?
Posté par: Nelson le 29 Novembre 2013, 14:42:10
c'est l'enfer pour trouver un visuel de ces sondes  :shock:

edit :

voila le pdf que j'avais trouvé http://www.ljf-design.com/westfield/vdo_temp_sensors.pdf (http://www.ljf-design.com/westfield/vdo_temp_sensors.pdf)
Titre: Re : Arduino, qui maitrise?
Posté par: gerald le 29 Novembre 2013, 22:51:55
J'ai trouvé ça:
il me reste plus qu'a démarrer puis de faire plusieurs relevé au fur et à mesure qu'elle chauffe, Tension VS Resistance afin d'en déduire une fonction. ( logarithmique je pense).
Titre: Re : Re : Arduino, qui maitrise?
Posté par: gerald le 30 Novembre 2013, 10:58:46
J'ai trouvé ça:
il me reste plus qu'a démarrer puis de faire plusieurs relevé au fur et à mesure qu'elle chauffe, Tension VS Resistance afin d'en déduire une fonction. ( logarithmique je pense).
ca à l'air linéaire en fait !