Bon, je viens de finir de coder la V2.0 du compteur. J'avais un petit soucis avec le capteur à effet hall : au dessus de 100km/h environ, il loupait des tours de roue. Donc ma vitesse affichée faisait des "bonds" (74, 101, 122...) alors que je restais a vitesse constante.
J'ai donc pris une puce GPS (MT3339) qui me donne du coup quelques infos supplémentaires (comme l'heure, j'ai viré aussi le module RTC du coup).
J'ai aussi viré la jauge à essence, parce que trop de code et trop de fils, fallait que ça rentre dans un arduino mini et dans l'emplacement du compteur sur la moto. Du coup j'ai gagné en place sur l’écran, je peux maintenant afficher la distance parcourue (avant je ne l'affichait que pendant l'initialisation).
Des tas de soucis pour passer en dessous des 28 600KB, mais j'ai enfin réussi, et ça fonctionne !
Voici le code, et une vidéo du truc en marche bientôt, quand j'aurais remonté le tout.
// Inclusion des librairies
#include <SoftwareSerial.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(3, 4, 5, 6, 7, 8); // Initialisation de la librairie Liquid Crystal
#include <SD.h>
#include <Adafruit_MAX31855.h>
/*-----------------------------------------------------------------------------------
============================GPS======================================================
-----------------------------------------------------------------------------------*/
#include <TinyGPS.h>
TinyGPS gps;
SoftwareSerial nss(A4, A5);
unsigned long chars;
unsigned short sentences, failed;
char b;
float flat, flon;
unsigned long age;
int year;
byte month, day, hour, minute, second, hundredths;
bool newData;
int z = 0;
/*-----------------------------------------------------------------------------------
============================GPS=END==================================================
-----------------------------------------------------------------------------------*/
byte NO[8] = {
B11110,
B11000,
B10100,
B10010,
B00001,
B00000,
B00000,
B00000 };
byte N[8] = {
B00100,
B01110,
B10101,
B00100,
B00100,
B00000,
B00000,
B00000 };
byte NE[8] = {
B01111,
B00011,
B00101,
B01001,
B10000,
B00000,
B00000,
B00000 };
byte E[8] = {
B00100,
B00010,
B11111,
B00010,
B00100,
B00000,
B00000,
B00000 };
byte SUDEST[8] = {
B10000,
B01001,
B00101,
B00011,
B01111,
B00000,
B00000,
B00000 };
byte S[8] = {
B00100,
B00100,
B10101,
B01110,
B00100,
B00000,
B00000,
B00000 };
byte SO[8] = {
B00001,
B10010,
B10100,
B11000,
B11110,
B00000,
B00000,
B00000 };
byte O[8] = {
B00100,
B01000,
B11111,
B01000,
B00100,
B00000,
B00000,
B00000 }; //*/
const int tmpPin = A0; // Selection de l'entrée analogique pour la sonde température TMP36
unsigned int intVitesse=0; // initialisation de la vitesse à afficher (int)
unsigned long previousMillis = 0;
const int interval = 3000; // interval de defilement des parametres sur le lcd
int lcdState = 0; // parametre en cours d'affichage
int kmState = 0;
float kmcount;
int intkm;
char kmprev[10]; // tableau pour lire la carte SD
int bufPos = 0; // buffer pour lire la carte SD
char byteIn = 0; // byte de la carte SD
float lastLat=0;
float lastLon=0;
short unsigned int val=0;
String unite="N/C";
// Initialize the Thermocouple
Adafruit_MAX31855 thermocouple(A1, A2, A3);
void enregistrer(int km)
{
File dataFile = SD.open("datalog.txt", FILE_WRITE); // on ecrit le nombre de km parcourus dans un fichier
// if the file is available, write to it:
if (dataFile)
{
dataFile.seek(0);
dataFile.print(km);
dataFile.close();
}
// if the file isn't open, pop up an error:
//*/
}
PS : merci à ceux qui ont voté pour moi sur semageek, j'ai gagné un bon d'achat et me suis acheté un raspberryPi avec