2325:
En fait ce qui me dérange c'est que à chaque bouton poussoir il y a deux leds et elles sont sur des différentes pins et je dois les faire communiquer avec leur propre bouton poussoir.
Donc du coup c'est ça qui me pose soucis
je vois pas le soucis.
tu prends le code dans l'autre post et tu double les boolean et le reste.
Mais sinon devoir est à rendre pour vendredi mais j'ai d'autre projet à faire sur d'autre code que l'arduino donc du coup je dois les faire très vite et j'ai en plus mes partiels à réviser
NON en fait je pense que il y a un truc qui ne va pas surement ça doit venir du logiciel car je fais mes montages avec 123d.circuits.io car lorsque je met le même code mais avec mes pins et sans le délai de 300 mili-secondes la led bleu scintille bizarrement je ne vois pas pourquoi sachant que lorsque le bouton n'est plus pressé la led bleu devrai s’éteindre
Voici ce que j'ai mis :
Sachant que au dévut j'ai mis
boolean etat = false;
pinMode (ledR1, OUTPUT);
pinMode (ledB1, OUTPUT);
//digitalWrite (ledR1, LOW);
digitalWrite (ledB1, HIGH);
if (digitalRead (bp1) == HIGH) // si le bouton est appuyé
{
if (etat == true) // on allume/éteint les leds en fonction de la valeur de etat
{
digitalWrite (ledR1, LOW);
digitalWrite (ledB1, HIGH);
}
else
{
digitalWrite (ledR1, HIGH);
digitalWrite (ledB1, LOW);
}
etat = !etat; // on inverse la valeur de etat
}
En fait il n'y a aucun faux contact avec les équipements lorsque j'appuis sur le premier bouton les 2 LEDs s'allume et la LED bleu a tendance à s'éteindre mais elle ne s’éteint pas ensuite si j'appuis sur le second bouton leds 2 LEDs s'allume mais la led bleu du 1er bouton s'éteint je ne sais pas pourquoi.
On se pose les questions avant de coder.
Combien d'entrées, combien de sorties
On décrit toutes les relations des unes avec les autres
Et on vérifie son raisonnement
Quand tout semble cohérent on code et pas l'inverse. Sinon c'est n'importe quoi et tu passes des siècles à bricoler un truc boiteux.
Tu as raison fdufnews mais :
j'ai 2 boutons, chaque bouton peut contrôler 2 leds (de couleurs différentes une rouge et une bleu) indépendantes chacune.
Imaginons que j'appuis sur le premier bouton la led rouge du premier bouton s'allume puis si j'appuis sur le second bouton la led bleu s'allume
Et de même si je commence avec le second bouton la led rouge s'allume et si j'appuis sur le premier bouton la led bleu s'allume
En fait je ne vois toujours pas comment faut-il faire ?
Le sens de la question c'est quel comportement attends-tu du montage dans ce cas.
Ce qu'il faut que tu comprennes c'est que tu dois prévoir tous les cas (même ceux à priori non souhaités) sinon ton code est incomplet et tu as des comportements inattendus.
Par exemple si l'appui sur le bouton est trop long cela peut être vu comme 2 appuis successifs sur le même bouton donc ce cas doit être envisagé et traité.
Bonjour,
J'ai l'impression que l'on se trouve dans un cas de "logique séquentielle" et qu'une analyse dans ce sens doit être faite avant tout codage.
@+
Je vois toujours pas mais bon.
J'ai essayé quelque petit truc mais je n'y arrive toujours pas
void loop (void)
{
while(digitalRead(bp1) == 0 && digitalRead(bp2) == 0 && digitalRead(bp3) == 0)
delay(10);
if(digitalRead(bp1) == 1){
if(joueur == 0){ //le jouuer 0 à les leds bleu
digitalWrite(ledB1,HIGH);
digitalWrite(ledR1,LOW);
joueur = 1; //le prochain joueur
}else{
digitalWrite(ledB1,LOW);
digitalWrite(ledR1,HIGH);
joueur = 0;
}
}else if(digitalRead(bp2) == 1){
if(joueur == 0){ //le jouuer 0 à les leds bleu
digitalWrite(ledB2,HIGH);
digitalWrite(ledR2,LOW);
joueur = 1; //le prochain joueur
}else{
digitalWrite(ledB2,LOW);
digitalWrite(ledR2,HIGH);
joueur = 0;
}}
else if(digitalRead(bp3) == 1){
if(joueur == 0){ //le jouuer 0 à les leds bleu
digitalWrite(ledB3,HIGH);
digitalWrite(ledR3,LOW);
joueur = 1; //le prochain joueur
}else{
digitalWrite(ledB3,LOW);
digitalWrite(ledR3,HIGH);
joueur = 0;
}
}
//on attend que les bouton soit relachés
while(digitalRead(bp1) == 1 || digitalRead(bp2) == 1 || digitalRead(bp3) == 1)
delay(10);
}
Je ne comprend pas pourquoi lorsque j'appuis sur un premier bouton ( n'importe lequel ) les 2 leds s'allument et si je ré-appuis dessus la led rouge s'éteint mais la led bleu reste allumée. Si j'appuis sur un second bouton il n'y a que la led rouge qui s'allume et si j'appuis sur le troisième bouton la led rouge s'allume aussi.