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 .
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 ..... 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
#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);
}