dashboard pour mon auto

bonjour , je suis total ignorant en code et en électronique . mais je suis curieux et j ais envie . la doctrine arduino ma plus et je rentre pile dedans le type qui a des idées mais aucune connaissances :grin: .
donc je veux me faire un afficheurs pour ma voiture , afin de pouvoir visualiser , et enregistrer les données . ce qui me sert pour faire ma reprog de calculo , bon c est vrais j ais déjà un un boitier tout fait qui le fait déjà , mais si je peut le faire !!! , avec une intégration comme je veux dans l auto .

alors j ais une carte uno r2
un lcd 16x2
une protoshield

je voudrais , température gaz d échappement , richesse , tours minutes , pression de suralimentation , ( ces infos suffises pour travailler ) , et températures d admission + bonus si possible .

pour le moment ou j en suis . je me suis fait une petite intro a l allumage (hmcorp pour home-made corp XD , et zeitro-bull pour le clin d œil de ce que je voudrais arriver )
j affiche :
ma pression de turbo correctement avec un capteur 0/5v
la températures d admission avec un lm35
la température d échappement avec un max6675 que j ais souder direct sur ma protoshield ( j ais de variation de l ordre d 1 degré , mais j utilise l alim usb )
la position papillon avec un capteur 0/5v mais pas caler sur min/max 0/5v ,mais avec la bonne formule et ca me fait bien 0/100% pédale .

pour l AFR (richesse ) ca sera simple c est du 0/5v , il faut que je mette une option de recalibrage a la demande , mais j ais vu des sujet le traitant , ca attendra le moment venu .
je voudrais aussi enregistrer au mini les valeurs indispensable citer plus haut sur catre sd , j ais donc acheter un support de carte sd . mais je n ais pas assez de place sur mes pin digital ..... :fearful: le lcd et le max6675 m en prenne trop , j ais donc commander un lcd serie .

jusque la , j ais réussi a me débrouiller tous seul , en glanent infos et codes. les codes que j essayais de coller bêtement , marchais jamais ,alors en m en inspirant et en reprenant la base al la pogne , ca a marcher , j ais compris plus tard que comme j utilisais l ide 1.0 les sketch n étais compatible !! ..... du coup je comprend a peut prés ce que j écrit !!! XD . mais la je sèche .

je voudrais utiliser le lcd 16x2 sur une seul ligne . j ais trouver plusieurs postes la dessus une library , mais dans ce cas mes compétences sont de loin larguer . j ais des code en mode exemples qui fonctionne , mais je n ais trouver aucun sujet et d exemples qui utilse les chiffre en gros , j entend pas seulement les faire defiler , mais les afficher en fonction de mes entrer analogique .

voila mon code , c est chantier :blush:

  #include <LiquidCrystal.h>
  #include <max6675.h>
  #include <Wire.h>

// thermocouple max6675
  int thermoDO = 5;
  int thermoCS = 6;
  int thermoCLK = 4;
  MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);
  int vccPin = 13;
  int gndPin = 3;


//ecran lcd 
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

// symbole degrée 
  uint8_t degree[8]  = {140,146,146,140,128,128,128,128};
// sensor minimum, discovered through experiment
  const int sensorMin = 1000;      
  const int sensorMax = 0; 
// smiley 
byte pas_comptant[8] = {
  0b00000,
  0b00000,
  0b11011,
  0b11011,
  0b00000,
  0b00000,
  0b01110,
  0b10001
};

byte mi_comptant[8] = {
  0b00000,
  0b00000,
  0b11011,
  0b11011,
  0b00000,
  0b00000,
  0b11111,
  0b00000
};

byte comptant[8] = {
  0b00000,
  0b00000,
  0b11011,
  0b11011,
  0b00000,
  0b10001,
  0b01110,
  0b00000
};

byte la_classe[8] = {
  0b00000,
  0b00000,
  0b11111,
  0b11011,
  0b00000,
  0b10001,
  0b01110,
  0b00000
};


//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


void setup()
{
  Serial.begin(9600);
   // create a new character
  lcd.createChar(1, pas_comptant);
  // create a new character
  lcd.createChar(2, mi_comptant);
  // create a new character
  lcd.createChar(3, comptant);
  // create a new character
  lcd.createChar(4, la_classe);  
 
 
 // thermocouple max6675
  pinMode(vccPin, OUTPUT); digitalWrite(vccPin, HIGH);
  pinMode(gndPin, OUTPUT); digitalWrite(gndPin, LOW);
  
  lcd.begin(16,2);               // initialize the lcd 
  lcd.createChar(0, degree);
   // wait for MAX chip to stabilize
  delay(500);
  // intro hmcorp
  lcd.setCursor ( 0, 0 );  
  lcd.print("     HM.corp ");  
  lcd.setCursor ( 0, 1 );        // go to the next line
  lcd.print ("   electronics");   
  delay (3000);                  
  lcd.clear();
  delay (2000);
   lcd.setCursor ( 0, 0);  
  lcd.print("  zeitro-bull ");  
  lcd.setCursor ( 0, 1 );        // go to the next line
  lcd.print ("  multi-gauge");  
  delay (3000);                  
  lcd.clear();
  delay (2000);
  lcd.setCursor ( 0, 0 );  
  lcd.print(" EGT");
  delay(1000);  
  lcd.setCursor ( 10, 0 );        // go to the next line
  lcd.print (" MAP");   
  delay(1000);
   lcd.setCursor ( 0, 1 );  
  lcd.print(" OIL");
  delay(1000);  
  lcd.setCursor ( 10, 1 );        // go to the next line
  lcd.print (" AFR");   
  delay(1000);
  delay (3000);                  
  lcd.clear();
  delay (2000);
}


void loop()
{
  //thermocouple egt avec le max6675
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("    EGT");
  
  lcd.setCursor(0,0);
  lcd.print(thermocouple.readCelsius());
 #if ARDUINO >= 100
  lcd.write((byte)0);
 #else
  lcd.print(0, BYTE);
 #endif
  lcd.print("C ");
  
  
 // int SensorPin_0 = 0;
  //int reading_0 = analogRead(SensorPin_0);  
  
 // converting that reading to voltage, for 3.3v arduino use 3.3
 //float voltage_0 = reading_0 * 5.0;
 //voltage_0 /= 1023; 

 
 
 
  //int temperature_C = voltage_0  * 100;  //converting from 10 mv per degree wit 500 m  //to degrees ((volatge - 500mV) times 100)
  //Serial.print(temperature_C);
  //Serial.println("  .c");
  //delay(3000);
  //Serial.clear();
  //--------------------------------------------------------------------------------------------------------------------------------------------------------------
  
  //boost , capteur map 
   //capteur map 
  int sensorpin_1 = 1;
  int reading_1 = analogRead(sensorpin_1);
  float boost_1 = (reading_1*0.244)*0.01 ;
  float boost =boost_1-1;
  lcd.setCursor(15,0);
  lcd.print("b" );
  lcd.setCursor(10,0);
  lcd.print(boost);
  Serial.print(boost);
  Serial.println("  bar");
  
//----------------------------------------------------------------------------------------------------------------------------------------------------------------
  int sensorpin_2 = 2;
  int reading_2 = analogRead(sensorpin_2);
  int position_papillion = (reading_2/7) ;
  int range = map(reading_2, sensorMin, sensorMax, 0, 3);

  
  // do something different depending on the 
  // range value:
  lcd.setCursor(0, 1);
  lcd.print(position_papillion);
  lcd.setCursor(3, 1);
  lcd.print("%");
  lcd.setCursor(8, 1);
  switch (range) {
  case 0:    // your hand is on the sensor
   lcd.write(4);
    break;
  case 1:    // your hand is close to the sensor
    lcd.write(3);
    break;
  case 2:    // your hand is a few inches from the sensor
    lcd.write(2);
    break;
  case 3:    // your hand is nowhere near the sensor
    lcd.write(1);
    break;
   }
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
  //int sensorpin_3 = 3;
  //int reading_3 = analogRead(sensorpin_3);
  //float boost_limite_1 = (reading_3*0.244)*0.01;
  //float boost_limite = boost_limite_1-1;
  
  // Serial.print(boost_limite);
  //Serial.println("  bar   boost limiter");
   //delay(3000);
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------
  
  
  
 
  

 

  //lcd.setCursor(15,0);
  //lcd.print("%");
  //lcd.setCursor(12,0);
  //lcd.print(position_papillion);
  
  //lcd.setCursor(11,1);
  //lcd.print("b_max");
  //lcd.setCursor(6,1);
  //lcd.print(boost_limite);
  
 

  delay(2000);
}

j ais trouver ce code de gros caracters pres a l emploi , mais je ne sais l utiliser #include <LiquidCrystal.h>

LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

byte custchar[8][8] = {
 {
   B11111,
   B11111,
   B11111,
   B00000,
   B00000,
   B00000,
   B00000,
   B00000
 }, {
   B00000,
   B00000,
   B00000,
   B00000,
   B00000,
   B11111,
   B11111,
   B11111
 }, {
   B11111,
   B11111,
   B11111,
   B00000,
   B00000,
   B11111,
   B11111,
   B11111
 }, {
   B00000,
   B00000,
   B00000,
   B00000,
   B00000,
   B01110,
   B01110,
   B01110
 }, {
   B00000,
   B00000,
   B00000,
   B01110,
   B01110,
   B01110,
   B00000,
   B00000
 }, {
   B00000,
   B00000,
   B00000,
   B00000,
   B00000,
   B00000,
   B00000,
   B00000
 }, {
   B00000,
   B00000,
   B00000,
   B00000,
   B00000,
   B00000,
   B00000,
   B00000
 }, {
   B00000,
   B00000,
   B00000,
   B00000,
   B00000,
   B00000,
   B00000,
   B00000
 }
};

byte bignums[10][2][3] = {
 {
   {255, 0, 255},
   {255, 1, 255}
 },{
   {0, 255, 254},
   {1, 255, 1}
 },{
   {2, 2, 255},
   {255, 1, 1}
 },{
   {0, 2, 255},
   {1, 1, 255}
 },{
   {255, 1, 255},
   {254, 254, 255}
 },{
   {255, 2, 2},
   {1, 1, 255}
 },{
   {255, 2, 2},
   {255, 1, 255}
 },{
   {0, 0, 255},
   {254, 255, 254}
 },{
   {255, 2, 255},
   {255, 1, 255}
 },{
   {255, 2, 255},
   {254, 254, 255}
 }
};

void loadchars() {
 lcd.command(64);
 for (int i = 0; i < 8; i++)
   for (int j = 0; j < 8; j++)
     lcd.write(custchar[i][j]);
 lcd.home();
}

void printbigchar(byte digit, byte col, byte row, byte symbol = 0) {
 if (digit > 9) return;
 for (int i = 0; i < 2; i++) {
   lcd.setCursor(col, row + i);
   for (int j = 0; j < 3; j++) {
     lcd.write(bignums[digit][i][j]);
   }
   lcd.write(254);
 }
 if (symbol == 1) {
   lcd.setCursor(col + 3, row + 1);
   lcd.write(3);
 } else if (symbol == 2) {
   lcd.setCursor(col + 3, row);
   lcd.write(4);
   lcd.setCursor(col + 3, row + 1);
   lcd.write(4);
 }
 
 lcd.setCursor(col + 4, row);
}

void setup() {
 int sensorpin_1 = 1;
  int reading_1 = analogRead(sensorpin_1);
  float boost_1 = (reading_1*0.244)*0.01 ;
  float boost =boost_1-1;
 loadchars();
 analogWrite(boost, 1);
 
 printbigchar(0, 0, 0);
 printbigchar(1, 4, 0);
 printbigchar(2, 8, 0);
 printbigchar(3, 12, 0);
 printbigchar(4, 16, 0, 1);
 printbigchar(5, 0, 2);
 printbigchar(6, 4, 2);
 printbigchar(7, 8, 2);
 printbigchar(8, 12, 2);
 printbigchar(9, 16, 2, 2);
 
}

void loop(){

j ais trouver !!! il fallait m inscrire et une sorirée de recherche en plus , j ais intégrer mon thermocouple .

#include <LiquidCrystal.h>
 #include <max6675.h>
  #include <Wire.h>

// thermocouple max6675
  int thermoDO = 5;
  int thermoCS = 6;
  int thermoCLK = 4;
  MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);
  int vccPin = 13;
  int gndPin = 3;
  
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
   
byte custchar[8][8] = {
 {
   B11111,
   B11111,
   B11111,
   B00000,
   B00000,
   B00000,
   B00000,
   B00000
 }, {
   B00000,
   B00000,
   B00000,
   B00000,
   B00000,
   B11111,
   B11111,
   B11111
 }, {
   B11111,
   B11111,
   B11111,
   B00000,
   B00000,
   B11111,
   B11111,
   B11111
 }, {
   B00000,
   B00000,
   B00000,
   B00000,
   B00000,
   B01110,
   B01110,
   B01110
 }, {
   B00000,
   B00000,
   B00000,
   B01110,
   B01110,
   B01110,
   B00000,
   B00000
 }, {
   B00000,
   B00100,
   B01010,
   B10001,
   B01010,
   B00100,
   B00000,
   B00000
 }, {
   B00000,
   B11011,
   B11011,
   B00000,
   B00100,
   B10001,
   B01010,
   B00100
 }, {
   B00000,
   B00000,
   B00000,
   B00000,
   B00000,
   B00000,
   B00000,
   B00000
 }
};

byte bignums[10][2][3] = {
 {
   {255, 0, 255},
   {255, 1, 255}
 },{
   {0, 255, 254},
   {1, 255, 1}
 },{
   {2, 2, 255},
   {255, 1, 1}
 },{
   {0, 2, 255},
   {1, 1, 255}
 },{
   {255, 1, 255},
   {254, 254, 255}
 },{
   {255, 2, 2},
   {1, 1, 255}
 },{
   {255, 2, 2},
   {255, 1, 255}
 },{
   {0, 0, 255},
   {254, 255, 254}
 },{
   {255, 2, 255},
   {255, 1, 255}
 },{
   {255, 2, 255},
   {254, 254, 255}
 }
};

void loadchars() {
 lcd.command(64);
 for (int i = 0; i < 8; i++)
   for (int j = 0; j < 8; j++)
     lcd.write(custchar[i][j]);
 lcd.home();
}


//This function prints an integer between o and 999 in a big font at the left of the display
// Argument is a byte array Digits[# of digits, Digit 1, Digit 2, Digit 3]
// Nothing is returned.
// Numbers outside of the limits of this function will print an error screen.


void printCustom (int x)
{
byte digits[4];
if (x>99)
{ 
digits[0] = 3;
digits[1] = x/100;
digits[2] = (x%100)/10;
digits[3] = (x%100)%10;
}
if ((x>9) && (x<=99))
{
digits[0] = 3;
        digits[1] = 0;
digits[2] = x/10;
digits[3] = x%10;
}
if (x<=9)
{
digits[0] = 3;
        digits[1] = 0;
digits[2] = 0;
        digits[3] = x%10;
}


if (digits[0] > 3){
  lcd.print("PRINT ERROR");
  return;
}
for(int e = 1; e < 2; e++) 
{
if(digits[e] > 9){
            lcd.print("PRINT ERROR");
             return;
            }
}	

for(int digitLoc= 0;digitLoc<digits[0];digitLoc++)
{
for (int i = 0; i <2; i++)
{
lcd.setCursor(digitLoc*4,i);
for(int j = 0; j < 3; j++)
{
lcd.write(bignums[digits[(digitLoc+1)]][i][j]);
}	
lcd.write(254);
}
}
} 


//Setup the lcd screen and load the custom characters

void setup() {
 loadchars();
 lcd.begin(16,2);
 Serial.begin(9600);
 // thermocouple max6675
  pinMode(vccPin, OUTPUT); digitalWrite(vccPin, HIGH);
  pinMode(gndPin, OUTPUT); digitalWrite(gndPin, LOW);
}



void loop() {
  


lcd.setCursor(0,0);
printCustom(thermocouple.readCelsius());
 Serial.println(thermocouple.readCelsius());//ecrit termocouple avec  printCustom (big font)
lcd.setCursor(11,0);
lcd.write(5); //custom 5 signe degres
lcd.setCursor(13,1);
lcd.write("EGT");
delay(500);

 

}

bullmout:
bonjour , je suis total ignorant en code et en électronique . mais je suis curieux et j ais envie . la doctrine arduino ma plus et je rentre pile dedans le type qui a des idées mais aucune connaissances :grin: .
donc je veux me faire un afficheurs pour ma voiture , afin de pouvoir visualiser , et enregistrer les données . ce qui me sert pour faire ma reprog de calculo , bon c est vrais j ais déjà un un boitier tout fait qui le fait déjà , mais si je peut le faire !!! , avec une intégration comme je veux dans l auto .

bonjour
tu a lu ou au moins parcouru le topic de supercinci ?
http://arduino.cc/forum/index.php/topic,119201.0.html