Soupraa
Banned
Messages : 104
Sujets : 3
Inscription : Sep 2016
Réputation :
1
salut a tous
je partage mon code C pour arduino, pour afficher les temperatures ECT et IAT
Apres 2 mois de taff il est precis et fonctionne tres bien et sera modifier pour ajouté d'autres infos
![[Image: 497626photo3.jpg]](http://img4.hostingpics.net/pics/497626photo3.jpg)
sous crome pour voir la difference
[/url]
[url=http://www.hostingpics.net/viewer.php?id=723034photo2.jpg]
![[Image: 723034photo2.jpg]](http://img4.hostingpics.net/pics/723034photo2.jpg)
Code : //Brancher directement vos sondes analog sur vos entrees analog d'arduino
//
//
//modifier coeff yolo pour votre precision
#include <math.h>
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
// If using software SPI (the default case):
#define OLED_MOSI 9
#define OLED_CLK 10
#define OLED_DC 11
#define OLED_CS 12
#define OLED_RESET 13
Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
/* Uncomment this block to use hardware SPI
#define OLED_DC 6
#define OLED_CS 7
#define OLED_RESET 8
Adafruit_SSD1306 display(OLED_DC, OLED_RESET, OLED_CS);
*/
//#define NUMFLAKES 10
//#define XPOS 0
//#define YPOS 1
//#define DELTAY 2
//_________________________________________________________________________//
double Rref = 2200.0; //Résistance de référence à 25°C
double V_IN = 5.0; //Alimentation électrique
//Information de la thermistance
double A_1 = 3.354016E-3;
double B_1 = 2.569850E-4;
double C_1 = 2.620131E-6;
double D_1 = 6.383091E-8;
double SteinhartHart(double R){
//Division de l'équation en 4 parties. La premiere est
//uniquement A1
double equationB1 = B_1 * log(R/Rref);
double equationC1 = C_1 * pow(log(R/Rref), 2);
double equationD1 = D_1 * pow(log(R/Rref), 3);
double equation = A_1 + equationB1 + equationC1 + equationD1;
return pow(equation, -1); }
//_______________________________________________________________________//
void setup(){
Serial.begin(9600);
display.begin(SSD1306_SWITCHCAPVCC);
display.clearDisplay();
display.display();
delay(500);
//display.drawBitmap(0, 0, honda, 48, 48, WHITE);
//delay(1000);
//Clear the buffer.
display.clearDisplay();
}
//_______________________________________________________________________//
void loop() {
double ECT = analogRead(A1); //ENGINE COOLANT TEMPERATURE // Calcul de la tension sur la borne analogique
double V = (ECT / 1024) * V_IN;
double Rth = (Rref * V )/(V_IN - V); //Calcul de la résistance de la thermistance
//Serial.print("Rth = ");
//Serial.print(Rth);
double kelvin = SteinhartHart(Rth); //Calcul de la température en kelvin( Steinhart and Hart)
double celsius = kelvin - 273.15+4; //Conversion en celsius (+4 COEFF YOLO A MODIFIER SELON LA SONDE)
//Serial.print("Ohm - T = ");
//_________________________________________//
double IAT = analogRead(A2); // INTAKE AIR TEMPERATURE
double VA = IAT / 1024 * V_IN;
double RthA = (Rref * VA ) / (V_IN - VA);
double kelvinA = SteinhartHart(RthA);
double celsiusA = kelvinA - 273.15+3.5; // +3.5 COEFF YOLO
//____________________________________________________________________________//
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.print("ECT:");display.print(celsius);
display.setTextSize(1);
display.println("\xf7""c");
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0,16);
display.print("IAT:");display.print(celsiusA);
display.setTextSize(1);
display.println("\xf7""c");
//_____________________________________________________________________________//
display.display();
delay(500);
display.clearDisplay();
}
Modification du message : 10-02-2017, 00:52:17 par Soupraa.
fujiwara
Dura lex sed lex
1 moteur 4 roues(motrice)
17 - Charente-Maritime France
Messages : 6 285
Sujets : 35
Inscription : Dec 2007
Réputation :
10
C'est super gentil ça, je jetterai un œil demain.
=>Je NE donne PAS d'aide technique ou mécanique en message privé ou MP!!!<=
![[Image: %7B2586A611-2CD6-6132-C5BF-B2E5AC565516%7D_2.png]](http://frais-mobilite.com/badges/%7B2586A611-2CD6-6132-C5BF-B2E5AC565516%7D_2.png)
folken
Posting Freak
    
- France
Messages : 14 061
Sujets : 22
Inscription : Jan 2005
Réputation :
3
Tu utilises quoi comme sonde ?
Soupraa
Banned
Messages : 104
Sujets : 3
Inscription : Sep 2016
Réputation :
1
Les sondes d'origines
----------
(18-09-2016, 00:29:35)fujiwara a écrit : C'est super gentil ça, je jetterai un œil demain.
Merci c'est cool,
plus nous sommes a l'utiliser plus nous serons a le modifié
avoir les coeff est tres difficiles, j'en ai pris 4 qui ce rapproches de nos sondes oem. mais si quelqu'un les coeef exactes, je prends.
les coeff a1 b1 c1 d1 viennent d'une sonde ntc 1,8k
Modification du message : 18-09-2016, 00:46:56 par Soupraa.
folken
Posting Freak
    
- France
Messages : 14 061
Sujets : 22
Inscription : Jan 2005
Réputation :
3
Ca veut dire que ton ecu n'a plus l'info ?
Ou tu as ajouté d'autres sondes que tu avais d'un autre bloc pour les relier à l'arduino ?
Soupraa
Banned
Messages : 104
Sujets : 3
Inscription : Sep 2016
Réputation :
1
ah non je me suis ponté dessus
a l'ecu arrive un fil de signal ECT, IAT, O2 ect.....
j'ai pris la masse du 5volt de l'ecu et le signal, ou je me suis ponté dessus, et j'arrive sur l'arduino.
mais avant cela j'ai mis une résistance entre signal et arduino, pour faire pont diviseur.
----------
comme un voltmetre en gros. le + ECT par exemple et le - 5volt de l'ecu
freelog et crome me donne la meme temperature sauf que mon arduino calcule tte et affiche tte les 500millisecondes
Modification du message : 18-09-2016, 00:56:18 par Soupraa.
folken
Posting Freak
    
- France
Messages : 14 061
Sujets : 22
Inscription : Jan 2005
Réputation :
3
Ok, j'aurais pris une valeur plus élevée que 1.5k mais ça marche aussi si les entrées de l'arduino ont une impédance assez haute.
C'est le "en série" qui m'a induit en erreur, et il est tard donc j'ai pas trop réfléchi.
Pareil que lors de mon message précédent, j'avais cru lire "OneWire" au lieu de Wire
D'ailleurs, petite parenthèse au passage (même si tu n'es pas concerné, mais c'est pour ça que je demandais quel état le type de sonde), pour ceux qui voudraient utiliser des sondes numériques, ça marche bien pour l'ECT, mais pas pour l'IAT, la latence est trop élevée (presque 1 seconde pour récupérer le résultat de la conversion).
Ton choix d'utiliser des sondes analogique était le bon.
Soupraa
Banned
Messages : 104
Sujets : 3
Inscription : Sep 2016
Réputation :
1
super de ta reponse
je ne veux pas rajouter de sonde, utiliser au maximun les sondes oem.
pour les entrées analogiques je sais juste qu'elles ne prennent pas plus de 5volt, je debute dans arduino aussi. tout conseil, critique sera bonne a prendre.
1,5k c'est la résistance, a peu pres, à température ambiante de nos sondes oem.
Modification du message : 18-09-2016, 01:23:49 par Soupraa.
BloodyMurder
Motard Débile
   
Mazda & Ducati
76 - Seine-Maritime France
Messages : 4 685
Sujets : 62
Inscription : Feb 2005
Réputation :
17
Bonjour,
Conformément au règlement de la section Honda, il est nécessaire de rédiger son titre d'une certaine manière pour une meilleure visibilité et faciliter les recherches.
Merci d'utiliser le bouton "Editer" ("Edition complète") en bas de votre 1er message et de modifier le titre de votre sujet.
Pour savoir comment rédiger son titre, regardez le règlement : https://www.japancar.fr/forum/Sujet-Regl...TRE--52275
L'équipe de modération
"Nous avons une resistance à la douleur hors du commun, nous ne sommes pas des footballeurs" © Valentino Rossi
Viking50 a écrit :J'ai coutume de penser que si t'achetes une voiture pour aller sur un parking autant faire du modélisme
Bentrip
Junior Member

Honda Civic ED7 Blanche
30 - Gard France
Messages : 43
Sujets : 8
Inscription : May 2013
Réputation :
0
Excellent, je veux justement me faire un RPI multifonction dans la voiture.. Et l'affichage de la température est une des fonctions que j'envisage!
DAV4WS
Mineur de corde
64 - Pyrénées-Atlantiques France
Messages : 14 598
Sujets : 44
Inscription : May 2010
Réputation :
10
salut contant de te retrouver ici 
cette homme est un extraterrestre de l'électronique il parle avec les machine , il va finir par s'implanter des puces vtec un jour ^^
Soupraa
Banned
Messages : 104
Sujets : 3
Inscription : Sep 2016
Réputation :
1
folken
Posting Freak
    
- France
Messages : 14 061
Sujets : 22
Inscription : Jan 2005
Réputation :
3
Oui, ce n'est pas un pont diviseur que tu as réalisé (et heureusement, parce que sinon tu aurais perturbé ta mesure ... tu comprends maintenant mes questions ? )
L'entrée de l'arduino se comporte (en théorie) comme un fil relié à rien.
On peut y laisser quand même une résistance très élevée (genre 1Mohm) pour être sûr de ne pas avoir de courant de fuite qui passerait par l'entrée analogique de l'arduino, au cas où l'impédance d'entrée ne soit pas aussi élevée que prévue, mais c'est sans doute inutile.
----------
J'ai modifié vite fait ton code à l'arrache, je n'ai rien pour le tester donc je ne sais pas si ça fonctionne:
(edit: et comme un con j'avais laissé le delay c'est corrigé)
Code : //Brancher directement vos sondes analog sur vos entrees analog d'arduino
//
//
//modifier coeff yolo pour votre precision
#include <math.h>
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
// If using software SPI (the default case):
#define OLED_MOSI 9
#define OLED_CLK 10
#define OLED_DC 11
#define OLED_CS 12
#define OLED_RESET 13
Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
/* Uncomment this block to use hardware SPI
#define OLED_DC 6
#define OLED_CS 7
#define OLED_RESET 8
Adafruit_SSD1306 display(OLED_DC, OLED_RESET, OLED_CS);
*/
//#define NUMFLAKES 10
//#define XPOS 0
//#define YPOS 1
//#define DELTAY 2
unsigned long previousMillis = 0; // will store last time DISPLAY was updated
const long delayDisplay = 1000; // interval at which to display (milliseconds)
//_________________________________________________________________________//
double Rref = 2200.0; //Résistance de référence à 25°C
double V_IN = 5.0; //Alimentation électrique
//Information de la thermistance
double A_1 = 3.354016E-3;
double B_1 = 2.569850E-4;
double C_1 = 2.620131E-6;
double D_1 = 6.383091E-8;
double SteinhartHart(double R){
//Division de l'équation en 4 parties. La premiere est
//uniquement A1
double equationB1 = B_1 * log(R/Rref);
double equationC1 = C_1 * pow(log(R/Rref), 2);
double equationD1 = D_1 * pow(log(R/Rref), 3);
double equation = A_1 + equationB1 + equationC1 + equationD1;
return pow(equation, -1); }
//_______________________________________________________________________//
void setup(){
Serial.begin(9600);
display.begin(SSD1306_SWITCHCAPVCC);
display.clearDisplay();
display.display();
delay(500);
//display.drawBitmap(0, 0, honda, 48, 48, WHITE);
//delay(1000);
//Clear the buffer.
display.clearDisplay();
}
//_______________________________________________________________________//
void loop() {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= delayDisplay) {
display.clearDisplay();
previousMillis = currentMillis;
double ECT = analogRead(A1); //ENGINE COOLANT TEMPERATURE // Calcul de la tension sur la borne analogique
double V = (ECT / 1024) * V_IN;
double Rth = (Rref * V )/(V_IN - V); //Calcul de la résistance de la thermistance
//Serial.print("Rth = ");
//Serial.print(Rth);
double kelvin = SteinhartHart(Rth); //Calcul de la température en kelvin( Steinhart and Hart)
double celsius = kelvin - 273.15+4; //Conversion en celsius (+4 COEFF YOLO A MODIFIER SELON LA SONDE)
//Serial.print("Ohm - T = ");
//_________________________________________//
double IAT = analogRead(A2); // INTAKE AIR TEMPERATURE
double VA = IAT / 1024 * V_IN;
double RthA = (Rref * VA ) / (V_IN - VA);
double kelvinA = SteinhartHart(RthA);
double celsiusA = kelvinA - 273.15+3.5; // +3.5 COEFF YOLO
//____________________________________________________________________________//
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.print("ECT:");display.print(celsius);
display.setTextSize(1);
display.println("\xf7""c");
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0,16);
display.print("IAT:");display.print(celsiusA);
display.setTextSize(1);
display.println("\xf7""c");
//_____________________________________________________________________________//
display.display();
}
}
Utiliser millis à la place de delay permet de:
- ne pas occuper le contrôleur pour rien (pendant que le delay s’exécute, tu ne peux rien faire d'autre);
- être sûr que ton affichage sera fait avec un intervalle de 500ms (avec delay, il faut rajouter le temps d'exécution de ta capture et ton affichage à ces 500ms - bien sûr ça ne marche que si ce que tu as à exécuter prend moins de 500ms).
Pour l'instant tu ne verra sans doute pas la différence, ton code semble léger.
Mais si tu commences à rajouter beaucoup de choses, le temps d'exécution pourrait commencer à devenir important comparé aux 500ms de délai, et tu pourrais en avoir besoin.
Et dans l'absolu ça reste plus propre, tu gardes les ressources disponibles au lieu de faire exécuter bêtement une boucle de 500ms qui va paralyser tout ton process à chaque fois que tu rentrera dedans (ce n'est pas une critique, je l'ai aussi utilisé sur un petit projet que j'ai commencé, pour vérifier vite fait que ça marchait mais comme je vais être amené à repenser le code, je compte tout remettre à plat plus tard).
Selon la forme du signal rpm/injecteurs, il pourrait aussi être intéressant d'utiliser les interruptions pour être sûr de ne pas rater un front montant (bon, pas sur les injecteurs ... mais à voir pour les rpm).
Mais ça fait parti des trucs que j'ai dans mes cartons et qu'il faudrait que je finalise ...
Modification du message : 20-09-2016, 01:59:08 par folken.
DAV4WS
Mineur de corde
64 - Pyrénées-Atlantiques France
Messages : 14 598
Sujets : 44
Inscription : May 2010
Réputation :
10
oulà vous m'avez perdu là !
folken je penses qu'avec ces infos il va etre aux anges
Modification du message : 20-09-2016, 08:44:52 par DAV4WS.
Soupraa
Banned
Messages : 104
Sujets : 3
Inscription : Sep 2016
Réputation :
1
AUX ANGES
de la bombe j'ai un pro arduino ici enfin.....
aller je teste ca ce soir
je veux agir sur un BP pour changer l'affichage, il me faut integrer une condition du genre "If"?
----------
remettons tout a plat tkt pas je prends
Mais un grand merci a toi!!!
Modification du message : 20-09-2016, 16:56:45 par Soupraa.
Soupraa
Banned
Messages : 104
Sujets : 3
Inscription : Sep 2016
Réputation :
1
attention sa pique les yeux
MAIS ca marche
Code : ////////UPDATE 02 = RPM AVAIBLE
volatile byte half_revolutions;
unsigned int rpm;
unsigned long timeold;
float vout = 0.0;
float vin = 0.0;
int v=0;
int i =0;
int ect=0;
float R1 =100000 ; // !! resistance of R1 !!
float R2 = 47000; // !! resistance of R2 !!
int volt = 0;
int lambda=0; //
float AFR=0;
int Map=0;
float Psi=0;
float psia=0;
float psig=0;
float vaccum=0;
float mBar=0;
float mV=0;
int ValueTPS=0;
int Tps=0;
float VoltTPS=0;
double V_IN = 5.0; //Alimentation électrique
//Information de la thermistance
double Rref = 10000.0; //Résistance de référence à 25°C
double A_1 = 3.354016E-3;
double B_1 = 2.569850E-4;
double C_1 = 2.620131E-6;
double D_1 = 6.383091E-8;
double SteinhartHart(double R){
//Division de l'équation en 4 parties. La premiere est
//uniquement A1
double equationB1 = B_1 * log(R/Rref);
double equationC1 = C_1 * pow(log(R/Rref), 2);
double equationD1 = D_1 * pow(log(R/Rref), 3);
double equation = A_1 + equationB1 + equationC1 + equationD1;
return pow(equation, -1); }
//Bouton Poussoir
const int bp=5;
boolean vbp=0;
boolean vbpmem=0;
int mode = 0;
//Nombre de mode
int nbrmode=10;
byte data[128] ; // Para guardar las lecturas
byte index = 0 ;
//________________________________________________________________________________//
/* Uncomment this block to use hardware SPI
#define OLED_DC 6
#define OLED_CS 7
#define OLED_RESET 8
Adafruit_SSD1306 display(OLED_DC, OLED_RESET, OLED_CS);
*/
#include <math.h>
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
// If using software SPI (the default case):
#define OLED_MOSI 9
#define OLED_CLK 10
#define OLED_DC 11
#define OLED_CS 12
#define OLED_RESET 13
#define OLED_CS_2 4
#define OLED_RESET_2 3
Adafruit_SSD1306 display1(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
Adafruit_SSD1306 display2(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET_2, OLED_CS_2);
#define honda_HEIGHT 32
#define honda_WIDTH 128
const unsigned char honda [] PROGMEM = {
// bleed logo honda
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xe0, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x0f, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x07, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x00, 0x07, 0xc0, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x40, 0x00, 0x03, 0xe0, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xf8, 0x00, 0x01, 0xf8, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x7e, 0x00, 0x01, 0xfc, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0x80, 0x01, 0xfe, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x07, 0xe0, 0x07, 0xff, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x03, 0xff, 0xfc, 0x7f, 0x81, 0x80, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x9e, 0x00, 0xff, 0xc0, 0x0f, 0xc6, 0x80, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x93, 0x00, 0x3f, 0xc0, 0x00, 0x7a, 0x80, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0xc0, 0x1f, 0xc0, 0x0f, 0x0a, 0x80, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x70, 0x07, 0xe3, 0xe0, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x1e, 0x00, 0x7c, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x03, 0xff, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x01, 0x48, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x01, 0x48, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x01, 0x48, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0xb0, 0x03, 0x48, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0xb0, 0x03, 0xd8, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0xb0, 0x00, 0x58, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x03, 0xb0, 0x00, 0xc0, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0xc0, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x01, 0xc0, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
void setup() {
Serial.begin(9600);
// by default, we'll generate the high voltage from the 3.3v line internally! (neat!)
display1.begin();
display2.begin();
for (int i =0 ; i<128 ; i++) // Ponemso a 0 el array
data[i] = 0 ;
pinMode(bp, INPUT_PULLUP);
attachInterrupt(0, rpm_fun, RISING);
half_revolutions = 0;
rpm = 0;
timeold = 0;
}
void loop ()
{
vbp= digitalRead(bp); //Lecture de l'état du BP
if ((vbp != vbpmem)&&(vbp == LOW)) //si on appuie sur le BP
{
mode++; //On incrémente la variable mode
}
vbpmem=vbp; //on mémorise l'état du bouton
if (mode == nbrmode) //Qd la variable mode vaut nbrmode on la repasse à zéro (ie quand on attend le dernier mode)
{
mode=0;
}
switch (mode) //Application du mode
{
case 0:
display1.clearDisplay();
display2.clearDisplay();
Start();
break;
case 1:
display1.clearDisplay();
display2.clearDisplay();
TempEcIa();
TempExtBatt();
delay(400);
break;
case 2:
display1.clearDisplay();
display2.clearDisplay();
Lambda();
delay(200);
break;
case 3:
display1.clearDisplay();
display2.clearDisplay();
//display2.display();
MAP();
TPS();
delay(200);
break;
case 4:
display1.clearDisplay();
display2.clearDisplay();
display2.display();
Rpm();
///////////
break;
case 5:
display1.clearDisplay();
display2.clearDisplay();
//display2.display();
graphbatt();
graphbattlinea();
//graphect();
////////////////
break;
case 6:
display1.clearDisplay();
display2.clearDisplay();
display2.display();
graphect();
///////////////////
break;
case 7:
display1.clearDisplay();
display2.clearDisplay();
display2.display();
graphiat();
///////////////////
break;
case 8:
display1.clearDisplay();
display2.clearDisplay();
graphVo2();
grapho2linea();
break;
}
}
void Start()
{
display1.drawBitmap(0, 0, honda, 128, 32, 1);
display2.drawBitmap(0, 0, honda, 128, 32, 1);
display1.display();
display2.display();
}
void TempEcIa() // Engine coolant Temp sensor (A0)
{ // Intake Air Temp sensor (A1)
double ECT = analogRead(A0); //ENGINE COOLANT TEMPERATURE // Calcul de la tension sur la borne analogique
double V = (ECT / 1024) * V_IN;
double Rth = (Rref * V )/(V_IN - V); //Calcul de la résistance de la thermistance
//Serial.print("Rth = ");
//Serial.print(Rth);
double kelvin = SteinhartHart(Rth);//Calcul de la température en kelvin( Steinhart and Hart)
double celsius = kelvin - 273.15+8; //Conversion en celsius (+8 coeff yolo)
//Serial.print("Ohm - T = ");
double IATb = analogRead(A1); // INTAKE AIR TEMPERATURE
double VAb = IATb / 1024 * V_IN;
double RthAb = (Rref * VAb ) / (V_IN - VAb);
double kelvinAb = SteinhartHart(RthAb);
double celsiusAb = kelvinAb - 273.15+6.5;
display1.setTextSize(2);
display1.setTextColor(WHITE);
display1.setCursor(0,0);
display1.print("ECT:");display1.print(celsius);
display1.setTextSize(1);
display1.println("\xf7""c");
display1.setTextSize(2);
display1.setTextColor(WHITE);
display1.setCursor(0,16);
display1.print("IAT:");display1.print(celsiusAb);
display1.setTextSize(1);
display1.println("\xf7""c");
display1.display();
}
void TempExtBatt() // Outdoor Temperature IAT sensor or another (A2)
{ // Battery Voltage (A3)
display1.clearDisplay();
double IAT = analogRead(A2);
double VA = IAT / 1024 * V_IN;
double RthA = (Rref * VA ) / (V_IN - VA);
double kelvinA = SteinhartHart(RthA);
double celsiusA = kelvinA - 273.15+6.5;
volt = analogRead(A3);
vout = (volt * 5.0) / 1024.0;
vin = vout / (R2/(R1+R2)); // Calcul pont diviseur
display2.setTextColor(WHITE);
display2.setCursor(0,0);
display2.setTextSize(2);
display2.print("T");
display2.setCursor(9,7);
display2.setTextSize(1);
display2.print("ext");
display2.setTextSize(2);
display2.setCursor(27,1);
display2.print(":");
display2.setCursor(39,1);
display2.print(celsiusA);
display2.setTextSize(1);
display2.println("\xf7""c");
display2.setTextColor(WHITE);
display2.setTextSize(2);
display2.setCursor(0,16);
display2.print("V");
display2.setTextSize(1);
display2.setCursor(13,23);
display2.print("batt");
display2.setTextSize(2);
display2.setCursor(37,16);
display2.print(":");
display2.setTextSize(2);
display2.setCursor(49,16);
display2.print(vin);
display2.setTextSize(1);
//display2.setCursor(110,23);
display2.println("V");
display2.display();
}
void Lambda() //o2Sensor narrow band, 1Volt o2signal (A4)
{
if (half_revolutions >= 24) {
//Update RPM every 20 counts, increase this for better RPM resolution,
//decrease for faster update
rpm = 30*100/(millis() - timeold)*half_revolutions;
timeold = millis();
half_revolutions = 0;
}
//analogReference(INTERNAL1V1);
lambda = analogRead(A4);
mV=lambda*4.88;
AFR = (lambda-0)*(11.78-17.66)/(1023-0)+17.7 ;
display2.setTextSize(2);
display2.setTextColor(WHITE);
display2.setCursor(0,0);
display2.print("\xE5:");display2.println(AFR);
display2.setTextSize(2);
display2.setTextColor(WHITE);
display2.setCursor(0,16);
display2.print("Rpm:");display2.println(rpm, DEC);
display2.display();
display2.clearDisplay();
display1.clearDisplay();
display1.setTextSize(2);
display1.setTextColor(WHITE);
display1.setCursor(0,0);
display1.print("\xE5:");display1.println(lambda);
display1.setTextSize(2);
display1.setTextColor(WHITE);
display1.setCursor(0,16);
display1.print("V:");display1.print(mV);
display1.setTextSize(1);
display1.println("mV");
display1.display();
}
void MAP() //Manifold Absolute Pressure sensor (A5)
{
Map = analogRead(A5);
Psi = (Map-.32)*(10.94-(-13.9))/(1023+ (-13.9));
psig = Psi-14.7;
vaccum = psig*2.036021;
mBar = psig * 0.0689475729; // Convert from psi to bar
//Psi = ((((float)Map/(float)1023+0.04)/0.004)*0.145)-10.15;
//(Map-0.5)*(1023-167.77)/(4.5-0.5)+167.77;
//psia = (Psi-167.77)*(10.6-0.01)/(1023-167.77)+0.01;
//((Map * (0.005) /(0.022)+20)*(0.145)-10.15);
//display2.clearDisplay();
display1.setTextSize(2);
display1.setTextColor(WHITE);
display1.setCursor(0,0);
display1.print("Psi:");display1.print(psig);
//display2.setTextSize(1);
//display2.println("b");
display1.setTextSize(2);
display1.setTextColor(WHITE);
display1.setCursor(0,16);
display1.print("Vac:");display1.print(vaccum);
//display2.setTextSize(1);
//display2.println("");
display1.display();
//display2.clearDisplay();
}
void TPS() // TPS= Throttle Position Switch (A6)
{ display1.clearDisplay();
int ValueTPS = analogRead(A6);
float VoltTPS=(ValueTPS*5.0)/1024.0;
int Tps = map(ValueTPS,0,1023,-18,103)+5;
display2.setTextSize(2);
display2.setCursor(0,0);
display2.print("TPS:");display2.print(Tps);
display2.setTextSize(1);
display2.println("%");
display2.setTextSize(2);
display2.setCursor(0,16);
display2.print("V");
display2.setTextSize(1);
display2.setCursor(13,23);
display2.print("TPS");
display2.setTextSize(2);
display2.setCursor(37,16);
display2.print(":");
display2.setTextSize(2);
display2.setCursor(49,16);
display2.print(VoltTPS);
display2.setTextSize(1);
//display2.setCursor(110,23);
display2.println("V");
display2.display();
}
void rpm_fun()
{
half_revolutions++;
//Each rotation, this interrupt function is run twice
}
void Rpm()
{
//display2.clearDisplay();
// display1.display();
if (half_revolutions >= 24) {
//Update RPM every 20 counts, increase this for better RPM resolution,
//decrease for faster update
rpm = 30*100/(millis() - timeold)*half_revolutions;
timeold = millis();
half_revolutions = 0;
//Serial.println(rpm,DEC);
}
display1.setTextSize(2);
display1.setTextColor(WHITE);
display1.setCursor(0,0);
display1.print("Rpm:");display1.println(rpm, DEC);
//draw the bar graph
display1.fillRect(rpm/100, 25, 128 - rpm/100, 6, BLACK);
display1.fillRect(0, 25, rpm/100, 6, WHITE);
for (i = 1; i < 13; i++)
{
display1.fillRect(i * 10, 25, 2, 6, BLACK);
}
display1.display();
//display1.clearDisplay();
delay(100);
}
void graphbatt()
{
display2.clearDisplay();
volt = analogRead(A3);
vout = (volt * 5.0) / 1024.0;
vin = vout / (R2/(R1+R2));
v = volt / 7.99;
display1.setTextSize(1);
// note set the background color or the old text will still display
display1.setTextColor(WHITE, BLACK);
display1.setCursor(17, 0);
display1.println("BATTERY VOLTAGE");
//display1.println(Format(v * 7.99 / 204.6, 0, 3));
display1.setCursor(43, 12);
display1.print(vin);display1.println("V");
//draw the bar graph
display1.fillRect(v, 25, 128 - v, 6, BLACK);
display1.fillRect(0, 25, v, 6, WHITE);
for (i = 1; i < 13; i++)
{
display1.fillRect(i * 10, 25, 2, 6, BLACK);
}
display1.display();
}
void grapho2linea()
{
display1.clearDisplay();
display2.clearDisplay();
index = index % 128 ;
data[index] = 16 * analogRead(A4)/(128) ;// (128) resolution
index++ ;
lambda = analogRead(A4);
int AFR = (lambda * 4.88);
byte i = index ;
for (byte x = 0 ; x<128 ; x++)
{
i = i % 128 ;
//display2.drawPixel( x, data[i++], 1);
display2.drawLine(x, data[i], x-1, data[i-1], 1);
i++ ;
}
display2.setTextSize(1);
display2.setTextColor(WHITE);
display2.setCursor(12,25);
display2.print("O2 Sensor:");display2.print(AFR);
display2.print(" mV");
display2.display();
delay(10);
}
void graphVo2()
{
display2.clearDisplay();
volt = analogRead(A4);
vout =volt*4.88; //(volt * 5.0) / 1024.0;
//vin = vout / (R2/(R1+R2));
v = volt / 1.59; //1.99= (1023/4)/128
display1.setTextSize(1);
display1.setTextColor(WHITE, BLACK);// note set the background color or the old text will still display
display1.setCursor(13, 0);
display1.println("O2 SENSOR VOLTAGE");
//display1.println(Format(v * 7.99 / 204.6, 0, 3));
display1.setCursor(35, 12);
display1.print(vout);display1.println(" mV");
//draw the bar graph
display1.fillRect(v, 25, 128 - v, 6, BLACK);
display1.fillRect(0, 25, v, 6, WHITE);
for (i = 1; i < 13; i++)
{
display1.fillRect(i * 10, 25, 2, 6, BLACK);
}
display1.display();
}
void graphbattlinea()
{
display1.clearDisplay();
display2.clearDisplay();
index = index % 128 ;
data[index] = 16 * analogRead(A3)/(1024) ;
index++ ;
volt = analogRead(A3);
vout = (volt * 5.0) / 1024.0;
vin = vout / (R2/(R1+R2));
v = volt / 7.99;
byte i = index ;
for (byte x = 0 ; x<128 ; x++)
{
i = i % 128 ;
display2.drawPixel( x, data[i++], 1);
//display2.drawLine(x, data[i], x-1, data[i-1], 1);
//i++ ;
}
display2.setTextSize(1);
display2.setTextColor(WHITE);
display2.setCursor(5,23);
display2.print("Batt Voltage:");display2.print(vin);
display2.print("V");
display2.display();
delay(10);
}
void graphect()
{
display2.clearDisplay();
double ECT = analogRead(A0); //ENGINE COOLANT TEMPERATURE // Calcul de la tension sur la borne analogique
v= ECT/3.99;
double V = (ECT / 1024) * V_IN;
double Rth = (Rref * V )/(V_IN - V); //Calcul de la résistance de la thermistance
//Serial.print("Rth = ");
//Serial.print(Rth);
double kelvin = SteinhartHart(Rth);//Calcul de la température en kelvin( Steinhart and Hart)
double celsius = kelvin - 273.15+8; //Conversion en celsius (+8 coeff yolo)
//Serial.print("Ohm - T = ");
display1.setTextSize(1);
// note set the background color or the old text will still display
display1.setTextColor(WHITE, BLACK);
display1.setCursor(6, 0);
display1.println("ENGINE COOLANT TEMP");
//display1.println(Format(v * 7.99 / 204.6, 0, 3));
display1.setCursor(35, 12);
display1.print(celsius);display1.println("\xf7""C");
//draw the bar graph
display1.fillRect(v, 25, v, 6, BLACK); //pour tension display1.fillRect(0, 25, 128-v , 6, WHITE)
display1.fillRect(0, 25, 128-v , 6, WHITE); // display1.fillRect(0, 25, v , 6, WHITE)
for (i = 1; i < 13; i++)
{
display1.fillRect(i * 10, 25, 2, 6, BLACK);
}
display1.display();
}
void graphectlinea()
{
}
void graphiat()
{
display2.clearDisplay();
double IATb = analogRead(A1); //calcul de la tension sur la borne analogique
v= IATb/3.99;
double V = (IATb / 1024) * V_IN;
double Rth = (Rref * V )/(V_IN - V); //Calcul de la résistance de la thermistance
//Serial.print("Rth = ");
//Serial.print(Rth);
double kelvin = SteinhartHart(Rth);//Calcul de la température en kelvin( Steinhart and Hart)
double celsius = kelvin - 273.15+8; //Conversion en celsius (+8 coeff yolo)
//Serial.print("Ohm - T = ");
display1.setTextSize(1);
// note set the background color or the old text will still display
display1.setTextColor(WHITE, BLACK);
display1.setCursor(17, 0);
display1.println("INTAKE AIR TEMP");
//display1.println(Format(v * 7.99 / 204.6, 0, 3));
display1.setCursor(35, 12);
display1.print(celsius);display1.println("\xf7""C");
//draw the bar graph
display1.fillRect(v, 25, v, 6, BLACK); //TEMP//// pour TENSION ecrire display1.fillRect(0, 25, 128-v , 6, WHITE)
display1.fillRect(0, 25, 128-v , 6, WHITE); // display1.fillRect(0, 25, v , 6, WHITE)
for (i = 1; i < 13; i++)
{
display1.fillRect(i * 10, 25, 2, 6, BLACK);
}
display1.display();
}
void graphiatlinea()
{
}
void graphmap()
{
display2.clearDisplay();
Map = analogRead(A5);
Psi = (Map-.32)*(10.94-(-13.9))/(1023+ (-13.9));
psig = Psi-14.7;
//(Map-0.5)*(1023-167.77)/(4.5-0.5)+167.77;
//psia = (Psi-167.77)*(10.6-0.01)/(1023-167.77)+0.01;
//Psi = ((((float)Map/(float)1023+0.04)/0.004)*0.145)-10.15;
//((Map * (0.005) /(0.022)+20)*(0.145)-10.15); // Calculate psi from raw value
v=Map/7.99;
display1.setTextSize(1);
display1.setTextColor(WHITE);
display1.setCursor(2, 0);
display1.println("Manifold Absolute Pressure");
//display1.println(Format(v * 7.99 / 204.6, 0, 3));
display1.setCursor(43, 12);
display1.print(psig);display1.println("");
//draw the bar graph
display1.fillRect(v, 25, 128 - v, 6, BLACK);
display1.fillRect(0, 25, v, 6, WHITE);
for (i = 1; i < 13; i++)
{
display1.fillRect(i * 10, 25, 2, 6, BLACK);
}
display1.display();
//display2.clearDisplay();
display2.setTextSize(2);
display2.setTextColor(WHITE);
display2.setCursor(0,0);
display2.print("Psi:");display2.print(Psi);
display2.setTextSize(1);
display2.println("b");
}
void testscrolltext(void) {
display1.setTextSize(2);
display1.setTextColor(WHITE);
display1.setCursor(10,0);
display1.clearDisplay();
display1.drawBitmap(0, 0, honda, 128, 64, 1);
display1.display();
display1.startscrollright(0x00, 0x0F);
delay(2000);
display1.stopscroll();
delay(1000);
display1.startscrollleft(0x00, 0x0F);
delay(2000);
display1.stopscroll();
delay(1000);
display1.startscrolldiagright(0x00, 0x07);
delay(2000);
display1.startscrolldiagleft(0x00, 0x07);
delay(2000);
display1.stopscroll();
}
/*if (AFR > 1000) //&& AFR < 1000)
{display1.clearDisplay();
display1.setTextSize(2);
display1.setTextColor(WHITE);
display1.setCursor(0,0);
display1.print("\xE5:");display1.print("Rich");
}
if (AFR > 945 && AFR <= 1000)
{display1.clearDisplay();
display1.setTextSize(2);
display1.setTextColor(WHITE);
display1.setCursor(0,0);
display1.print("\xE5:");display1.print("12");
}
if (AFR > 900 && AFR <= 945)
{display1.clearDisplay();
display1.setTextSize(2);
display1.setTextColor(WHITE);
display1.setCursor(0,0);
display1.print("\xE5:");display1.print("12.5");
}
if (AFR > 855 && AFR <= 900)
{display1.clearDisplay();
display1.setTextSize(2);
display1.setTextColor(WHITE);
display1.setCursor(0,0);
display1.print("\xE5:");display1.print("13.2");
}
if (AFR > 810 && AFR <= 855)
{display1.clearDisplay();
display1.setTextSize(2);
display1.setTextColor(WHITE);
display1.setCursor(0,0);
display1.print("\xE5:");display1.print("13.8");
}
if (AFR > 540 && AFR <= 810)
{display1.clearDisplay();
display1.setTextSize(2);
display1.setTextColor(WHITE);
display1.setCursor(0,0);
display1.print("\xE5:");display1.print("14.3");
}
if (AFR > 225 && AFR <= 540)
{display1.clearDisplay();
display1.setTextSize(2);
display1.setTextColor(WHITE);
display1.setCursor(0,0);
display1.print("\xE5:");display1.print("14.4");
}
if (AFR > 180 && AFR <= 225)
{display1.clearDisplay();
display1.setTextSize(2);
display1.setTextColor(WHITE);
display1.setCursor(0,0);
display1.print("\xE5:");display1.print("14.7");
}
if (AFR > 135 && AFR <= 180)
{display1.clearDisplay();
display1.setTextSize(2);
display1.setTextColor(WHITE);
display1.setCursor(0,0);
display1.print("\xE5:");display1.print("14.9");
}
if (AFR > 45 && AFR <= 135)
{display1.clearDisplay();
display1.setTextSize(2);
display1.setTextColor(WHITE);
display1.setCursor(0,0);
display1.print("\xE5:");display1.print("15");
}
if (AFR <45)
{display1.clearDisplay();
display1.setTextSize(2);
display1.setTextColor(WHITE);
display1.setCursor(0,0);
display1.print("\xE5:");display1.print("Learn");
}*/
Modification du message : 27-01-2017, 21:53:32 par Soupraa.
supertotof78
Active Member
  
Subaru Impreza GT
41 - Loir-et-Cher France
Messages : 294
Sujets : 24
Inscription : Mar 2004
Réputation :
0
Salut.
Je m'étais fait aussi un afficheur sur la Legacy. Il permettait de voir T° et P d'huile (sondes ajoutées), rpm (signal repiqué sur compteur) pour intégrer des alarmes, shiftlight, boost, T° eau etc...
J'avais intégré l'afficheur dans le bloc compte tour.
Le plus dur a été le communication avec l'ECU...
Avant de mettre en stand by le projet (rip Legacy), j'avais commencé à travailler sur un affichage type LCD. C'était prometteur (juste galère pour gérer la memoire déportée sur carte SD pour ne pas alourdir le programme).
Impreza GT de 99 light: en cours de remise en route
Legacy Turbo: RIP et merci de m'avoir fait découvrir cet univers.
Mon daily: Chevrolet Trailblazer 2002. 6L 4.2 et 270ch: Va bien pour tracter le plateau.
Porsche 944 2.5 8s 163ch de 1985 (pas celle de l'avatar...)
boyou2
Heavy Foot Castratore
Shetland Tricouille
- France
Messages : 29 419
Sujets : 148
Inscription : Nov 2005
Réputation :
58
interessant ton partage, ça fait super plaisir
L'écrit est trompeur, on a l'impression parfois que l'autre est sec dans la réponse, parce que la tonalité avec lesquelles les choses sont pensées et qui ressortiraient à l'oral n'apparaissent pas à l'écrit...
Un forum est un endroit d'entraide, ce qui veut dire échange d'idées, d'experiences personnelles et professionnelles. Pas un site ou l'on vient prendre ce qu'on pense acquis de droit. Ca c'est quand on paie un garage pour réparer sa voiture. Si vous ne comprenez pas ce principe simple, vous n'avez rien à faire sur ce forum.
Soupraa
Banned
Messages : 104
Sujets : 3
Inscription : Sep 2016
Réputation :
1
rodi
Active Member
  
Messages : 956
Sujets : 104
Inscription : Oct 2002
Réputation :
0
suis entrain d'apprendre les base (avec le livre"le grands livre arduino")
pour le moment sans acht de materiel,je me suis fais un schemas de prise de temperature.
ds l'exemple c'est juste une sonde tmp36.
https://circuits.io/circuits/2819956-the...t/edit#bom
le code est leger mais sa fonctionne bien
pas contre en automobilesais pas quoi utiliser comme sondes
ds18b20( temp max125degres programme pas compliquer)
ou ctn
de meme pour la pression huile.
surtout ou les trouver avec la datasheet,et vissable dans les plaque sandwich etc...
avais trouvé sur conrad ctn
http://www.conrad.fr/ce/fr/product/18810...view1&rb=1
l'adapteur pour durites de liquide refroidissement ( m10)
.de meme j'avais fait équation de stein.....hart
http://www.thinksrs.com/downloads/progra...ulator.htm
Modification du message : 31-01-2017, 15:35:40 par rodi.
vtecman34
Posting Freak
    
1993 EG4.6 /1983 colt
34 - Hérault France
Messages : 6 048
Sujets : 24
Inscription : Dec 2007
Réputation :
25
Pour recuperer le signal rpm tu A essayer juste derriere le compteur ?
DAV4WS
Mineur de corde
64 - Pyrénées-Atlantiques France
Messages : 14 598
Sujets : 44
Inscription : May 2010
Réputation :
10
bravo comme dit ailleur tu peux etre contant de ton travail ! c'est beau !
pour le signal RPM il est donné par la boite de vitesse au compteur et sur d'autre modèle peut etre pris sur le 3eme fils de la bobine d'allumage ( ce donc on avait parlé une fois au nakama)
Soupraa
Banned
Messages : 104
Sujets : 3
Inscription : Sep 2016
Réputation :
1
![[Image: 720082IMG5736.jpg]](http://img11.hostingpics.net/pics/720082IMG5736.jpg)
----------
(10-02-2017, 00:44:15)Soupraa a écrit : ![[Image: 720082IMG5736.jpg]](http://img11.hostingpics.net/pics/720082IMG5736.jpg)
selon le work shop le signal rpm vient de crank sensor, qui es dans l'allumeur
pour utiliser les signaux au compeur faut un oscillo, puisque les signaux sont des pulsation de 0 a 12volts,
je prefere utilisé le capteur crank qui est un effet hall simplement
pour les sondes oui j'ai utiliser le meme site pour les coeff.
le meiux sontt des sondes numeriques ou sinon a calibrer soi meme si analog
Modification du message : 10-02-2017, 01:02:23 par Soupraa.
DAV4WS
Mineur de corde
64 - Pyrénées-Atlantiques France
Messages : 14 598
Sujets : 44
Inscription : May 2010
Réputation :
10
super me suis renseigné sur les sonde O2 AFR d'origine et large bande , la seule différence apparemment ce sont les plages sir lesquels ils arrivent a capter la richesse ,
tu avais raison pour de l'atmo une d'origine devrait le faire car elle capte si je ne dit pas de bêtise de 13 à 16 AFR
j'ai libéré mon ostrich , au nakama donc on pourra faire ce que tu sais biz
----------
je risque de te demander des écrans comme ça avec info ECT , IAT ect... pour mes reprogs c'est top
Modification du message : 12-02-2017, 12:08:26 par DAV4WS.
Soupraa
Banned
Messages : 104
Sujets : 3
Inscription : Sep 2016
Réputation :
1
(12-02-2017, 11:58:54)DAV4WS a écrit : super me suis renseigné sur les sonde O2 AFR d'origine et large bande , la seule différence apparemment ce sont les plages sir lesquels ils arrivent a capter la richesse ,
tu avais raison pour de l'atmo une d'origine devrait le faire car elle capte si je ne dit pas de bêtise de 13 à 16 AFR
j'ai libéré mon ostrich , au nakama donc on pourra faire ce que tu sais biz
----------
je risque de te demander des écrans comme ça avec info ECT , IAT ect... pour mes reprogs c'est top
Yep ben code pret et a tes souhaits
DAV4WS
Mineur de corde
64 - Pyrénées-Atlantiques France
Messages : 14 598
Sujets : 44
Inscription : May 2010
Réputation :
10
superbe veux bien etre ton 1er client
on en parle au nakama l'ami
DAV4WS
Mineur de corde
64 - Pyrénées-Atlantiques France
Messages : 14 598
Sujets : 44
Inscription : May 2010
Réputation :
10
Ne fais pas le timide montre nous tes belles évolutions depuis
Modification du message : 16-05-2019, 23:57:03 par DAV4WS.
|