[Projet] Un tableau de bord numérisé

SesechXP:
La Renault 11 la plus moderne qui soit :grin:

Super_Cinci:
Je n'ai pas osé définir un tableau de constantes, ne sachant pas comment le compilateur allait réagir. Si tu me dis que c'est mieux, alors je vais y penser. Le code actuel fait 6500 octets sur les 14300 dispos, donc si les tableaux de constantes vont dans la flash, ça m'intéresse! (il y a aussi les tables de caractères en const...) Je crois que les simples variables déclarées en const sont traduites à la compilation, non?

Sur AVR avec avr-gcc le mot clé const n'entraîne pas le stockage des variables en flash. ça indique juste que tes valeurs sont constantes, en quelque sorte en lecture seule. Par contre il est effectivement possible de stocker les constantes en flash avec la directive PROGMEM : avr-libc: Data in Program Space

Dans les dernières version (nightly) de avr-gcc le fait de mettre une variables en const la stocke en flash.
Mais dans les version stable et/ou obsoléte qui sont fourni avec l'installateur arduino il faut utiliser PROGMEM pour déplacer une variable en flash.

"volatile" force le compilateur à ne pas optimiser la variable, c'est utile (et même obligatoire) dans le cas d'une variable globale partageait entre une fonction standard et une interruption.
"static" sur une variable globale informe le compilateur qu'il peut optimiser l'accès à cette variable en la rendant accesible uniquement dans le fichier .c/.cpp en cours.
"static" sur une variable locale la rend persistante (elle garde sa valeur au prochain appel de la fonction)
"static" sur une fonction la rend optimisable par le compilateur, en la rendant accessible uniquement dans le fichier .c/.cpp en cours.