[Projet] Un tableau de bord numérisé

neodelavega:
sur se je tenez quand même a préciser que c'est du super taff je voulez faire pareil mai avec un ordi portable desocer est inclus dans la console centrale (directement relier a mon ecu) pour lancer mais log retoucher la carto est afficher le knock,EGT,AFR,temp eau,huile,pression ect ect... mais bon j'en suis pas encore ici pour l'instant c'est perf ^^

outch... c'est un peu dur à lire là... :~ je veux bien faire des efforts pour traduire, mais je ne voudrais pas être le seul si tu vois ce que je veux dire...

A part ça, ton ecu, il faudra le remplacer. j'ai causé avec un gars qui s'est amusé à remplacer l'AEI d'une super5 GTT (le modèle 1.4 turbo, celui-là à 115chx pour pousser 700Kg, je fais pas le poids). C'est exactement le même boîtier que sur ma R11 (même moteur aussi, mais j'ai pas de turbo...). Il a utilisé un pic à 8MHz... mais là, il n'y a pas beaucoup de données à traiter : le signal PMH, la pression / dépression, cliquetis et c'est tout, puis juste pondre une impulsion de durée constante mais bien calée à chaque demi-tour pour l'allumage
(site : neo-tech).

Nos vieux AEI des années 80 n'ont que 6 fils pour faire tourner le moteur, mais l'ECU moderne gère même jusqu'aux clignotants et essuie-glace, une cinquantaine de fils... l'arduino ne suivra pas, là... on est dans les 32bits/400MHz pour ce genre de joujou.

Je reviens à mon "indicateur de vitesse", j'ai revu la procédure, car je m'étais planté : le compteur avec le 40kmh à l'horisontale, il venait d'une super5 ph2... en fait, ça tombe plutôt bien, sur la R11, c'est le 30kmh qui est à l'horizontale, donc le 0 est à 45°, et j'ai trouvé qu'en multipliant 256 par 94 puis en n'affichant pas les deux derniers chiffres, ça me donne 240 (256 x 94 = 24064), soit un tour complet de l'aiguille, et si j'envoie 96, il affichera 90 en numérique, et que le 96 correspond à la verticale... (vous suivez?)

Bref, mon tour complet étant divisé en 8 portions, ça me donne 32 coordonnées relatives, tout propre. Reste à revoir le rayon aussi, car j'aimerais bien avoir de la place pour mettre des repères (0, 10, 30, 50, 70, 90, 110, 130... allez savoir pourquoi, dans les années 80, ils mettaient les repères chiffrés à 20, 40, 60, 80, 100, 120, 140... aujourd'hui, on n'a aucune limitation de vitesse à ces valeurs là). Peut-être pour une histoire de place, car en notant le 30, le 90 et le 150, on était aux horizontales et aux verticales, et que ça prenait plus de place?

A part ça, ton ecu, il faudra le remplacer

j'ai oublier de préciser c'est une gestion programmable (AEM series 2)
tu peut loger tout les info moteur puis les relire plus tard voir comment se comporte le moteur a x rpm et a x charge
et tu peux aussi voir toute les sonde ect...

bon ok petite traduction ^^

knock = capteur cliquetis
EGT = exhaust gas temperature = temp echapement
AFR, air fuel ratio = mélange air essence

tu peux faire de l’acquisition en direct par port USB 2.0 d’où l’idée d'inclure un ordi portable ou tablette tactile pour virer toute la guirlande de mano et passer tout en électronique relier a l'ecu en plus de sa je pourrer lancer des log sur les sonde qui autre fois était mecanique

La discussion sur la légalité ou non du projet se trouve ici :

http://arduino.cc/forum/index.php/topic,119485.new.html#new

Cet aspect se traitera désormais sur ce nouveau post.

Merci.

Merci pour le ménage, JF. Si on commence à parler de ce qu'on a envie de faire, ce qu'on a le droit de faire et ce qui est interdit, on ne s'en sortira jamais.

J'ai continué à jouer avec mon interface graphique, et j'ai découvert un truc pas mal sur le LCD : je savais que pour un même écran, on a une page graphique (avec des pixels) et une page texte (avec des caractères comme un LCD alphanum classique), et qu'on peut choisir d'en afficher une des deux, ou les deux en même temps ou aucune. Il y a une fonction qui permet de faire une opération logique entre les pixels de rendu des deux pages : OR, EXOR et AND. le OR est par défaut, les deux pages sont superposées. pour le AND, ben je vois pas trop l'interrêt (n'affiche des pixels que s'il y en a un sur les deux pages au même endroit)... Mais le EXOR est très intéressant. Ainsi, je mets les chiffres de l'indicateur de vitesse en page texte, et l'aiguille en graphique. Quand l'aiguille passe sur le texte, les pixels s'inversent au lieu de se recouvrir bêtement, ça rend la chose plus lisible. de même, pour surligner du texte, il suffit de remplir un rectangle là où il y a du texte, et pouf, le texte devient en inverse dans le rectangle... C'est surtout qu'on n'est pas obligé de réfléchir, les dessins graphiques n'effacent pas le texte (si l'aiguille est sur un nombre, et que j'efface l'aiguille, le nombre reste)

Mauvais point, c'est que le texte pur se pose sur une grille fixe de 20 x 16 caractères, donc c'est au graphique de se positionner par rapport au texte.

J'ai rajouté deux ou trois petits trucs, ça commence à ressembler à quelque chose (rien que les graduations autour de l'aiguille de vitesse, ça remplit tout de suite!) :

la transition entre 114 et 113 :

(toujours pas de vidéo...)

J'veux le m'ême pour mon vélo XD

Super_Cinci:
J'ai continué à jouer avec mon interface graphique,

sympa comme affichage.
perso je mettrais un petit cercle (ou quart) plein centré à l'origine des aiguilles, mais je ne me rend pas compte si c'est simple
à faire et si ça consomme beaucoup de ressources.
genre ça

OUaou !!

Chapeau "Super-Sinche", ton sujet a bien vécu, et visuellement tu as déjà un rendu sympa !

Au niveau luminosité tes écrans-TabloD'Bbor c'est suffisant ?

UniseV

Artouste:
sympa comme affichage.
perso je mettrais un petit cercle (ou quart) plein centré à l'origine des aiguilles, mais je ne me rend pas compte si c'est simple
à faire et si ça consomme beaucoup de ressources.
genre ça

Bien sûr, puisqu'à l'origine, il y a le rond. Maintenant, côté "ressources", c'est pas évident. Pour déplacer l'aiguille, j'efface l'ancienne et dessine la nouvelle, ça effacera une partie de mon rond. dessiner un cercle demande de faire pas mal de tests sur des int (donc 16 bits...), et un rond plein, c'est plusieurs cercles de diamètres différents, et l'algo que j'ai ferait des trous (un problème connu de l'algo de "behsman" ou un truc comme ça). Il y a l'autre solution d'utiliser une fonction assez simple qui permet d'imposer une ligne de 8 pixels via un seul octet, donc tout comme dessiner un caractère, ça pourrait passer si je tombe bien dans la grille des 8 pixels... Je teste ça.

@UniseV : je risque d'avoir des problèmes de reflets, c'est du verre de base...

Pour le petit rond, peut être peut tu coller un O majuscule ou une paire de () ou de <> sur la page texte à l'endroit qui va bien ?

Algo de Bresenham XD

barbudor:
Pour le petit rond, peut être peut tu coller un O majuscule ou une paire de () ou de <> sur la page texte à l'endroit qui va bien ?

Bonsoir Barbudor
sinon t'en qu'a coller et avec zero code pour gérer la rémanence , il y aurait bien ça ! :grin:

---->[] :blush:

barbudor:
Pour le petit rond, peut être peut tu coller un O majuscule ou une paire de () ou de <> sur la page texte à l'endroit qui va bien ?

Ouaip, je pourrais même définir un caractère perso dans la ram du LCD en forme de rond! le O majuscule, c'est pas beau et ça fait bricolage. mais le caractère perso, ça marche! (sauf que mon EXOR ferait des trous...)

Jean-François:
Algo de Bresenham XD

Je parlais de celui-là : Algorithme de tracé d'arc de cercle de Bresenham — Wikipédia que j'ai du le lire pfiou... 3 ou 4 fois! ben pas réussi à le déchiffrer suffisamment pour en pondre un code... mais le code que j'ai piqué en 15 lignes est basé dessus et marche très bien! que des + ou des -, et hop, un cercle. dans l'article wiki, tout en bas, il y un très bel exemple de cercles imbriqués qui font des trous.

Artouste:

barbudor:
Pour le petit rond, peut être peut tu coller un O majuscule ou une paire de () ou de <> sur la page texte à l'endroit qui va bien ?

Bonsoir Barbudor
(...)
:grin:
Gommettes Formes Géométriques - Gommettes, stickers - 10 Doigts

Oui, ben y'a pas la bonne couleur. Mais ça me rappelle les premiers jeux électroniques avec un mickey qui doit ramasser des oeus de poules, le décors était imprimé sur la vitre du LCD...

En attendant, avec une table de 3 octets, je colle un rond de 7 px de diamètre qui tombe pile-poil sur l'axe de l'aiguille (c'était pas prévu, ouf!) :

c'est ce que j'ai de mieux, mais je crois que je vais laisser le code de cette aiguille tranquille un peu, car je pense être à la limite du raisonnable niveau temps d'exécution...

Pour info, il manque encore la série de switch(Serial.read()){} pour récupérer les données série et les traiter. En gros, j'en suis à 8246 octets de flash sur 14336, et côté ram, il va falloir que je colle un petit memAvailable() en test au milieu du code...

Et pourquoi comme indiqué sur ta page wiki ne pas utiliser cet algo qui fait des cercles sans trous ? XD

Jean-François:
Et pourquoi comme indiqué sur ta page wiki ne pas utiliser cet algo qui fait des cercles sans trous ? XD

Algorithme de tracé de cercle d'Andres — Wikipédia

Pas mal, mais il semble que le périmètre est un peu "gras" aux alentours des angles de 45°... Mon pâté de 7x7px est quand même plus rapide, peut-être lui rajouter un seul cercle pour passer à 9 de diamètre?

Bon, pour les aiguilles, je m'arrête là :


une petite erreur s'est glissée dans mon calcul des petites aiguilles, voir le point en bas à droite qui est en trop sur celle du haut... j'ai pas trouvé où.

Maintenant, il faut que je m'occupe des icônes, en 16x16 (32 octets) ou 24x24 (72 octets), je ne sais pas encore, je pense que je vais les coller directement dans l'EEPROM du 168, comme ça, je m'affranchis du bouffage de ram pour les tableaux d'icônes, et je pourrai les changer en utilisant l'USB du système final. ça me laisse une capacité 10 à 20 icônes (selon la taille) par écran, largement suffisant.

edit : Un premier jet d'icônes en deux tailles (16x16 et 24x24) :

Reste plus qu'à les coder...

Super_Cinci:
Bon, pour les aiguilles, je m'arrête là :

C'est déjà un resultat pas mal et exploitable

Oui, et je commence à en être fier...

Bon, histoire de perdre du temps, j'ai codé quelques icônes en partant d'un bitmap (va falloir que je fasse un soft en VB qui me donne directement des tables, car c'est bien long...). Je trouvais plus joli en 24x24, donc je les ai faites en 24x24. Oui, sauf qu'en fait :

Ca prend de la place, et pas qu'en mémoire... donc super, je n'ai plus qu'à tout reprendre en 16x16, comme la dernière...

Je ne sais même pas si je vais garder les grandes sous la main, car il faudra de la mémoire, et d'ici là, j'aurai un petit soft qui me transforme un BMP en table d'octets...

EDIT : en 16x16, on va pouvoir en coller un peu plus...


Ces icônes serviront à décorer les petites aiguilles, et sûrement les pages de configuration (où là, je pourrais utiliser les grandes...)

Après avoir passé deux jours à trier des poulets morts non vendables (donc direction usine à "knaki"), j'ai bien eu du mal à me replonger dans le code...

J'ai voulu encadrer les compteurs totaliseurs et journalier...

Pas très concluant. Mais l'idée est là, car pour qu'au passage de l'aiguille sur les zones "sensibles", il faut mettre les graphiques dans la page "text", car rappelons-le, pour un écran, j'ai un écran graphique et un écran texte qui s'affichent ensemble avec un XOR entre les deux... L'idée : le "fond" est en page texte, et ce qui bouge en page graphique.

Donc en attendant de jouer avec les 128 caractères personnalisables, je suis revenu à la base :

Dans l'idée, les icônes seront dans la page texte, et en 4 caractères, je pourrai afficher une icône de 16x16 : gain de temps énorme, et possibilité de faire clignoter une icône (je pense à l'essence... :smiley: ).

Il me reste donc à coller en EEPROM ma table de caractères persos, j'ai déjà commencé à y travailler...

A suivre!

super bravo j'adore!
Une question me vient à l'esprit en voyant ceci. Sur une voiture plus moderne (je pense à ma 206+), pensez-vous qu'il est possible de réaliser un régulateur de vitesse en se connectant sur le port diagnostique OBD?
Je sais qu'on peut avoir la vitesse, mais est-ce qu'on peut commander le régime moteur (accélerer ralentir à la place du servomoteur+câble)?

eti:
super bravo j'adore!
Une question me vient à l'esprit en voyant ceci. Sur une voiture plus moderne (je pense à ma 206+), pensez-vous qu'il est possible de réaliser un régulateur de vitesse en se connectant sur le port diagnostique OBD?
Je sais qu'on peut avoir la vitesse, mais est-ce qu'on peut commander le régime moteur (accélerer ralentir à la place du servomoteur+câble)?

Salut et merci...

Je dis peut-être une co**erie, mais j'ai lu quelque part que les ODB actuels possèdent déjà un régulateur en interne (pour ceux qui ont une commande électromécanique de l'admission). Il suffirait de l'activer (mais là, c'est par la concession, et autant acheter une voiture où c'est déjà activé, vu le prix d'un petit clic de souris qui active le régulateur...). Je ne connais pas trop ces trucs modernes donc je ne peux pas t'en dire plus. J'ai voulu m'intéresser aux prises diag des ODB, mais ça avait l'air un peu compliqué et n'ayant qu'une vieille guimbarde sans ODB, je ne suis pas allé plus loin. Mais si on connait les codes de commande, alors il suffit de se connecter en série dessus et de tester...