problème de débutant

Bonjour,

Je débute sur arduino et afin de réaliser mon projet actuelle (une horloge de type Qlocktwo https://qlocktwo.com/fr/), j'essaye de faire un montage simple avec un bouton poussoir.

Le montage que je veux faire pour le moment doit se dérouler, si il marche, de la manière suivante:
3 leds (a1,a2,a3) clignote a tout de rôle jusqu'à se que je presse le bouton poussoir; une fois le bouton poussoir utilisé 3 autres leds (b1,b2,b3) clignote a tout de rôle (les led a1,a2 et a3 arrête de clignoter) jusqu'à se que je ré appuie sur le bouton où alors 3 autres leds (c1;c2;c3) clignotent à la place des leds b. Lorsque je rappuie sur le bouton les leds a s'allume etc...

Le problème est que j'ai un message d'erreur qui s'affiche lorsque je vérifie le code:

bouton_123:32: error: expected ')' before ';' token
.
.
.
bouton_123:61: error: expected ';' before ')' token

exit status 1
expected ')' before ';' token

J'imagine donc qu'il s'agit d'un problème de parenthèse ou de crochet mais ne comprends pas d'où cela peut-il venir (j'ai vérifier le nombre de parenthèse et de crochets) mais surtout, quel est le problème?

Question bonus: y'a une fonction qui permet de définir des instructions qui permet d'éviter de faire un copier coller sur arduino?? (la Fonction "def" sur python)

Voici mon code

int bt=2;     //bt pour mon bouton
int compteur;

int a1=13;   //les leds 
int a2=12;
int a3=11;
int b1=10;
int b2=9;
int b3=8;
int c1=7;
int c2=6;
int c3=5;

void setup() {
pinMode (a1,OUTPUT);pinMode (a2,OUTPUT);pinMode (a3,OUTPUT);
pinMode (b1,OUTPUT);pinMode (b2,OUTPUT);pinMode (b3,OUTPUT);
pinMode (c1,OUTPUT);pinMode (c2,OUTPUT);pinMode (c3,OUTPUT);
pinMode(bt,INPUT);
compteur=0;
}

void loop() 
{
  boolean pos_bt = digitalRead(bt);
  if(pos_bt==HIGH)
  {compteur=compteur+1;}
  if (compteur==3)
  {compteur=0;}
  
if (compteur==0)
  {digitalWrite(a1;HIGH);
  delay(200);
  digitalWrite(a1;LOW);
  digitalWrite(a2;HIGH);
  delay(200);
  digitalWrite(a2;LOW);
  digitalWrite(a3;HIGH);
  delay(200);
  digitalWrite(a3;LOW);}
    else {
      if (compteur==1)
      {digitalWrite(b1;HIGH);
      delay(200);
      digitalWrite(b1;LOW);
      digitalWrite(b2;HIGH);
      delay(200);
      digitalWrite(b2;LOW);
      digitalWrite(b3;HIGH);
      delay(200);
      digitalWrite(b3;LOW);
      }
        else {digitalWrite(c1;HIGH);
        delay(200);
        digitalWrite(c1;LOW);
        digitalWrite(c2;HIGH);
        delay(200);
        digitalWrite(c2;LOW);
        digitalWrite(c3;HIGH);
        delay(200);
        digitalWrite(c3;LOW); 
        } 
      }
 
  }

Il y a une erreur dans tous tes appels à la fonction digitalWrite()

Tu écris

digitalWrite(a1;HIGH);

Alors qu'il faudrait

digitalWrite(a1, HIGH);

, à la place de ; entre les parenthèses

Bonsoir

Vois içi la syntaxe de digitalWrite() .

On sépare broche et valeur par une virgule, pas un point virgule.

Tes clignotements sont tous les mêmes, tu peux en faire une fonction (<-- lien ici) comme en Python, par exemple :

void cligno (int x,int y,int z)
      {
      digitalWrite(x;HIGH);
      delay(200);
      digitalWrite(x;LOW);
      digitalWrite(y;HIGH);
      delay(200);
      digitalWrite(y;LOW);
      digitalWrite(z;HIGH);
      delay(200);
      digitalWrite(z;LOW);
      }

et tu appelles cette fonction aux endroits où tu en as besoin, avec les bons arguments. Tu peux même passer la durée (le 200) en argument aussi pour la customiser encore plus.

Mais si tu connais Python, tu feras facilement le passage vers C.

Merci à tous pour votre réponse rapide !

Je me doutais que mon erreur était quelque chose de basique comme ça mais la surprise n'en ai pas moins forte et l'erreur n'en ai pas moins stupide.

Merci pour le tuto fonction ! Je ne savais pas se qu'était le void et les tutos que je lis vont m'en parler "un peu plus tard". Cela va m'aider grandement.

Void c'est juste pour dire "vide".
Si la fonction ne renvoie pas d'argument on la déclare 'void'

void fonction (arguments)

Si elle n'a pas d'argument mais renvoie par exemple un int on fera :

int fonction (void)