probleme erreur code

bonjour a tous

je cherche a résoudre mon problème erreur

si une âme charitable veux bien m aider

// Les constantes ne changent pas durant le programme.
// Utilisée ici pour définir la numéro de la broche :

const int  findecourse = 8;     // crée un identifiant pour la broche utilisée avec le bouton poussoir
const int led = 13;       // crée un identifiant pour la broche utilisée avec la LED
const int programation = 12;  // cree un identifiant pour la broche utilisee avec le switch de programation
const int ouverture = 2;  // n° broche pour contacteur ouverture
const int fermeture = 3;  // n° broche pour contacteur fermeture
const int moteurouverture = 4;  // n° broche relais moteur ouverture
const int moteurfermeture = 5;  // n° broche relais moteur fermeture
  
  


// Les variables sont modifiées au cours du programme
int findecoursePushCounter = 0;   // variable pour le comptage du nombre d'appuis sur le bouton poussoir
int findecourseState = 0;         //Variable pour l'état actuel du bouton poussoir
int lastFindecourseState = 0;     // Variable pour l'état précédent du bouton poussoir
int etatProgramation; //etat de la programation
int compteur = 0;  // un compteur
int etatMoteurouverture; // etat actuel du relais ouverture
int etatMoteurfermeture;  // etat actuel du relais fermeture
int etatFindecourse;  // etat actuel du capteur de fin de course
int etatCompteur; // etat actuel du compteur
int memoire = LOW; 



void setup() 
{  
  // met la broche en entrée
  pinMode(findecourse, INPUT);
  //met la broche en entree
  pinMode(programation, INPUT);
 // met la broche en sortie
  pinMode(led, OUTPUT); 
 // met la broche en sortie
  pinMode(moteurouverture, OUTPUT);
 // met la broche en sortie
  pinMode(moteurfermeture, OUTPUT);
 // met ele broche en entrée
  pinMode(ouverture, INPUT);
 // met la broche en entrée
  pinMode(fermeture, INPUT);
  // initialise la communication série
  // Attention : utiliser la meme vitesse de communication pour le Terminal Série
  Serial.begin(9600);

}

void loop() 
{
  // lit l'état actuel du bouton poussoir et le mémorise dans la variable
  findecourseState = digitalRead(findecourse);
  if ((etatProgramation = HIGH) && (etatFindecourse == HIGH))
  {
    // on incremente le compteur
    compteur++;
  }

  // on enregistre le compteur
  memoire = etatCompteur;
}{

  // etat actuel du fin de course et memorise dans la variable
  findecourseState = digitalRead(findecourse);
  // compare l'état actuel du fin de course à l'état précédent mémorisé
  if (findecourseState != lastFindecourseState); {
    // si l'état du fin de course a changé et est HAUT et que la fermeture est haut, on incrémente la variable de comptage
  if ((findecourseState == HIGH) && (fermeture == HIGH));{
      // si l'état actuel du bouton est HAUT
      // il est passé de BAS  à HAUT
      findecoursePushCounter++;
      
      // affiche les messages sur le PC
      Serial.println("ALLUME"); 
      Serial.print("nombre d'appuis:  ");
      Serial.println(button1PushCounter, DEC); // affiche la valeur au format décimal
    }
    else {
      // si le bouton courant est BAS
      // il est passé de HAUT à BAS :
      Serial.println("ETEINT");
    }
    // memorise l etat courant du fin de course
    // pour les prochain passages de la boucle loop
    lastFindecourseState = findecourseState;
  }
{
    //si etat de la fin de course a changer et est haut et que l ouverture est haut, on decremente la variable de comptage
      if ((findecourseState == HIGH) && (ouverture == HIGH)){
        // si l etat actuel de la fin de course est haut 
        //il est passe de bas a haut
        findecoursePushcounter--;
        
      // affiche les messages sur le PC
      Serial.println("ALLUME"); 
      Serial.print("nombre d'appuis:  ");
      Serial.println(button1PushCounter, DEC); // affiche la valeur au format décimal
      }
    else {
      // si le bouton courant est BAS
      // il est passé de HAUT à BAS :
      Serial.println("ETEINT");
    }
    // memorise l etat courant du fin de course
    // pour les prochain passages de la boucle loop
    lastFindecourseState = findecourseState;
}{
    // si ouverture a l etat haut 
    // mettre le relais ouverture a l eta haut
if (ouverture == HIGH);
digitaWrite(relaisouverture, HIGH); // relais a l etat haut
}{
  // si fermeture a l etat haut 
  // mettre relais fermeture a l etat haut
  if (fermeture == HIGH);
  digitalWrite (relaisfermeture, HIGH);}{
  
  // si ouverture sur haut 
  // relais fermeture sur bas
  if (ouverture == HIGH);
  digitalWrite (relaisfermeture, LOW);}{
  
  // si fermeture sur haut 
  // mettre relais ouverture sur bas
  if (fermeture == high);
  digitalWrite (relaisouverture, LOW);}{
  
  //si ouverture a l etat haut et que findecoursepushcounter est egal ou supperieur au compteur enregistre en programation
  //arrete le relais ouverture
  if ((ouverture == HIGH) && (findecoursePushCounter >= compteur))
    digitalWrite(relaisouverture == LOW);}{
  
  // si fermeture a l etat haut et que findecoursepushcounter est egal ou inferieur a "0"
  // arretée relais fermeture
  if ((fermeture == HIGH) && (findecoursePushCounter <= 0))
    digitalWrite (relaisfermeture == LOW); }
{
  // si fin de course a l etat haut allumer la led 
  // sinon eteindre la led
  if (findecourse == HIGH),
  digitalWrite(led, HIGH);
} else {//sinon
  digitalWrite(led, LOW);
}

erreur : 65:2: error: expected unqualified-id before ‘{’ token

Tu as une double accolade en plein milieu et le reste n'est forcement pas compris par le compilateur du coup.

Une accolade qui n'est pas à sa place ligne 65.
D'ailleurs il y en a d'autres bizarrement placées un peu partout dan ton code.

merci
mai je doit la retirer ou la deplacer
car je suis novice dans la programation et j ai encore du mal avec les acolade

Bonjour,

Il y a plein d’erreurs comme dit par JLuc et fdufnews.
J’en ai corrigé quelques une.
A toi de trouver la dernière ‘variable non déclarée’.
Cela ne présume pas du bon fonctionnement du programme.

// Les constantes ne changent pas durant le programme.
// Utilisée ici pour définir la numéro de la broche :

const int  findecourse = 8;     // crée un identifiant pour la broche utilisée avec le bouton poussoir
const int led = 13;       // crée un identifiant pour la broche utilisée avec la LED
const int programation = 12;  // cree un identifiant pour la broche utilisee avec le switch de programation
const int ouverture = 2;  // n° broche pour contacteur ouverture
const int fermeture = 3;  // n° broche pour contacteur fermeture
const int moteurouverture = 4;  // n° broche relais moteur ouverture
const int moteurfermeture = 5;  // n° broche relais moteur fermeture
  
  


// Les variables sont modifiées au cours du programme
int findecoursePushCounter = 0;   // variable pour le comptage du nombre d'appuis sur le bouton poussoir
int findecourseState = 0;         //Variable pour l'état actuel du bouton poussoir
int lastFindecourseState = 0;     // Variable pour l'état précédent du bouton poussoir
int etatProgramation; //etat de la programation
int compteur = 0;  // un compteur
int etatMoteurouverture; // etat actuel du relais ouverture
int etatMoteurfermeture;  // etat actuel du relais fermeture
int etatFindecourse;  // etat actuel du capteur de fin de course
int etatCompteur; // etat actuel du compteur
int memoire = LOW; 



void setup() 
{  
  // met la broche en entrée
  pinMode(findecourse, INPUT);
  //met la broche en entree
  pinMode(programation, INPUT);
 // met la broche en sortie
  pinMode(led, OUTPUT); 
 // met la broche en sortie
  pinMode(moteurouverture, OUTPUT);
 // met la broche en sortie
  pinMode(moteurfermeture, OUTPUT);
 // met ele broche en entrée
  pinMode(ouverture, INPUT);
 // met la broche en entrée
  pinMode(fermeture, INPUT);
  // initialise la communication série
  // Attention : utiliser la meme vitesse de communication pour le Terminal Série
  Serial.begin(9600);

}

void loop() 
{
  // lit l'état actuel du bouton poussoir et le mémorise dans la variable
  findecourseState = digitalRead(findecourse);
  if ((etatProgramation == HIGH) && (etatFindecourse == HIGH))
  {
    // on incremente le compteur
    compteur++;
  }

  // on enregistre le compteur
  memoire = etatCompteur;


  // etat actuel du fin de course et memorise dans la variable
  findecourseState = digitalRead(findecourse);
  // compare l'état actuel du fin de course à l'état précédent mémorisé
  if (findecourseState != lastFindecourseState); {
    // si l'état du fin de course a changé et est HAUT et que la fermeture est haut, on incrémente la variable de comptage
  if ((findecourseState == HIGH) && (fermeture == HIGH));{
      // si l'état actuel du bouton est HAUT
      // il est passé de BAS  à HAUT
      findecoursePushCounter++;
      
      // affiche les messages sur le PC
      Serial.println("ALLUME"); 
      Serial.print("nombre d'appuis:  ");
      Serial.println(button1PushCounter, DEC); // affiche la valeur au format décimal
    }
    else {
      // si le bouton courant est BAS
      // il est passé de HAUT à BAS :
      Serial.println("ETEINT");
    }
    // memorise l etat courant du fin de course
    // pour les prochain passages de la boucle loop
    lastFindecourseState = findecourseState;
  }

    //si etat de la fin de course a changer et est haut et que l ouverture est haut, on decremente la variable de comptage
      if ((findecourseState == HIGH) && (ouverture == HIGH)){
        // si l etat actuel de la fin de course est haut 
        //il est passe de bas a haut
        findecoursePushcounter--;
        
      // affiche les messages sur le PC
      Serial.println("ALLUME"); 
      Serial.print("nombre d'appuis:  ");
      Serial.println(button1PushCounter, DEC); // affiche la valeur au format décimal
      }
    else {
      // si le bouton courant est BAS
      // il est passé de HAUT à BAS :
      Serial.println("ETEINT");
    }
    // memorise l etat courant du fin de course
    // pour les prochain passages de la boucle loop
    lastFindecourseState = findecourseState;

    // si ouverture a l etat haut 
    // mettre le relais ouverture a l eta haut
if (ouverture == HIGH);
digitaWrite(relaisouverture, HIGH); // relais a l etat haut

  // si fermeture a l etat haut 
  // mettre relais fermeture a l etat haut
  if (fermeture == HIGH);
  digitalWrite (relaisfermeture, HIGH);}{
  
  // si ouverture sur haut 
  // relais fermeture sur bas
  if (ouverture == HIGH);
  digitalWrite (relaisfermeture, LOW);}{
  
  // si fermeture sur haut 
  // mettre relais ouverture sur bas
  if (fermeture == high);
  digitalWrite (relaisouverture, LOW);}{
  
  //si ouverture a l etat haut et que findecoursepushcounter est egal ou supperieur au compteur enregistre en programation
  //arrete le relais ouverture
  if ((ouverture == HIGH) && (findecoursePushCounter >= compteur))
    digitalWrite(relaisouverture == LOW);}{
  
  // si fermeture a l etat haut et que findecoursepushcounter est egal ou inferieur a "0"
  // arretée relais fermeture
  if ((fermeture == HIGH) && (findecoursePushCounter <= 0))
    digitalWrite (relaisfermeture == LOW); 

  // si fin de course a l etat haut allumer la led 
  // sinon eteindre la led
  if (findecourse == HIGH):
  digitalWrite(led, HIGH);
 else //sinon
  digitalWrite(led, LOW);
    }

Bonjour,

Tu dois revoir complètement ton programme car ce n’est pas la seule erreur.

  • tu ouvres des accolades sans raison
  • tu mets des ; à la fin des if donc le if ne sert à rien, par exemple
 if (findecourseState != lastFindecourseState); {


Les {} sont utilisées pour regrouper plusieurs instructions qui seront exécutées par exemple dans une condition

j ai corriger quelque petite chose

qu en pensez vous

// Les constantes ne changent pas durant le programme.
// Utilisée ici pour définir la numéro de la broche :

const int  findecourse = 8;     // crée un identifiant pour la broche utilisée avec le bouton poussoir
const int led = 13;       // crée un identifiant pour la broche utilisée avec la LED
const int programation = 12;  // cree un identifiant pour la broche utilisee avec le switch de programation
const int ouverture = 2;  // n° broche pour contacteur ouverture
const int fermeture = 3;  // n° broche pour contacteur fermeture
const int moteurouverture = 4;  // n° broche relais moteur ouverture
const int moteurfermeture = 5;  // n° broche relais moteur fermeture
  
  


// Les variables sont modifiées au cours du programme
int findecoursePushCounter = 0;   // variable pour le comptage du nombre d'appuis sur le bouton poussoir
int findecourseState = 0;         //Variable pour l'état actuel du bouton poussoir
int lastFindecourseState = 0;     // Variable pour l'état précédent du bouton poussoir
int etatProgramation; //etat de la programation
int compteur = 0;  // un compteur
int etatMoteurouverture; // etat actuel du relais ouverture
int etatMoteurfermeture;  // etat actuel du relais fermeture
int etatFindecourse;  // etat actuel du capteur de fin de course
int etatCompteur; // etat actuel du compteur
int memoire = LOW; 



void setup() 
{  
  // met la broche en entrée
  pinMode(findecourse, INPUT);
  //met la broche en entree
  pinMode(programation, INPUT);
 // met la broche en sortie
  pinMode(led, OUTPUT); 
 // met la broche en sortie
  pinMode(moteurouverture, OUTPUT);
 // met la broche en sortie
  pinMode(moteurfermeture, OUTPUT);
 // met ele broche en entrée
  pinMode(ouverture, INPUT);
 // met la broche en entrée
  pinMode(fermeture, INPUT);
  // initialise la communication série
  // Attention : utiliser la meme vitesse de communication pour le Terminal Série
  Serial.begin(9600);

}

void loop() 
{
  // lit l'état actuel du bouton poussoir et le mémorise dans la variable
  findecourseState = digitalRead(findecourse);
  if ((etatProgramation == HIGH) && (etatFindecourse == HIGH))
  {
    // on incremente le compteur
    compteur++;
  }

  // on enregistre le compteur
  memoire = etatCompteur;


  // etat actuel du fin de course et memorise dans la variable
  findecourseState = digitalRead(findecourse);
  // compare l'état actuel du fin de course à l'état précédent mémorisé
  if (findecourseState != lastFindecourseState) {
    // si l'état du fin de course a changé et est HAUT et que la fermeture est haut, on incrémente la variable de comptage
  if ((findecourseState == HIGH) && (fermeture == HIGH)){
      // si l'état actuel du bouton est HAUT
      // il est passé de BAS  à HAUT
      findecoursePushCounter++;
      
      // affiche les messages sur le PC
      Serial.println("ALLUME"); 
      Serial.print("nombre d'appuis:  ");
      Serial.println(findecoursePushCounter, DEC); // affiche la valeur au format décimal
      }
else {
      // si le bouton courant est BAS
      // il est passé de HAUT à BAS :
      Serial.println("ETEINT");
    }
    // memorise l etat courant du fin de course
    // pour les prochain passages de la boucle loop
    lastFindecourseState = findecourseState;
  }

    //si etat de la fin de course a changer et est haut et que l ouverture est haut, on decremente la variable de comptage
      if ((findecourseState == HIGH) && (ouverture == HIGH)){
        // si l etat actuel de la fin de course est haut 
        //il est passe de bas a haut
        findecoursePushCounter--;
        
      // affiche les messages sur le PC
      Serial.println("ALLUME"); 
      Serial.print("nombre d'appuis:  ");
      Serial.println(findecoursePushCounter, DEC); // affiche la valeur au format décimal
      }
    else 
      // si le bouton courant est BAS
      // il est passé de HAUT à BAS :
      Serial.println("ETEINT");
    }
    // memorise l etat courant du fin de course
    // pour les prochain passages de la boucle loop
    lastFindecourseState = findecourseState ;

    // si ouverture a l etat haut 
    // mettre le relais ouverture a l eta haut
if (ouverture == HIGH):
digitalWrite(moteurouverture, HIGH); // relais a l etat haut

  // si fermeture a l etat haut 
  // mettre relais fermeture a l etat haut
  if (fermeture == HIGH):
  digitalWrite (moteurfermeture, HIGH);}{
  
  // si ouverture sur haut 
  // relais fermeture sur bas
  if (ouverture == HIGH):
  digitalWrite (moteurfermeture, LOW);}{
  
  // si fermeture sur haut 
  // mettre relais ouverture sur bas
  if (fermeture == high):
  digitalWrite (moteurouverture, LOW);}{
  
  //si ouverture a l etat haut et que findecoursepushcounter est egal ou supperieur au compteur enregistre en programation
  //arrete le relais ouverture
  if ((ouverture == HIGH) && (findecoursePushCounter >= compteur)):
    digitalWrite(moteurouverture == LOW);}{
  
  // si fermeture a l etat haut et que findecoursepushcounter est egal ou inferieur a "0"
  // arretée relais fermeture
  if ((fermeture == HIGH) && (findecoursePushCounter <= 0)):
    digitalWrite (moteurfermeture == LOW); 

  // si fin de course a l etat haut allumer la led 
  // sinon eteindre la led
  if (findecourse == HIGH):
  digitalWrite(led, HIGH);
 else //sinon
  digitalWrite(led, LOW);
    }

mai j ai d autre erreur

TheUnnamedCircuit:108: error: expected constructor, destructor, or type conversion before '=' token
TheUnnamedCircuit:112: error: expected unqualified-id before 'if'
TheUnnamedCircuit:117: error: expected unqualified-id before 'if'
TheUnnamedCircuit:118: error: expected declaration before '}' token

bonjour, j’avais un peut de temps, a tester, je n’ais pas d’arduino sous la main.
Cdt.
Marcus.

// Les constantes ne changent pas durant le programme.
// Utilisée ici pour définir la numéro de la broche :

const int  findecourse = 8;     // crée un identifiant pour la broche utilisée avec le bouton poussoir
const int led = 13;       // crée un identifiant pour la broche utilisée avec la LED
const int programation = 12;  // cree un identifiant pour la broche utilisee avec le switch de programation
const int ouverture = 2;  // n° broche pour contacteur ouverture
const int fermeture = 3;  // n° broche pour contacteur fermeture
const int moteurouverture = 4;  // n° broche relais moteur ouverture
const int moteurfermeture = 5;  // n° broche relais moteur fermeture
  
  


// Les variables sont modifiées au cours du programme
int findecoursePushCounter = 0;   // variable pour le comptage du nombre d'appuis sur le bouton poussoir
int findecourseState = 0;         //Variable pour l'état actuel du bouton poussoir
int lastFindecourseState = 0;     // Variable pour l'état précédent du bouton poussoir
int etatProgramation; //etat de la programation
int compteur = 0;  // un compteur
int etatMoteurouverture; // etat actuel du relais ouverture
int etatMoteurfermeture;  // etat actuel du relais fermeture
int etatFindecourse;  // etat actuel du capteur de fin de course
int etatCompteur; // etat actuel du compteur
int memoire = LOW; 
int button1PushCounter;
int findecoursePushcounter;
boolean relaisouverture;
boolean relaisfermeture;
void setup() 
{  
  // met la broche en entrée
  pinMode(findecourse, INPUT);
  //met la broche en entree
  pinMode(programation, INPUT);
 // met la broche en sortie
  pinMode(led, OUTPUT); 
 // met la broche en sortie
  pinMode(moteurouverture, OUTPUT);
 // met la broche en sortie
  pinMode(moteurfermeture, OUTPUT);
 // met ele broche en entrée
  pinMode(ouverture, INPUT);
 // met la broche en entrée
  pinMode(fermeture, INPUT);
  // initialise la communication série
  // Attention : utiliser la meme vitesse de communication pour le Terminal Série
  Serial.begin(9600);

}

void loop() 
{
  // lit l'état actuel du bouton poussoir et le mémorise dans la variable
  findecourseState = digitalRead(findecourse);
  if ((etatProgramation == HIGH) && (etatFindecourse == HIGH))
  {
    // on incremente le compteur
    compteur++;
  }

  // on enregistre le compteur
  memoire = etatCompteur;


  // etat actuel du fin de course et memorise dans la variable
  findecourseState = digitalRead(findecourse);
  // compare l'état actuel du fin de course à l'état précédent mémorisé
  if (findecourseState != lastFindecourseState)
  {
    // si l'état du fin de course a changé et est HAUT et que la fermeture est haut, on incrémente la variable de comptage
  if ((findecourseState == HIGH) && (fermeture == HIGH))
  {
      // si l'état actuel du bouton est HAUT
      // il est passé de BAS  à HAUT
      findecoursePushCounter++;
      
      // affiche les messages sur le PC
      Serial.println("ALLUME"); 
      Serial.print("nombre d'appuis:  ");
      Serial.println(button1PushCounter, DEC); // affiche la valeur au format décimal
    }
    else
    {
      // si le bouton courant est BAS
      // il est passé de HAUT à BAS :
      Serial.println("ETEINT");
    }
    // memorise l etat courant du fin de course
    // pour les prochain passages de la boucle loop
    lastFindecourseState = findecourseState;
  }

    //si etat de la fin de course a changer et est haut et que l ouverture est haut, on decremente la variable de comptage
      if ((findecourseState == HIGH) && (ouverture == HIGH))
      {
        // si l etat actuel de la fin de course est haut 
        //il est passe de bas a haut
        findecoursePushcounter--;
        
      // affiche les messages sur le PC
      Serial.println("ALLUME"); 
      Serial.print("nombre d'appuis:  ");
      Serial.println(button1PushCounter, DEC); // affiche la valeur au format décimal
      }
    else 
    {
      // si le bouton courant est BAS
      // il est passé de HAUT à BAS :
      Serial.println("ETEINT");
    }
    // memorise l etat courant du fin de course
    // pour les prochain passages de la boucle loop
    lastFindecourseState = findecourseState;

    // si ouverture a l etat haut 
    // mettre le relais ouverture a l eta haut
if (ouverture == HIGH)
 {
digitalWrite(relaisouverture, HIGH); // relais a l etat haut
 }
  // si fermeture a l etat haut 
  // mettre relais fermeture a l etat haut
  if (fermeture == HIGH)
   {
  digitalWrite (relaisfermeture, HIGH);
   }
  
  // si ouverture sur haut 
  // relais fermeture sur bas
  if (ouverture == HIGH)
   {
  digitalWrite (relaisfermeture, LOW);
   }
  // si fermeture sur haut 
  // mettre relais ouverture sur bas
  if (fermeture == HIGH)
   {
  digitalWrite (relaisouverture, LOW);
   }
  //si ouverture a l etat haut et que findecoursepushcounter est egal ou supperieur au compteur enregistre en programation
  //arrete le relais ouverture
  if ((ouverture == HIGH) && (findecoursePushCounter >= compteur))
    {
      digitalWrite(relaisouverture, LOW);
    }
  
  // si fermeture a l etat haut et que findecoursepushcounter est egal ou inferieur a "0"
  // arretée relais fermeture
  if ((fermeture == HIGH) && (findecoursePushCounter <= 0))
   { 
    digitalWrite(relaisfermeture, LOW);
   }

  // si fin de course a l etat haut allumer la led 
  // sinon eteindre la led
  if (findecourse == HIGH)
  {
  digitalWrite(led, HIGH);
  }
 else //sinon
  digitalWrite(led, LOW);
    }

peut tu me dire pourquoi tu a ajouter boolean dans le variable

désolé si la question peut paraître stupide mai je le redit je debute

BOOLEAN:
DESCRIPTION
Une variable de type boolean qui ne peut prendre que deux valeurs : true ou false, VRAI ou FAUX, 1 ou 0, HIGH ou LOW (toutes ces façons de le dire sont équivalentes).
Cdt.
Marcus.

bonjour
je voulais savoir si je devait modifier ma déclaration moteurouverture afin de la nommé relais ouverture comme pour boolean
cdt