Jessais le faire allumer mon led avec le bouton

hello trying to light a del using botton and errer code tells me expected unqualified-id before 'else'

here is my code! thanks!!

//Pin 3 : Input for reading the button
//pin 2: Output for controlling the LED
int ButtonValue = 0;

int Button = 3;
int LED = 2;

void setup() {

pinMode (Button, INPUT);
pinMode (LED, OUTPUT);

}

void loop() {
ButtonValue = digitalRead(Button);
//if button is pressed the turn the led on!
digitalWrite(LED, HIGH);
}

else{
//else the button is not pressed, turn it off
digitalWrite(LED, LOW);
}

Hello
Take a view into the BUTTON example inside the IDE.

thank you verry much for the info

La ligne:

ButtonValue = digitalRead(Button);

est mal orthographié, vous devez mettre :

 if (ButtonValue = digitalRead(Button)){

et aussi vous avez besoin d'une dernière parenthèse pour fermer la boucle.

wow nice merci!! ses super gentil!!

Bonjour

`if (ButtonValue == digitalRead(Button)){

est meilleur!

Le code complet:

int Button = 3;
int LED = 2;

void setup() 
{

	pinMode (Button, INPUT);
	pinMode (LED, OUTPUT);

}

void loop() 
{
	int ButtonValue = digitalRead(Button);
	//if button is pressed the turn the led on!
	if (ButtonValue == HIGH)
	{
		digitalWrite(LED, HIGH);
	} 
	else
	{
		digitalWrite(LED, LOW);
	}
}

je ne crois pas - il s’agissait sans doute de faire l’affectation dans le if et tester la valeur en même temps.

Et Comme la variable est inutilisée l’optimiseur va l’enlever de toutes façons…

Mais votre code proposé convient et est explicite et simple à lire.

le compilateur s’il est assez intelligent va générer sans doute juste

void loop() {
  digitalWrite(LED, digitalRead(Button));
}

Sinon ce serait mieux de déclarer les pins en const byte Et de mettre pour la lisibilité le mot pin ou broche dans le nom de la variable.

Bonjour J-M-L

Dans un exemple s'adressant à un "visiblement débutant", je ne pense pas que ce soit de bon aloi.

Quand on pense à la somme d'em.... que cause l'oubli du 2ème =...

Bonne journée
Cordialement
jpbbricole

Merci!!

Oui vous avez raison sur ce point, il vaut mieux éviter ce genre d'écriture surtout pour les débutants mais li n'empêche que

if (ButtonValue == digitalRead(Button)){

n'est pas meilleur car cela n'a aucun sens, ButtonValue n'ayant sinon jamais été initialisé alors que l'autre écriture proposée fonctionnait.

Bonjour J-M-L

Oui, ça a tout son sens! Ma proposition est simplement sortie de son contexte, l'essentiel n'est pas l'initialisation d'une variable mais un test d'égalité dans un if(), il fallait simplement comprendre qu'un test d'égalité dans un if() a, pour le commun des mortels, toujours un double =, c'est pour ça que je les avais mis en évidence.

Cordialement
jpbbricole

OK, mais peu compréhensible pour un débutant.
if ((ButtonValue = digitalRead(Button)) == HIGH){
Serait "un peu" plus rigoureux.

Certainement le plus lisible pour un néophyte.

Certainement pas.

Bonsoir hbachetti

Est-ce-que ce que l'on lit sur le port Button est égal à la variable Button, hors contexte, est tout à fait plausible. Il n'y a pas de faute de logique.

Cordialement
jpbbricole

Avec cette écriture, ButtonValue ne recevra jamais d'autre valeur que sa valeur initiale, c'est à dire ZÉRO.
Autant écrire :
if (0 == digitalRead(Button)){

Et si c'est une variable globale initialisée à 1, par exemple?
Donc ça ne veut pas dire que cette "écriture" mérite un "certainement pas"!

Cordialement
jpbbricole

Un autres question j'essais le analog sur Mega2560 c'est des entrée non des sortie je peut tu avoir des sortie analoge et si oui comment merci!!

Cela se traduirait par :

pas de quoi en faire un drame ...

Disons que votre affirmation manquait de contexte puisque vous n’avez pas repris cette écriture dans votre code proposé donc le contexte était plutôt le post précédent qui était correct mais maladroit et votre qualification de meilleur donc erronée (puisque si l’OP l’avait adoptée cela ne fonctionnait plus).

Bref c’était juste pour clarifier que votre point ne s’appliquait pas au code mais était une remarque plus générale sur l’affectation versus le test d’égalité en c++, comme vous l’avez ensuite expliqué ensuite.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.