Fichier .h et .cpp pour mettre des variables

Bonsoir,

Je souhaiterai mettre des variables dans des fichiers externes ( .h et .cpp ) pour pourvoir les réutiliser par la suite. Il s'agit de variables servant à afficher sur des 7 segments :

byte table_segments[] = {
//GFEDCBA
0b0111111, //0 / O maj
0b0000110, //1 / l maj
0b1011011, //2
0b1001111, //3
0b1100110, //4
0b1101101, //5 / s / S
0b1111101, //6
0b0000111, //7
0b1111111, //8
0b1101111, //9 / g
0b1011111, //10 pour a
0b1011111, //11 pour A
0b1111100, //12 pour b
0b1011000, //13 pour c
0b1111100, //14 pour C
...etc
};

J'essaye depuis un moment mais le compilateur semble bloquer sur le type "byte" bien que j'ai inclus le Arduino.h.

C'est important car je souhaite aussi dessiner des typographie pour écran graphique et c'est uniquement sous cette forme que j'en envisage l'utilisation.

Merci pour tout élément de réponse.

Vous n’avez rien inclu du tout.

Je sais pas mais sa m'intéresse :smiley:

#include <Arduino.h>

@+

tu fait un fichier commande.h

dans ton commande.h

tu met

extern int global_variable; // tes variables

Dans ton fichier commande.c tu définis ta variable...
int global_variable= 0;

et dans ton fichier principal ou autre fichier ou tu utilise ta variable

#include "file3.h"

tu utilises ta variable

int global_variable= 10;

hazerty565:
tu utilises ta variable
int global_variable= 10;

Sans le int, sinon tu re-déclares la variable:

  • en global -> erreur au linker,
  • en local -> pas d'erreur, mais un bug

Merci pour les réponses rapides.

J’ai donc fait un fichier codeCaracteres.h :

#include <Arduino.h>

extern const byte table_segments[37];

et un fichier codeCarateres.cpp :

#include <Arduino.h>
extern const byte table_segments[37] = {
0b0111111, //0 / O maj
0b0000110, //1 / l maj
0b1011011, //2
etc
};

et appel dans le croquis ;

#include "codeCaracteres.cpp"

mais ça ne fonctionne toujours pas : erreur de compilation.

NOTE : la ligne include <Arduino.h> semble indispensable pour reconnaitre le type “Byte” qui est celui qui m’intéresse.

J’ai testé avec le fichier de description en .c et en .cpp, rien à faire.

Evidemment, l’intérêt est d’avoir le contenu de la variable en externe.

Mais je sens qu’on va trouver la bonne solution…

Ça marche ! (au moins ça compile, je n'ai pas encore fait le test physique)

Je n'avait pas tout bien assimilé :

En fait, il faut "extern" dans le fichier .h mais PAS dans le fichier .c

Pour info : la compilation fonctionne avec le fichier .c mais PAS avec le même fichier en .cpp, contrairement aux objets.

Donc si on veut objets et grosses variables, prévoir deux fichiers .h, un .c et un .cpp et deux appels dans le croquis.

Merci aux généreux contributeurs de m'avoir aidé.

Zelione:
En fait, il faut "extern" dans le fichier .h mais PAS dans le fichier .c

C'est presque ça.
il faut "extern" dans le fichier .h mais PAS dans le fichier .c où tu initailises ta variable.

Oui,
je le précise dans mon site.
Merci.

#include "codeCaracteres.cpp"

A proscrire.

On inclut un .h, pas un .cpp.

@+

Oups,
c’est vrai, une faute de frappe.
Merci.