[Projet] Un tableau de bord numérisé

En vrac :

PROGMEM : oui pour la place, non pour la rapidité. il faut savoir que mes tableaux sont appelés 9 à 14 fois pour l'affichage d'un seul caractère perso, et une dizaine de fois dans chaque dessin d'aiguille. J'ai peur que leurs lectures en flash ralentisse vraiment mon code. J'optimise au max ma ram, en comptant les gros tableaux à la louche et voir où j'en suis. Comme il n'y a pas d'interruptions (et pas besoin, le code doit juste attendre des données série et les afficher au fur et à mesure), je pense que peut-être un static suffira à la place de volatile? mes tableaux sont déclarés dans les variables globales, donc accessibles à toutes mes fonctions.

Rapidité d'affichage? Dans le setup(), je commence par récupérer la config en EEPROM, puis initialise le LCD, allumer le back-light (PWM hard), et ensuite initialise et dessine l'interface (calcul des positions en fonction du seul point de repère de chaque contrôle, plus facile pour la mise en page), avec toutes les aiguilles à 0 (cercle, lignes, textes graphiques...). Au reset, lorsque ça démarre, au bout d'une seconde, je vois le back-light s'allumer d'un coup, et ça fait comme si mon interface graphique était déjà dessinée, absolument aucun temps mort visible ni scintillement (dois-je en déduire que ça prend moins de 40ms (1/24 sec.)? Le mouvement des aiguilles est super propre, comparé à des programmes que je faisais sous TP7 en 1995...

Pour résumer, il faut que l'affichage réponde tout de suite à l'arrivée d'une nouvelle donnée, le MEGA "maître" enverra des données environ toutes les 200 à 250ms.

Côté 168, bien sûr, je teste mes variables (un if sur un byte ne coûte rien) pour savoir si ça vaut le coup de changer quelque chose (genre si l'aiguille ne doit pas bouger, alors je la laisse tranquille et gagne un peu de temps au passage, pareil si la valeur n'a pas changé, on ne touche à rien). Exemple des aiguilles de 40px : un déplacement de l'aiguille d'un cran représente 4 dans l'octet de valeur, donc il se peut que la valeur numérique affichée bouge, mais pas l'aiguille. Ca prend deux if mais on gagne 6 lignes dessinées sur le LCD.

Il faudra aussi que je prévois ça dans le MEGA : ne pas envoyer une donnée si elle n'a pas changé.

Mais ce n'est pas parce que chaque morceau marche dans son coin que tout marchera une fois dans la boîte...

En tout cas, merci pour vos infos!