erreur compilation

bonjour, j ai un probleme avec une erreur de sortie non declarer non declarer

C:\Users\test\Desktop\ensacheuse\buzzer.ino: In function 'void buzzer()':

buzzer:5:10: error: 'SORTIE_BUZZER_TONE' was not declared in this scope

tone(SORTIE_BUZZER_TONE, 2000);

^

buzzer:11:22: error: 'SORTIE_BUZZER_POWER' was not declared in this scope

digitalWrite(SORTIE_BUZZER_POWER, LOW);

^

exit status 1
'SORTIE_BUZZER_TONE' was not declared in this scope

hors tout est bien declarer

Bonjour,

perso j'aurai préféré que tu postes ton code et le message d'erreur directement.

Je pense qu'il va falloir que tu revoies ton code en sachant que les #define (comme toutes les directives commençant pas #) sont des directive du préprocesseur et ont la visibilité du fichier CPP qui les définit. Donc aucune chance qu'un #define défini dans un CPP soit vu d'un autre CPP (sauf a inclure un CPP dans un CPP mais c'est mal ;-)).

La bonne pratique est de mettre les #define dans des .h qui sont incluent (#include = un gros copier/collé) par les CPP qui souhaitent les posséder.

Faire un .H, nécessite (pour éviter les inclusions multiples) d'écrire un fichier de ce style :

#ifndef BIDULE // <- BIDULE est le nom de ton .h en majuscules ou n'importe quoi qui est propre à ce fichier
#define BIDULE // <- c'est ce qui évite les inclusions multiples.
// ici tu mets tes #define (j'aurais bien fait un copier/coller si tu n'avais pas fourni des images ;-)

#endif

Ensuite tu inclus ce .h (#include "fichier.h") dans les CPP qui en ont besoin.

Le code sous forme de copie d'écran : plutôt inadmissible.

Un indice : ton projet est composé de fichiers .ino, pas un seul .cpp ou .h
Tu en as parfaitement le droit mais il est nécessaire de bien savoir ce que va faire l'IDE dans ce cas, en particulier comment il va agglomérer tout ça.

De quoi réfléchir : Les .ino et leur compilation - Tutoriels et cours - Arduino Forum

Merci hbachetti, j'ai tout compris sur les ino avec ton post :wink:

Dans le cas du problème de vtec35 ce que je préconise reste valide avec des .ino. Un #include "bidule.h" réglera son problème à condition d'inclure ce fichier chaque fois que le compilateur râlera ;-). Pas de soucis si on protège contre l'inclusion multiple.

Mais il est clair que la technique de concaténation "par ordre alphabétique" (et donc imposant une hiérarchie arbitraire entre les "noms" des modules) est de la programmation modulaire à la "gloubi-boulga" ;-).

imposant une hiérarchie arbitraire entre les "noms" des modules

Bon, comme je suppose que vtec35 n'a toujours pas trouvé son problème :

SORTIE_BUZZER_TONE et SORTIE_BUZZER_POWER sont déclarés dans define.ino
L'erreur de compilation est vue dans buzzer.ino

Dans tes onglets : buzzer.ino est situé avant define.ino

Renomme define.ino en a_define.ino et ça marchera.
Ferme l'IDE et ré-ouvre-le quand même.

Mais cela reste quand même la solution du pauvre par rapport à un ensemble de modules .cpp et .h

merci en effet ça marche, je continue mon code

merci encore

Bonjour hbachetti

hbachetti:
Le code sous forme de copie d'écran : plutôt inadmissible.

Répondre c'est glorifier la goujaterie. :smiling_imp:

Cordialement,
bidouilleelec

C'est vrai. Mais on peut démolir la goujaterie.

Tu avoueras quand même : 30 lignes de code en jpg = 400Ko.

Sans parler de la lecture sur smartphone : télécharger l'image, zoomer, zoomer encore :confused:

Mais c'est un réflexe très windowsien, style blaireau. Certains ne connaissent pas le copier/coller de texte.
C'est à se taper sur les cuisses.

hbachetti:
Mais c'est un réflexe très windowsien, style blaireau.

Hein? :angry:

Cordialement,
bidouilleelec

rebonjour tout le monde alors le programme compile bien, sauf que une fois dans la machine rien ne se passe, aucun print rien, on dirait qu il ne passe pas dans l onglet setup

plustot que charger les 10 onglets séparément

je donne le lien Dropbox du fichier zippé, en esperant que ça fera pas grogner

Bonjour vtec35,

vtec35:
rebonjour tout le monde alors le programme compile bien, sauf que une fois dans la machine rien ne se passe, aucun print rien, on dirait qu il ne passe pas dans l onglet setup

Où est le serial.begin() ?

Cordialement,
bidouilleelec

merci :wink: