Problème avec if/else

Bonjour.

Je suis automaticien, j'ai toujours eu l'habitude de programmer en ladder ou en grafcet.
et là je débute sur Arduino, mais le langage C me parait vraiment compliqué à côté des autres langages que je connais.

Pour mon premier programme, j'ai fait un montage avec 2 LED et un bouton poussoir.

Je voudrais qu'au repos il y ai une LED allumée et l'autre éteinte.
Et lorsque j’appuie sur le bouton poussoir, l'état des LED s'inverse.

J'ai don fait un if et else.

Mais le compilateur ne veut pas prendre mon else et il me dit qu'il n'y a pas de if, alors que je l'ai bien mis.

Je ne vois pas où peut être mon erreur.

Voici le code :

int ledv = 13;      // la ledv est connectée à la broche 13
int ledb = 12;      // la ledb est connectée à la broche 12
int bouton = 8;    // un bouton poussoir est connecté à la broche 8
void setup(void) 
{
  // put your setup code here, to run once:

pinMode (ledv,OUTPUT);  // la led est connectée à une sortie
pinMode (ledb,OUTPUT);  // la ledb est connectée à une sortie
pinMode (bouton,INPUT_PULLUP); //Le bouton est connecté à une entrée.

}

void loop(void) 
{
  // put your main code here, to run repeatedly:

  int val = digitalRead(bouton);   
 {
 if (val == HIGH);  // Si val est à 1
 {
 digitalWrite (ledv,LOW); // j’éteins ledv
 digitalWrite (ledb,HIGH); // j'allume ledb
 }
else
  {
    digitalWrite (ledv,HIGH); // j’allume ledv
    digitalWrite (ledb,LOW); // j'éteind ledb
  }
 }
}

Pouvez-vous me dire ce qu'il ne va pas ?

Merci

La syntaxe est impitoyable :slight_smile:

if (val == HIGH)[color=red];[/color]

Le point virgule a terminé votre if car une expression vide est une expression valide. vous avez donc écrit si le bouton n’est pas appuyé ne rien faire

Il y a une paire d’accolades {} de trop (inutile) autour du if

Vous avez oublié de mettre les LEDs à leur état initial dans le setup() (enfin une des 2 car par défaut elles seront toutes les 2 éteintes)

Merci JML pour votre aide.

Les accolades en trop je ne les avait pas mises au début, mais comme le else ne voyait pas mon if, je pensais que c'était parce que j'en avais pas mis.
Pareil pour le point virgule.