[Projet] Un tableau de bord numérisé

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...

Quelque modifs encore, dans la gestion des graphiques...

Voilà ce à quoi j'arrive :

Bon, l'encadrement des compteurs km est un peu ambitieux, je ne crois pas qu'il soit nécessaire d'afficher un kilométrage de 9 999 999 km, 6 chiffres suffiront. de même pour le journalier, 999,9km c'est déjà bien assez (là, il peut afficher jusqu'à 6 553,5km... quoique, sur un long trajet, ça peut être intéressant de pouvoir dépasser les 1 000 km).

Pour le fun et que tout le monde comprenne ma gestion graphique, j'ai envoyé un code au LCD pour lui dire de n'afficher que la page texte :

Puis que la page graphique :

le driver interne du LCD (le T6963C) fait un EXOR entre ces deux écrans pour afficher le résultat final.

Comme ça, on voit mieux le "fond" d'écran en mode texte et le "calque" graphique par dessus avec les aiguilles et gros caractères.
On voit également que pour le compteur journalier, la virgule est graphique pour ne pas utiliser la virgule texte qui prend un caractère à elle toute seule et c'est vraiment pas beau...
Je suis bien content d'avoir réussi à coller mes icônes en mode texte/caractères persos ainsi que l'encadrement des compteurs, ça me simplifie grandement la gestion graphique quand l'aiguille passe sur une icône : je n'ai plus rien à gérer!
Ce qui est dommage, c'est qu'il faut envoyer les tables de caractères persos à chaque mise en route du LCD, mais c'est quand même rapide. Ces tables sont collées dans l'EEPROM du "serial back-pack" et transférées dans l'espace mémoire "character Generator" du LCD à l'initialisation.

Il va être temps que je commence à tester les commandes par port série, et trouver des choses à afficher dans la bande du haut du LCD, j'ai trois lignes de 20 caractères ou une zone de 160 x 24 pixels. Je pense que j'y mettrai conso et autonomie à droite et les modes "régulateur" / "limiteur" à gauche. j'ai déjà prévu des icônes pour ça...

Super_Cinci:
Il va être temps que je commence à tester les commandes par port série, et trouver des choses à afficher dans la bande du haut du LCD, j'ai trois lignes de 20 caractères ou une zone de 160 x 24 pixels. Je pense que j'y mettrai conso et autonomie à droite et les modes "régulateur" / "limiteur" à gauche. j'ai déjà prévu des icônes pour ça...

tu n'a pas un petit GPS ?
en dehors de la position il y a des infos derivées qui peuvent etre interessante en voiture
heure
vitesse

Artouste:
tu n'a pas un petit GPS ?
en dehors de la position il y a des infos derivées qui peuvent etre interessante en voiture
heure
vitesse

Bah... je compte essayer de faire tourner le timer2 du MEGA en RTC si j'arrive à souder directement un quartz de 32768 sur les pins du méga (car elles ne sont pas routées), et la vitesse, ben je la mesure "mécaniquement" sur la sortie de pont (là où se met le câble compteur).

Puis j'ai un second écran à programmer aussi (bien que je ferai un Ctrl-C/Ctrl-V du code du premier, il n'y à qu'à déplacer les aiguilles et faire d'autres jauges, zones de texte...)

Et surtout un banc de test à fabriquer, et le MEGA à programmer aussi, Bref, c'est pas fini!

Super_Cinci:
Après avoir passé deux jours à trier des poulets morts non vendables (donc direction usine à "knaki"), j'ai

Tu les as massacrés à coup de R11 ?

Bon, ben sinon ca avance bien...

Ouaip, ça avance. l'épisode poulet m'a permis de prendre du recul...

J'ai aussi utilisé le timer2 pour avoir une base clignotante à 1Hz pour faire clignoter jusqu'à 8 icônes, le rendu est d'un coup plus vivant (enfin en marche normale, aucune icône ne devrait clignoter, je ne verrai peut-être donc jamais mon joli code en fonction...)

Ben voilà, j'en ai trop mis...

en inversant la petite voiture et la conso, ça devrait le faire, et en mettant le temps restant un peu plus à droite... (il manque aussi une icône d'horloge)

quel boulet... je vais me coucher!