erreurs de langage d'un débutant

Bonjour,

Je panne avec l’édition d’un sketch, pourtant simple, car je ne saispas traduire les messages d’erreurs.
Merci de votre aide.

le sketch est le suivant:

/*
Exploring Arduino - Code Listing 3-3: Automatic Night Light Sketch
http://www.exploringarduino.com/content/ch3

Copyright 2013 Jeremy Blum ( http://www.jeremyblum.com )
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License v3 as published by
the Free Software Foundation.
*/

//Automatic Night Light

const int RLED=9;        //Red LED on pin 9 (PWM)
const int GLED=10;       //Green LED on pin 10 (PWM)
const int BLED=11;       //Blue LED on pin 11 (PWM)
const int LIGHT=0;       //Lght Sensor on Analog Pin 0
const int MIN_LIGHT=83; //Minimum expected light value
const int MAX_LIGHT=290; //Maximum Expected Light value
int val = 0;             //variable to hold the analog reading
int DEL = 3000;
void setup()
{
  pinMode(RLED, OUTPUT); //Set RLED pin as output
  pinMode(GLED, OUTPUT); //Set GLED pin as output
  pinMode(BLED, OUTPUT); //Set BLED pin as output
  Serial.begin(9600);
}

void loop()
{
  val = analogRead(LIGHT);  //read the light sensor
Serial.println("light=");
Serial.println(val);
delay(DEL);

  
val = map(val, MIN_LIGHT, MAX_LIGHT, 255, 0); //map the light reading
val = constrain(val, 0, 255);                 //constrain light value
Serial.println("constrain=");
Serial.println(val);
}
if (constrain < 100)
{
  digitalWrite (RLED, HIGH);
  digitalWrite (GLED, LOW);
  digitalWrite (BLED, LOW);
  }
else (constrain > 100)
{
 digitalWrite (RLED, LOW);
 digitalWrite (GLED, HIGH);
 digitalWrite (BLED, LOW);
}
else (constrain < 50) 
{  
  digitalWrite (RLED, LOW);
  digitalWrite (GLED, LOW);
  digitalWrite (BLED, HIGH);
 }
 }

les erreurs sont les suivantes:

Arduino : 1.8.5 (Windows 10), Carte : "Arduino/Genuino Uno"

nightlightRGB:42: error: expected unqualified-id before 'if'

 if (constrain < 100)

 ^

nightlightRGB:48: error: expected unqualified-id before 'else'

 else (constrain > 100)

 ^

nightlightRGB:54: error: expected unqualified-id before 'else'

 else (constrain < 50) 

 ^

nightlightRGB:60: error: expected declaration before '}' token

  }

  ^

exit status 1
expected unqualified-id before 'if'

Ce rapport pourrait être plus détaillé avec
l'option "Afficher les résultats détaillés de la compilation"
activée dans Fichier -> Préférences.

Happy Black Friday,

Franck

le } ligne 41 avant if (constrain < 100) normal?

Bonjour,

Le else ne comporte pas d'expression de condition

La syntaxe est

if (condition) instruction_vrai;
else instruction_faux;

quand tu fais

else (constrain > 100)

je suppose que tu veux faire

else if (constrain > 100)

De plus la variable constrain n'existe pas. La variable que tu veux tester c'est val.

c'est pas val à la place de constrain ?

comme ça

//Automatic jour nuit

const int RLED=9;        //Rouge LED sur pin 9 (PWM)
const int GLED=10;       //verte LED sur pin 10 (PWM)
const int BLED=11;       //Bleu LED sur pin 11 (PWM)
const int LIGHT=A0;       //Lght Sensor on Analog Pin 0
const int MIN_LIGHT=83; //Minimum expected light value
const int MAX_LIGHT=290; //Maximum Expected Light value
int val = 0;             //variable to hold the analog reading
int DEL = 3000;
void setup()
{
  pinMode(RLED, OUTPUT); //Set RLED pin as output
  pinMode(GLED, OUTPUT); //Set GLED pin as output
  pinMode(BLED, OUTPUT); //Set BLED pin as output
  Serial.begin(9600);
}

void loop()
{
  val = analogRead(LIGHT);  //read the light sensor
Serial.println("light=");
Serial.println(val);
delay(DEL);

 
val = map(val, MIN_LIGHT, MAX_LIGHT, 255, 0); //map the light reading
val = constrain(val, 0, 255);                 //constrain light value
Serial.println("constrain=");
Serial.println(val);

if(val < 100)
{
  digitalWrite (RLED, HIGH);
  digitalWrite (GLED, LOW);
  digitalWrite (BLED, LOW);
  }
else if(val > 100)
{
 digitalWrite (RLED, LOW);
 digitalWrite (GLED, HIGH);
 digitalWrite (BLED, LOW);
}
else if(val < 50)
{ 
  digitalWrite (RLED, LOW);
  digitalWrite (GLED, LOW);
  digitalWrite (BLED, HIGH);
 }
 }

Ça ne va pas marcher. Regarde ce qui se passera si val vaut 40...

j'ai rectifié en gros.....yapuka finir

Il faut faire attention à l’ordre des if. Ici tester d’abord si <50 puis <100 puis un else tout simple

Il faut faire attention à l’ordre des if. Ici tester d’abord si <50 puis <100 puis un else tout simple

C’est vrais mais l’erreur de neodali est que ses if et else ne sont pas à l’intérieur de la fonction loop.

Oui, je répondais à Pomme Poire...

C'est vrais mais étant donné que neodali brille par son absence je me suis dis que j’arrêtais là