Welcome! Log In Create A New Profile

Advanced

Problème avec les bools angry smiley

Posted by Kevin15 
Problème avec les bools angry smiley
April 19, 2016 09:06AM
Bonjour à tous et à toutes,

Je suis nouveau sur le forum et j'aurais besoin d'une petite aide. Voila j'utilise marlin dans sa derniere version.
Mon souci concerne un problème avec les booléens.

Je souhaite faire un menu avec trois choix de couleurs genre violet cyan jaune qui sont tous des booléens (ON ou OFF), j'ai reussi à faire cette étape oufffff ^^
Mais voila lorsque je met la led violet en marche je voudrais que les autres se bloquent sur OFF et ainsi de suite lorsque j'appuie sur jaune elle se met sur ON et les autres sur OFF etc .

Une piste pour m'aider s'il vous plaît ?

PS : j'ai essayer de faire des boucles mais pas moyen d'y arrivé sad smiley
Merci
Re: Problème avec les bools angry smiley
April 19, 2016 02:54PM
Bonjour

c'est un test conditionnel qui peut aider.

if ledviolette alors
violet=on
cyan =off
jaune = off
fin si

A refaire pour chaque led..

A+


« Le progrès ne vaut que s'il est partagé par tous. » : Aristote
Site WEB pour retrouver plus vite des sujets que j'ai traité
Ma chaîne
Re: Problème avec les bools angry smiley
April 19, 2016 03:17PM
merci pour ta réponse

Mais j'ai déja essayé, le souci est que ça me bloque les anciennes valeurs, en gros ça ne prends en compte que la derniere boucle if

de quel type et ta variable ledviolette ?

merci encore pour ton aide
Re: Problème avec les bools angry smiley
April 19, 2016 03:49PM
Bonsoir

Peux-tu fournir la partie de ton code stp ??


A+


« Le progrès ne vaut que s'il est partagé par tous. » : Aristote
Site WEB pour retrouver plus vite des sujets que j'ai traité
Ma chaîne
Re: Problème avec les bools angry smiley
April 19, 2016 04:26PM
Dsl mais je ne sais absolument pas comment bien utiliser les balises pour le code, mille excuse si cela est illisible


bool led_violet
bool led_cyan
bool led_jaune

void loop {

if(led_violet = true)
{ led_cyan = false;
  led_jaune = false;
  bouton_poussoir =digitalRead(bp);
  bouton_poussoir = LOW;
}

if(led_cyan = true)
{ led_violet = false;
  led_jaune = false;
  bouton_poussoir =digitalRead(bp);
  bouton_poussoir = LOW;
}

if(led_jaune = true)
{ led_cyan = false;
  led_cyan = false;
  bouton_poussoir =digitalRead(bp);
  bouton_poussoir = LOW;
}

}

Je n'ai pas mis la partie void setup où on met les pinMode car je suis sur que la solution se trouve dans la partie void loop

Merci de ton aide
Re: Problème avec les bools angry smiley
April 19, 2016 05:51PM
Je ne connais pas bien Marlin, mais ta condition n'est pas bien écrite.

Sauf erreur de ma part, il faut utiliser le double égal "==", là tu fais une assignation.

void loop {

if(led_violet == true)
{ led_cyan = false;
  led_jaune = false;
  bouton_poussoir =digitalRead(bp);
  bouton_poussoir = LOW;
}

if(led_cyan == true)
{ led_violet = false;
  led_jaune = false;
  bouton_poussoir =digitalRead(bp);
  bouton_poussoir = LOW;
}

if(led_jaune == true)
{ led_violet = false;
  led_cyan = false; //J'ai changé ici aussi ce n'était pas la bonne led
  bouton_poussoir =digitalRead(bp);
  bouton_poussoir = LOW;
}

}

Edited 1 time(s). Last edit at 04/19/2016 05:52PM by cayat.
Re: Problème avec les bools angry smiley
April 19, 2016 07:32PM
Bonsoir Cayat,

J'ai essayé de changer et d'utiliser le double égale, mais rien ne changes. Cela ne marche toujours pas.

En tout cas merci de m'aider c'est très gentil à toi

Edited 1 time(s). Last edit at 04/19/2016 07:32PM by Kevin15.
Re: Problème avec les bools angry smiley
April 20, 2016 01:45AM
Bonjour,

Il y un soucis de logique dans ton bout de code, essaie plutôt çà :

void loop {

bouton_poussoir =digitalRead(bp);

if(led_violet == true)
{ led_cyan = false;
  led_jaune = false;
}

if(led_cyan == true)
{ led_violet = false;
  led_jaune = false;
}

if(led_jaune == true)
{ led_violet = false;
  led_cyan = false; //J'ai changé ici aussi ce n'était pas la bonne led
}

  bouton_poussoir = LOW;

}

Je ne connais pas bien le code de marlin, mais ta logique devrait plus ressembler à çà.

D'autre part tu passes la variable bp à digitalRead, cette variable a quelle portée ? (elle est déclarée où ?)

Bonne journée!

Edited 1 time(s). Last edit at 04/20/2016 01:46AM by cayat.
Re: Problème avec les bools angry smiley
April 20, 2016 06:31AM
digitalRead permet de llire l'état du pin bouton poussoir à savoir si c'est HIGH ou LOW, et bp c'est le pin de mon bouton poussoir la variable bouton poussoir correspond plus à l'état du bouton s'il est HIGH ou LOW.
J'espere avoir été un minimum claire pour que tu comprennes.

Je viens essayer ton code,il y a toujours un souci. Je comprend vraiment pas pourquoi ça ne marche la.

Bonne journée
Re: Problème avec les bools angry smiley
April 20, 2016 06:48AM
Peux tu me donner plus de code, pas que la loop stp.

Car tu as sans doute un problème de portée.
Re: Problème avec les bools angry smiley
April 20, 2016 06:51AM
Bonjour

Tu lis le bouton, mais comment savoir quelle led est concernée ??? un truc m'échappe

A+


« Le progrès ne vaut que s'il est partagé par tous. » : Aristote
Site WEB pour retrouver plus vite des sujets que j'ai traité
Ma chaîne
Re: Problème avec les bools angry smiley
April 20, 2016 07:14AM
Voila mon code en entier

LUMIERE_CYAN = 5;
LUMIERE_JAUNE = 6;
LUMIERE_VIOLET = 11;
bool led_cyan;
bool led_jaune;
bool led_violet;
int bouton_poussoir;

void setup() 

{
  pinMode(LUMIERE_CYAN, OUTPUT); 
  pinMode(LUMIERE_JAUNE, OUTPUT); 
  pinMode(LUMIERE_VIOLET, OUTPUT); 
  pinMode(bp, INPUT);

}

void loop {

bouton_poussoir =digitalRead(bp);

if(led_violet == true)
{ led_cyan = false;
  led_jaune = false;
}

if(led_cyan == true)
{ led_violet = false;
  led_jaune = false;
}

if(led_jaune == true)
{ led_violet = false;
  led_cyan = false; //J'ai changé ici aussi ce n'était pas la bonne led
}

  bouton_poussoir = LOW;

}


Coordialement
Merci
Re: Problème avec les bools angry smiley
April 20, 2016 07:20AM
Je ne comprends pas ce que tu veux dire Strofe ?
Re: Problème avec les bools angry smiley
April 20, 2016 07:25AM
Déjà tu initialise pas tes leds, elle sont éteinte par défaut non ?

LUMIERE_CYAN = 5;
LUMIERE_JAUNE = 6;
LUMIERE_VIOLET = 11;
bool led_cyan = false;
bool led_jaune = false;
bool led_violet = false;
int bouton_poussoir = LOW;

Mais ton code va pas l, car tu ne met jamais aucune de tes variable à true.

CAYAT
Re: Problème avec les bools angry smiley
April 20, 2016 07:41AM
Non j'ai oublié de le faire, c'est vrai.

Dsl mais je commence vraiment à etre perdu la ...

Comment ça je ne met aucune variable à true, pourtant si quand j'appuie sur le bouton poussoir une des variables choisi (led_cyan ou led_jaune ou led_violet) passe en true et les autres en false, et ainsi de suite suivant le choix d'allumage de la LED.
Mais le code que je pensais qu'il allait marcher ne marche pas

Edited 1 time(s). Last edit at 04/20/2016 07:42AM by Kevin15.
Re: Problème avec les bools angry smiley
April 20, 2016 08:21AM
Bonjour

Je pense que tu dois definir la pin bp.

Quote
pinMode(bp, INPUT);

Si tu veux programmer je pense qu'il te faut etre plus rigoureux définir tes entrées sorties tes variables ....
Re: Problème avec les bools angry smiley
April 20, 2016 08:23AM
Ce que tu souhaites c'est :

J'appuie une fois c'est la cyan,
puis si j'appuie c'est la jaune
puis si j'appuie c'est la violette ?
Re: Problème avec les bools angry smiley
April 20, 2016 09:00AM
Blonblon je l'ai defini dans la void setup ^^

Pas vraiment Cayat. Ce que je souhaite faire, c'est :

Au début, toutes les led sont sur false.
J'ai acces à mon menu choix couleur : (chose deja faite)
Cyan (booléen que j'ai nommée led_cyan)
Jaune (booléen que j'ai nommée led_jaune)
Violet (booléen que j'ai nommée led_violet)

Quand mon choix se fait sur cyan , jaune et violet passe sur off
Quand je veux changer de couleur et mettre au choix violet par exemple, cyan et jaune passe en off
Mais j'aurais pu choisir de mettre jaune et donc mettre cyan et violet en off

Je veux en faite choisir la couleur que je veux et mettre les autres sur off et si je veux changer la couleur, celle précédemment choisi bascule sur off et la nouvelle couleur on
Re: Problème avec les bools angry smiley
April 20, 2016 09:10AM
Je ne crois pas, ou est le numéro de la pin
Quote
LUMIERE_CYAN = 5;
LUMIERE_JAUNE = 6;
LUMIERE_VIOLET = 11;
bool led_cyan;
bool led_jaune;
bool led_violet;
int bouton_poussoir;

void setup()

{
pinMode(LUMIERE_CYAN, OUTPUT);
pinMode(LUMIERE_JAUNE, OUTPUT);
pinMode(LUMIERE_VIOLET, OUTPUT);
pinMode(bp, INPUT);

}

Re: Problème avec les bools angry smiley
April 20, 2016 11:21AM
J'ai juste oublié de le mettre dans le code que je viens de vous montrer. Veuillez m'en excusez
Il manque :

bp = 35:

Re: Problème avec les bools angry smiley
April 20, 2016 11:32AM
Bonjour

Déclare tes variables et pense à les initialiser

boolean led_cyan= false;
boolean led_jaune= false;
boolean led_violet= false;


[www.mon-club-elec.fr]

Si je comprends bien, tu souhaites à chaque appui sur le bouton poussoir qu'une led s'éteigne et que la suivante s'allume ??

A+


« Le progrès ne vaut que s'il est partagé par tous. » : Aristote
Site WEB pour retrouver plus vite des sujets que j'ai traité
Ma chaîne
Re: Problème avec les bools angry smiley
April 20, 2016 11:38AM
Bonjour Strofe,

D'accord merci du conseil

En gros, au début toute mes LED sont éteintes
Et je veux choisir n'importe LED à allumer ou à eteindre par l'intermediaire de mon ecran lcd (tout est deja fait par rapport à l'ecran lcd)

par exemple :

je veux allumer la led cyan, les autres s'éteignent
je veux allumer la led jaune, les autres s'éteignent
je me dis a non la led cyan c'était pas si mal, etc

je ne souhaite pas un ordre prédefini des couleurs genre cyan, jaune, violet mais faire comme je veux

Merci à vous tous pour votre aide et compréhension

Edited 1 time(s). Last edit at 04/20/2016 11:41AM by Kevin15.
Re: Problème avec les bools angry smiley
April 20, 2016 12:27PM
je pense que ton code devrait ressembler a ceci


si bouton appuyé alors
{
si led violet == true
{
//
}
sinon si led cyan == true
{
//
}
sinon si led jaune == true
{
//
}
}
Re: Problème avec les bools angry smiley
April 20, 2016 01:29PM
Hello

comment est connecté ton bouton ? Est-ce que tu utilises la résistance de pull-up?

Un test comme ceci est un peu bizarre:
if(led_violet == true)
{ led_cyan = false;
  led_jaune = false;
}
plutôt
if(led_violet)
{ led_cyan = false;
  led_jaune = false;
}
Quand tu détecte que le bouton est pressé, ajouter une pause de 100 milli-sec pour éviter les rebonds.
A+ Didier

Edited 1 time(s). Last edit at 04/20/2016 01:35PM by didierh.
Sorry, only registered users may post in this forum.

Click here to login