1 Bouton poussoir et 2 LEDs

Bonsoir tout le monde

J'aimerai savoir s'il serait possible de commander deux LEDs différentes avec un seul bouton poussoir ?
Et si oui comment pourrais-je le faire svp ?

Merci
Bonne fin de soirée

Car en fait j'essaie de faire un morpion et comme dans chaque case il y a deux possibilités je dois donc mettre deux LEDs.
C'est pour ça que je suis bien embêté.

Merci

bonjour,
regardes du coté de boolean par exemple.

Bonjour

Je vois bien mais en fait il n'y a qu'une LED à la fois donc c pour ça que je n'arrive pas à gérer 2 LEDs.
Imaginons que j'ai deux LEDs une sur la pin 1 et l'autre sur la pin 2.
Et imaginons que j'ai mon bouton sur la pin 3 es-ce que c'est possible de les commander chacune indépendamment ?

Merci

Par exemple, si une est allumée, l’éteindre et allumer l'autre?

OK !!

En fait si j’ai bien compris je lis la valeur de mon bouton poussoir sur la pin x et ensuite j’agis sur la pin y pour ma LED.

Je pense que c’est ça mais je ne suis pas sur ??

Non en fait c'est comme le principe d'un morpion.
Il y a deux joueurs avec deux symboles différents ( ici sont les différentes couleurs de LED )
Donc du coup si le joueur 1 joue dans la première case il va allumer un LED rouge puis l'autre joueur jouera avec une autre led d'une autre couleur mais dans une autre cas

const int led1 = 1, led2 = 2, btn = 3;
boolean isLight= false;

void setup() {

pinMode(led1, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(btn, INPUT);

}

void loop() {

int state = digitalRead(btn);

if(state == HIGH && isLight == false) {
digitalWrite(led1, HIGH);
digitalWrite(led2, LOW);
isLight = true;
}
if(state == HIGH && isLight == true) {
digitalWrite(led2, HIGH);
digitalWrite(led1, LOW);
isLight = false;
}

}

haaaaaaa ok Merci je viens de comprendre le principe du boolean

Merci mangho et infobarquee :slight_smile:

mais de rien, si tu as d'autres questions hésite pas à les poser

Ok merci beaucoup manghao

:slight_smile:

Re bonjour

Voici mon montage

Et voici mon code :

int led1 = 13;
int led11 = 12;
int bp1 = A0;
int x;
int y;
//int compteur = 0;

void setup() 
{
  // Initialisation des leds et le bouton poussoir
  pinMode(led1, OUTPUT);
  pinMode(led11, OUTPUT);
  pinMode(bp1, INPUT);
}

void loop() 
{
  // Les 2 leds sont éteintes
  digitalWrite(led1, LOW);
  digitalWrite(led11, LOW);

  int test1 = digitalRead(bp1); 
  
	if(test1==HIGH)
	{
	digitalWrite(led1, HIGH); // Allumer led1
    Serial.println(test1);
	}
	
  	else // Sinon
	{
	digitalWrite(led1, LOW); // Eteindre led1
	Serial.println(test1);
    }
  
}

Et je ne sais pas pourquoi mon bouton n'a aucun effet sur ma led ?

Merci

Si l'image ne passe pas je viens de l'uploader sur ce lien

http://hpics.li/e3b03fe

Merci beaucoup

normal
loop = boucle
tu mets tes leds en LOW à chaque boucle, comment veux tu quelles restent allumées?

ha OK

Du coup j'ai enlevé les LEDs en LOW et j'ai ajouté ca

int led1 = 13;
int led11 = 12;
int bp1 = A0;
int x;
int y;
//int compteur = 0;

void setup() 
{
  // Initialisation des leds et le bouton poussoir
  pinMode(led1, OUTPUT);
  pinMode(led11, OUTPUT);
  pinMode(bp1, INPUT);
}

void loop() 
{
  // Les 2 leds sont éteintes
   int test1 = digitalRead(bp1); 
  
	if(test1==HIGH)//Si le bouton est pressé
	{
	digitalWrite(led1, HIGH); // Allumer led1
    Serial.println(test1);
	}
	
  	else
    {
	digitalWrite(led1, HIGH); // Eteindre led1
	Serial.println(test1);
    }
  
}

Mais mon bouton n'a toujours aucun effet sur la LED

Merci

relis ton code, tu trouve pas un soucis?
si bp1 enfoncé => led1 allumée
sinon led1 allumée

mais là, tu ne pourras pas allumer une led puis allumer l'autre.
donc repars sur boolean

si true=> allume led1 eteint led11
si false=> inverse
en mettant au départ sur false et le led1 sur off par exemple et l'autre on

mais si mes souvenirs sont bons, le morpion au départ, tout est éteint.
donc tout dois être sur off au départ dans le setup.

Moi je commencerais par tout mettre sur le papier avant de coder.
Il y a plusieurs entrées à prendre en compte pour gérer l’allumage/extinction des LED.

  • Qui doit jouer pour le choix de la couleur(et la signalisation du joueur actif)
  • La case est-elle déjà allumée (on a pas le droit de modifier une case occupée)
  • Le bouton est-il appuyé (on ne fait rien tant que le bouton est lâché, ensuite on attend le relâché du bouton pour ne pas traiter plusieurs fois l’appui)

Oui j'ai tout écrit mais si ça ne marche pas avec une led ça ne va pas marcher avec les autres.

Du coup j'ai essayé ça
Mais sans résultat :frowning:

int led1 = 13;       // LED on pin 5
int bp1 = A0;   // momentary switch on 13, other side connected to ground

boolean running = false;

void setup()
{
  pinMode(led1, OUTPUT);
  pinMode(bp1, INPUT);
  digitalWrite(bp1, HIGH);
}

void loop()
{
  if (digitalRead(bp1) == LOW)
  {  // switch is pressed - pullup keeps pin high normally
    delay(500);                        // delay to debounce switch
    running = !running;                // toggle running variable
    digitalWrite(led1, HIGH);      // indicate via LED
  }
}

Merci

si tu suivais les bonnes indications du tuto que tu as repompé :wink:
mets ton cablage en photo aussi
ton bouton est connecté à quoi? 5v ou GND?

Voici l'image de mon montage

http://hpics.li/e3b03fe

Merci