[Urgent] Problèmes de compilation

Bonjour ! J’ai plusieurs types de problèmes avec mon programme. J’ai un programme principal avec un sous-programme inclut dedans.
Dans mon sous programme, lorsque je le compile, il me met le message d’erreur suivant :

Programme_Coco:1: error: expected constructor, destructor, or type conversion before ‘(’ token

analogRead(APd);

Programme_Coco:2: error: expected unqualified-id before ‘if’

if (APd == 0)

Programme_Coco:9: error: expected unqualified-id before ‘else’

else if (APd < 339)

Je n’arrive pas à voir où est le soucis la dedans. Merci d’avance !

Bonjour,

Sans le programme, je ne vois pas comment on pourrait t'aider.

+1
et lire aussi :
http://forum.arduino.cc/index.php?topic=324322.0
et http://forum.arduino.cc/index.php?topic=315372.0 ne sera pas inutile.

Déjà si tu avais regardé dans l'onglet "Learning/Reference" tu aurai vu que dans analogRead(APd), APd est un numéro de sortie et que c'est OBLIGATOIREMENT une constante.
En conséquence toutes les lignes que tu indiques sont des non-sens.

Il manque une variable que j'appelerais "lecture".
lecture = analogRead(APd);
maintenant écrire :
if (lecture == 0)
aura du sens.

Sache aussi que lorsque quelqu'un marque "urgent" dans son titre ca donne plein d'envies sauf celle de répondre vite au topic...

Bonjour ! Je suis désolée, je n’avais pas vu que les e-mails n’étaient pas cochés … Du coup vu que je n’ai pas reçu de mail me disant que j’avais eu des réponses, je n’ai pas pensé à vérifier via le site directement ! Du coup mon programme c’est :

bool pouceIndex = LOW; 
bool indexMajeur = LOW;
bool majeurAnnulaire = LOW;
bool annulaireAuriculaire = LOW; 
int APd = A10;
int APg = A11;

void setup() {
pinMode(APd, INPUT); 
pinMode(APg, INPUT);
pinMode(pouceIndex, OUTPUT);
pinMode(indexMajeur, OUTPUT);
pinMode(majeurAnnulaire, OUTPUT);
pinMode(annulaireAuriculaire, OUTPUT);
}

void loop() {
analogRead(APd);
if (APd == 0)
{
digitalWrite(pouceIndex, HIGH);
digitalWrite(indexMajeur, HIGH);
digitalWrite(majeurAnnulaire, HIGH);
digitalWrite(annulaireAuriculaire, HIGH);
}
else if (APd < 339)
{
digitalWrite(pouceIndex, LOW);
digitalWrite(indexMajeur, HIGH);
digitalWrite(majeurAnnulaire, HIGH);
digitalWrite(annulaireAuriculaire, HIGH);

(Enfin c’est le début mais la suite est toujours pareil sauf les HIGH et les LOW).
Du coup, à la place de analogRead(APd) il faut que je mette analogRead(A10), c’est ça ?
Et je n’ai pas compris le “lecture” pourquoi il est là du coup ?

Et encore désolée !!
Et mon matériel c’est : une carte Arduino Méga2560 et APd sont des attaches parisiennes pour la main droite, et APg pour la main gauche (pour créer mon propre capteur).

En gros notre projet est de faire des gants traducteurs pour sourds-muets. A savoir, on est 4 dans le groupes, et je m’occupe de la partie “contact des doigts” donc pour savoir quels doigts se touchent afin de pouvoir traduire les mots.

Bonjour,

Je t'engage à (re)lire le message de 68tjs

Du coup j'ai modifier dans le même poste que le précédent pour éviter la répétition.

Pour en remettre une couche sur ce qu'à écrit 68tjs, je t'invite à consulter la doc de analogRead et analogWrite, mais tu devrais commencer par le commencement et consulter le tuto d'eskimon

Mais je les ai consulté ! Je n'arrive juste pas à comprendre à quoi sert le "val" ou "lecture", et donc je demande .. Fin je voudrais que ça stock directement dans APd ou APg, je fais comment dans ce cas là ? APd = analogRead(A10) ?

Oui, si c'est bien l'entrée a10 que tu veux lire

Eh bien voilà. Tu vois que tu peux quand tu veux .
Je suppose que si tu as écrit analogRead(10) c'est que tu n'as pas une carte UNO qui n'a que 6 entrée analogiques.
Ce serait bien que tu indiques le matériel que tu utilises.
C'est d'ailleurs demandé dans le message de bienvenue que tu n'as pas lu et que tu devrais lire : c'est des conseils pour avoir des réponses plus efficaces, dommage de s'en priver.

PS grillé par kamill

J'ai préciser le matériel que j'utilise, dans le deuxième poste que j'ai mis, en dessous de mon programme. J'ai marquer que c'est une carte Arduino Méga 2560. Mais du coup dans analogRead, je dois mettre A10 ou juste 10 ? Parce que si je mets juste 10 ça peut être la sortie digitale aussi, non ?

Les deux fonctionnent car il y a des détecteurs anti-conneries dans les fonctions arduino.
Mais ce n'est pas une raison pour faire n'importe quoi.

Je te conseille d'utiliser "10" pour une I/O digitale et "A10" pour une entrée analogique.
Quand tu relira ton code dans une ou 2 semaines tu verra que ce sera plus facile pour reprendre ce que tu as fait..

D'accord merci !

Quand tu écrits :
int APd = A10;
int APg = A11;

tu déclares des variable APd et APg sur 2 octets (16bits) qui ont comme valeurs initiales une valeur bizarre sauf si c’était en Hexa.

Si tu veux que APd et APg soit des étiquettes équivalentes à A10 et A11, il faut déclarer des constantes comme déjà dit précédemment, soit :

const int APd = A10;
const int APg = A11;

dans ce cas, lors de la lecture de la broche il faut coder

mavariable=analogRead(APd);

Pour rebondir sur un post voisin : tu as raison sur le fond mais le compilateur optimise dans ton dos.

Néanmoins avoir à l'esprit de bien choisir la bonne taille pour les variable est important pour économiser la mémoire qui est limité dans un micro-contrôleur.

Une autre possibilité dans ce cas est d'utiliser des "define" :
#define APd 10
Le define remplace dans le code transmis au compilateur APd par 10

Pour choisir les tailles de mémoire adaptées on peut aussi utiliser :
int8_t entier signé sur 1 octet
uint8_t entier non signé sur 1 octet
int16_t entier signé sur 2 octets
uint16_t entier non signé sur 2 octets
int32_t entier signé sur 4 octets
uint32_t entier non signé sur 4 octets

J'ai mis la broche où mes variables sont branchées, mais pas de valeur initiale par contre. C'est juste les numéro de la carte méga qui a 16 entrées analoiques.

Et au lieu d'écrire "mavariable=analoggRead(APd); je peux écrire APd=analogRead(A10) non ? Comme ça, ça m'évite de rajouter encore une autre variable, et je veux que le résultat soit stocké dans APd ou APg donc ça devrait marcher normalement, enfin de ce que j'ai cru comprendre des messages précédents du moins ^^'

oui!
Mais tu supprimes les affectations

int APd = A10;
int APg = A11;

qui sèment le trouble et tu déclares simplement

int APd;
int APg;

J’dois bosser sur 2 octets, c’est pour ça que j’ai mis des “int” partout. Et pis il m’en faut dans le “gros programme” car ça, ce n’est qu’un sous programme introduit dans le gros qui gère tout notre projet.
Après normalement je n’ai pas de soucis au niveau des octets signés ou non.

Bon bah du coup j'ai fais les modifications ce matin, et ça marche nickel ! Merci pour votre aide !!