Erreur de compilation

Bonjour à tous,

Lorsque je veux compiler un programme, j'ai l'erreur suivante:

ethylo:18: error: expected initializer before 'void'
ethylo:19: error: expected initializer before 'void'
ethylo.ino: In function 'void loop()':
ethylo:56: error: 'val' was not declared in this scope
ethylo:65: error: 'val' cannot appear in a constant-expression
ethylo:69: error: 'val' cannot appear in a constant-expression
ethylo:69: error: 'val' cannot appear in a constant-expression
ethylo:75: error: 'val' cannot appear in a constant-expression
ethylo:75: error: 'val' cannot appear in a constant-expression
ethylo:82: error: 'val' cannot appear in a constant-expression
ethylo:82: error: 'val' cannot appear in a constant-expression
ethylo:90: error: 'val' cannot appear in a constant-expression
ethylo:90: error: 'val' cannot appear in a constant-expression
ethylo:99: error: 'val' cannot appear in a constant-expression
ethylo:99: error: 'val' cannot appear in a constant-expression
ethylo:109: error: 'val' cannot appear in a constant-expression
ethylo:109: error: 'val' cannot appear in a constant-expression
ethylo:120: error: 'val' cannot appear in a constant-expression
ethylo:120: error: 'val' cannot appear in a constant-expression
ethylo:132: error: 'val' cannot appear in a constant-expression
ethylo:132: error: 'val' cannot appear in a constant-expression
ethylo:145: error: 'val' cannot appear in a constant-expression

Et voici le code qui va avec:

#define LED1 20
#define LED2 21
#define LED3 22
#define LED4 23
#define LED5 24
#define LED6 25
#define LED7 26
#define LED8 27
#define LED9 28
#define LED10 29

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

int val

void setup()
{

  lcd.begin(16, 2);
  lcd.print("Ethylotest V1.1");
  delay(15000);
  lcd.clear();
  
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
  pinMode(LED3, OUTPUT);
  pinMode(LED4, OUTPUT);
  pinMode(LED5, OUTPUT);
  pinMode(LED6, OUTPUT);
  pinMode(LED7, OUTPUT);
  pinMode(LED8, OUTPUT);
  pinMode(LED9, OUTPUT);
  pinMode(LED10, OUTPUT);
  
  digitalWrite(LED1, LOW);
  digitalWrite(LED2, LOW);
  digitalWrite(LED3, LOW);
  digitalWrite(LED4, LOW);
  digitalWrite(LED5, LOW);
  digitalWrite(LED6, LOW);
  digitalWrite(LED7, LOW);
  digitalWrite(LED8, LOW);
  digitalWrite(LED9, LOW);
  digitalWrite(LED10, LOW);
}

void loop()
{
 
  lcd.setCursor(0, 0);  
  lcd.print(((1023-analogRead(A0))*0.4)/153);
  lcd.print("mg/L Air exp");
  val= (((1023-analogRead(A0))*0.4)/153);
  lcd.setCursor(0,1);
  lcd.print((((1023-analogRead(A0))*0.4)/153)*2);
  lcd.print("g/L Sang");
  
  if(val)  // attente d'une touche valide
  {
    switch (val)
    {
      case val <= 0.025:
      digitalWrite(LED1, HIGH);
      
      
      case val > 0.025 && val <= 0.05:
      digitalWrite(LED1, HIGH);
      digitalWrite(LED2, HIGH);
      
      break;
      
      case val >0.05 && val <= 0.075:
      digitalWrite(LED1, HIGH);
      digitalWrite(LED2, HIGH);
      digitalWrite(LED3, HIGH);
    
      break;
      
      case val >0.075 && val <= 0.1:
      digitalWrite(LED1, HIGH);
      digitalWrite(LED2, HIGH);
      digitalWrite(LED3, HIGH);
      digitalWrite(LED4, HIGH);
      
      break;
      
      case val >0.1 && val <= 0.125:
      digitalWrite(LED1, HIGH);
      digitalWrite(LED2, HIGH);
      digitalWrite(LED3, HIGH);
      digitalWrite(LED4, HIGH);
      digitalWrite(LED5, HIGH);
      
      break;
      
      case val > 0.125 && val <= 0.150:
      digitalWrite(LED1, HIGH);
      digitalWrite(LED2, HIGH);
      digitalWrite(LED3, HIGH);
      digitalWrite(LED4, HIGH);
      digitalWrite(LED5, HIGH);
      digitalWrite(LED6, HIGH);
      
      break;
      
      case val > 0.150 && val <= 0.175:
      digitalWrite(LED1, HIGH);
      digitalWrite(LED2, HIGH);
      digitalWrite(LED3, HIGH);
      digitalWrite(LED4, HIGH);
      digitalWrite(LED5, HIGH);
      digitalWrite(LED6, HIGH);
      digitalWrite(LED7, HIGH);
      
      break;
      
      case val > 0.175 && val <= 0.2:
      digitalWrite(LED1, HIGH);
      digitalWrite(LED2, HIGH);
      digitalWrite(LED3, HIGH);
      digitalWrite(LED4, HIGH);
      digitalWrite(LED5, HIGH);
      digitalWrite(LED6, HIGH);
      digitalWrite(LED7, HIGH);
      digitalWrite(LED8, HIGH);
      
      break;
      
      case val >0.2 && val <= 0.25:
      digitalWrite(LED1, HIGH);
      digitalWrite(LED2, HIGH);
      digitalWrite(LED3, HIGH);
      digitalWrite(LED4, HIGH);
      digitalWrite(LED5, HIGH);
      digitalWrite(LED6, HIGH);
      digitalWrite(LED7, HIGH);
      digitalWrite(LED8, HIGH);
      digitalWrite(LED9, HIGH);
      
      break;
      
      case val > 0.25 :
      digitalWrite(LED1, HIGH);
      digitalWrite(LED2, HIGH);
      digitalWrite(LED3, HIGH);
      digitalWrite(LED4, HIGH);
      digitalWrite(LED5, HIGH);
      digitalWrite(LED6, HIGH);
      digitalWrite(LED7, HIGH);
      digitalWrite(LED8, HIGH);
      digitalWrite(LED9, HIGH);
      digitalWrite(LED10, HIGH);
      break;
      
      default:
      
      digitalWrite(LED1, HIGH);
      digitalWrite(LED2, HIGH);
      digitalWrite(LED3, HIGH);
      digitalWrite(LED4, HIGH);
      digitalWrite(LED5, HIGH);
      digitalWrite(LED6, HIGH);
      digitalWrite(LED7, HIGH);
      digitalWrite(LED8, HIGH);
      digitalWrite(LED9, HIGH);
      digitalWrite(LED10, HIGH);
  
  
}
}   
}

Le but de se code est de lire la valeur d'un capteur MQ-3. Ensuite il affiche le taux d'alcool dans le sang et dans l'air epiré sur un LCD. Parallèlement pour un taux dans l'air expiré allant de 0 à 0.25 mg/L un nombre de Leds doivent s'allumer pour indiquer si il y a dépassement où non de la limite. En tout dix leds. Il y a une led allumée en plus tou les 0.025 mg/L en plus (0; 0.025; 0.05; ... 0.25)

Merci.
Edwin

Déjà :

int val ;

Après il y a d'autre erreurs...

Exact. J'ai rectifié cette erreur mais je ne sais pas d'où viennent les autres:

ethylo.ino: In function 'void loop()':
ethylo:65: error: 'val' cannot appear in a constant-expression
ethylo:69: error: 'val' cannot appear in a constant-expression
ethylo:69: error: 'val' cannot appear in a constant-expression
ethylo:75: error: 'val' cannot appear in a constant-expression
ethylo:75: error: 'val' cannot appear in a constant-expression
ethylo:82: error: 'val' cannot appear in a constant-expression
ethylo:82: error: 'val' cannot appear in a constant-expression
ethylo:90: error: 'val' cannot appear in a constant-expression
ethylo:90: error: 'val' cannot appear in a constant-expression
ethylo:99: error: 'val' cannot appear in a constant-expression
ethylo:99: error: 'val' cannot appear in a constant-expression
ethylo:109: error: 'val' cannot appear in a constant-expression
ethylo:109: error: 'val' cannot appear in a constant-expression
ethylo:120: error: 'val' cannot appear in a constant-expression
ethylo:120: error: 'val' cannot appear in a constant-expression
ethylo:132: error: 'val' cannot appear in a constant-expression
ethylo:132: error: 'val' cannot appear in a constant-expression
ethylo:145: error: 'val' cannot appear in a constant-expression

la syntaxe de case est incorrecte.
En plus, val est entier, et tu compares avec des valeurs flottantes...

Comment ça la synthaxe de case est incorrecte?

J'i remplacé le int par float et ça me donne ça:

ethylo.ino: In function 'void loop()':
ethylo:63: error: switch quantity not an integer
ethylo:65: error: 'val' cannot appear in a constant-expression
ethylo:69: error: 'val' cannot appear in a constant-expression
ethylo:69: error: 'val' cannot appear in a constant-expression
ethylo:75: error: 'val' cannot appear in a constant-expression
ethylo:75: error: 'val' cannot appear in a constant-expression
ethylo:82: error: 'val' cannot appear in a constant-expression
ethylo:82: error: 'val' cannot appear in a constant-expression
ethylo:90: error: 'val' cannot appear in a constant-expression
ethylo:90: error: 'val' cannot appear in a constant-expression
ethylo:99: error: 'val' cannot appear in a constant-expression
ethylo:99: error: 'val' cannot appear in a constant-expression
ethylo:109: error: 'val' cannot appear in a constant-expression
ethylo:109: error: 'val' cannot appear in a constant-expression
ethylo:120: error: 'val' cannot appear in a constant-expression
ethylo:120: error: 'val' cannot appear in a constant-expression
ethylo:132: error: 'val' cannot appear in a constant-expression
ethylo:132: error: 'val' cannot appear in a constant-expression
ethylo:145: error: 'val' cannot appear in a constant-expression

Oui, la syntaxe de case est incorrecte.
Un peu de théorie http://arduino.cc/en/Reference/SwitchCase

Switch case ne peut pas fonctionner avec des float.

Si tu veux vraiement utiliser des float utilise un if else

Du coup je ne peux pas mettre mes conditions (<= ...). Il faudrait que je mettre que des if...else?

http://fr.wikibooks.org/wiki/Programmation_C%2B%2B_(débutant)/Instructions_if,_if...else_et_switch#Le_switch

Je ne comprends pas!

Bah... cherche pas à comprendre, c'est juste l'explication de la façon d'utiliser un switch.... ou il est spécifié que la valeur comparée est une constante... et tu peux pas faire une constante par le biais d'une variable.... voila, voila :grin:

comme dit précédement utilise if else....

D'accord!
Du coup j'ai remplacé. L'algorithme marche parfaitement, il n'y a aucune erreurs.
Merci