PROGMEM
Description
Stocke les données dans la mémoire Flash (mémoire programme) au lieu de la mémoire SRAM. Il y a ici une description des différents types de données disponibles sur une carte Arduino.
Remarque : Les données ainsi stockée en mémoire Flash ne seront accessibles que en lecture. Pour un stockage de données non-volatiles, utiliser la librairie EEPROM.
Le mot-clé PROGMEM est un modificateur de variable, et pourra être utilisé avec les types de données définis dans la librairie pgmspace.h. Il indique au compilateur de mettre les données dans la mémoire FLASH", au lieu de la SRAM, où elles devraient normalement aller.
PROGMEM est une partie de la librairie pgmspace.h. Donc, vous devez avant tout inclure cette librairie au début de votre programme, de la façon suivante :
Syntaxe
Paramètres
- dataType: n'importe quel type de variable de mémoire programme (voir ci-dessous)
- variableName: le nom de votre tableau de données
- dataInt0, dataInt1, ...: vos données à mettre en mémoire FLASH
Exemple
Les extraits de code suivants illustre comment lire et écrire des variables de type char non signé (octets) et de type int (2 octets) avec PROGMEM.
Tableau de chaînes de caractères
Il est souvent plus pratique lorsque l'on travaille avec de grande quantité de texte, tel qu'un projet utilisant un afficheur LCD, de déclarer un tableau de chaines de caractères. Puisque les chaînes de caractères sont elles-mêmes des tableaux, voici un exemple de tableau à 2 dimensions.
Ces tableaux ont tendance à être de grandes structures, et par conséquent les mettre dans la mémoire FLASH (mémoire programme) est le plus souvent souhaitable. Le code ci-dessous illustre cette idée.
※ Remarque:
Noter que puisque PROGMEM est un modificateur de variable, il n'y a pas de règle obligatoire quant à son emplacement, et le compilateur Arduino accepte toutes les définitions ci-dessous comme équivalentes. Cependant l'expérience à montré que, dans les différentes versions d'Arduino (basées sur des versions de GCC), PROGMEM peut fonctionner dans une position et pas dans une autre. Le tableau "chaîne de caractère" ci-dessous a été testé avec Arduino 13. Dans les versions précédentes du logiciel Arduino, cela peut ne pas fonctionner si PROGMEM est positionné après le nom de la variable.
Bien que PROGMEM peut-être utilisé avec une variable unitaire, il vaut la peine d'être utilisé seulement si vous avez un grand bloc de données à stocker (car la SRAM est limitée), et donc la meilleure façon est d'utiliser un tableau, (ou une autre structure de données C, hors de notre propos ici).
Comme mentionné ci-dessu, c'est important d'utilisé des types de données présents dans pgmspace.h. Quelques erreurs énigmatiques sont produits par l'utilisation de type de données ordinaires pour les appels de mémoire programme. Ci-dessous, voici la liste des types de variables à utiliser. Les nombres en virgule flottante ne sont pas supportés semblent-il.
※ ARDUINO BUY RECOMMENDATION
Arduino UNO R3 | |
Arduino Starter Kit |