rajouter un bouton a mon projet

Bonjour je ne trouve plus mes posts
donc je repose ma question
comment je peux faire pour ajouter un bouton à mon code j'ai essayé plusieurs méthodes mais ça ne marche pas
je souhaite suite à un appuis sur le bouton que sa lance mon code jusqu’à un nouvel appuis sur le bouton

int pinLed01, pinLed1, pinLed2, pinLed3, pinLed4; //on peut déclarer plusieurs variables
void setup()
{
  //initialisation des variables
  
  pinLed01 = 2;
  pinLed1 = 3;
  pinLed2 = 4;
  pinLed3 = 6;
  pinLed4 = 7;
  
  //initialisation des modes
  pinMode(pinLed01, OUTPUT);
  pinMode(pinLed1, OUTPUT);
  pinMode(pinLed2, OUTPUT);
  pinMode(pinLed3, OUTPUT);
  pinMode(pinLed4, OUTPUT);
  //mise à 0V de chaque pin
  digitalWrite(pinLed01, LOW);
  digitalWrite(pinLed1, LOW);
  digitalWrite(pinLed2, LOW);
  digitalWrite(pinLed3, LOW);
  digitalWrite(pinLed4, LOW);
}
void loop()
{
  //test allumage et repérage des lEDs
  digitalWrite(pinLed01, HIGH);
  delay(1500);
  digitalWrite(pinLed1, HIGH);
  delay(800);
  digitalWrite(pinLed2, HIGH);
  delay(800);
  digitalWrite(pinLed3, HIGH);
  delay(1500);
  digitalWrite(pinLed4, HIGH);
  delay(1500);
  //on éteint tout
  digitalWrite(pinLed1, LOW);
  digitalWrite(pinLed2, LOW);
  digitalWrite(pinLed3, LOW);
  digitalWrite(pinLed4, LOW);
  digitalWrite(pinLed01, LOW);
  delay(500);
}

merci de votre aide

Welcome.

you have posted the the English section.

if you go to the main forum page and go to the bottom, there is a forum for those who speak French.

look at the example sketches in your IDE software for Arduino.

look at the example '' Button "

fredericbarbier:
je souhaite suite à un appuis sur le bouton que sa lance mon code jusqu’à un nouvel appuis sur le bouton

Un code sur Arduino se compose de deux fonctions principales :

  • le setup, qui se lance au début et une seule fois
  • la loop, qui prend le relais et s'exécute en boucle: une fois terminée, elle recommence.

Une possibilité pour faire ce que tu demandes, c'est de faire ceci:

  • A la fin du setup : mettre une boucle infinie qui attend un appui sur le bouton avant de passer à la suite
  • A la fin de la loop : lire l'état du bouton et dès qu'il est enfoncé, entrer dans une boucle infinie

C'est le minimum, c'est à dire que tout s'arrête là. Est-ce que tu veux faire autre chose ensuite ou pas ?

Pour faire ça, tu dois te renseigner sur l'utilisation des boutons, le while, et la programmation sous Arduino

Bonjour;

Conditionne la lecture de ton programme sur l etat de ton bouton.

Tu est déjà dans une boucle inutile se crée d autre boucle.
Un apuis bouton = exécution programme.

Si l état précédent de ton bouton n a pas changer pas d execution programme.

Salutations.

Si vous voulez quelque chose d'un peu structuré et non bloquant:

  1. Pour vous simplifier la vie vous pouvez prendre la librairie Boutons Poussoirs de @bricoleau

  2. vous pouvez utiliser ensuite la programmation par machine à états (cf mon tuto éventuellement)

Vous avez 2 états: EN_ATTENTE et EN_COURS. vous démarrez dans l'état EN_ATTENTE et un appui sur le bouton vous fait passer en mode EN_COURS. Dans ce mode là un appui sur le bouton vous fait repasser en attente.

une fois que vous connaissez le mode dans lequel vous êtes, vous pouvez décider d'exécuter ou non un bout de code. --> la structure ressemblerait alors à cela par exemple:

#include <simpleBouton.h>

simpleBouton bouton(3); //Cablage : D3---BP---GND

enum : byte {EN_ATTENTE, EN_COURS} etat;

void setup() {
  Serial.begin(115200);
  etat = EN_ATTENTE;
}

void loop()
{
  // Test pour savoir si on change d'état
  if (bouton) { // on a appuyé sur le bouton, on change d'état
    switch (etat) {
      case EN_ATTENTE:
        // éventuellement ici initialiser ce qu'il faut pour démarrer le programme
        etat = EN_COURS;
        break;

      case EN_COURS:
        // éventuellement ici mettre ce qu'il faut pour terminer proprement le programme
        etat = EN_ATTENTE;
        break;
    }
  }

  // si le programme est en cours d'exécution, on fait ce qu'il faut
  if (etat == EN_COURS) {

    // =============================================================
    // ici faire tourner 1 étape (non bloquante) de votre programme
    // =============================================================

  }

  // ici on peut aussi faire autre chose, genre clignoter une LED pour montrer que le système est fonctionnel
}

Bonjour;

J-M-L merci... (laisse les bosser un peu)

Salutations.

merci a tous pour vos reponces je vais tester ca et vous tiens au courant de mes avancement

manumanu:
Bonjour;

J-M-L merci... (laisse les bosser un peu)

Salutations.

C’est l structure - reste du boulot !

bonjour a tous
je revient vers vous avec mon code
desolé je n'ai pas utiliser la librerie (bouton poussoir )
mais j'ai enfin reussi a faire ce que je voulais
je joint mon code

//déclaration des variables
int pinBouton;
int pinLed01,pinLed1,pinLed2,pinLed3,pinLed4;

void setup()
{
  //initialisation des variables
  pinBouton = 10;
  pinLed01 = 2;
  pinLed1 = 3;
  pinLed2 = 4;
  pinLed3 = 6;
  pinLed4 = 7;
    
  
  //définition des modes
  pinMode(pinBouton, INPUT); //mode lecture pour le bouton
  pinMode(pinLed01, OUTPUT); //mode écriture pour led
  pinMode(pinLed1, OUTPUT);
  pinMode(pinLed2, OUTPUT);
  pinMode(pinLed3, OUTPUT);
  pinMode(pinLed4, OUTPUT);

}
void loop()
{
  //lecture de l'état du bouton et stockage dans etatBouton
  boolean etatBouton = digitalRead(pinBouton);
  //test des conditions
  if (etatBouton==HIGH)//test si bouton appuyé
  {
  digitalWrite(pinLed01, HIGH);//lancement du programe 
  delay(1000);
  digitalWrite(pinLed1, HIGH);
  delay(1000);
  digitalWrite(pinLed2, HIGH);
  delay(1000);
  digitalWrite(pinLed3, HIGH);
  delay(1500);
  digitalWrite(pinLed4, HIGH);  
  delay(1000); 
    
  digitalWrite(pinLed01, LOW);
  digitalWrite(pinLed1, LOW);
  digitalWrite(pinLed2, LOW);
  digitalWrite(pinLed3, LOW); 
  digitalWrite(pinLed4, LOW);
   }
  
  delay(200); //petite attente
}

encore un petit service vers le quelle vous pouvez m'orienter
mon code sert pour un feux de départ pour course automobile (sur un circuit autoroutier)
je voudrais bien rajouter un feux ( rouge en pinLed5) qui s'allumerais en cas de faux départ avec un délai modifiable
comment puis-je faire ?

Comment penses tu détecter un faux départ ?

Bonjour;

je voudrais bien rajouter un feux ( rouge en pinLed5) qui s'allumerais en cas de faux départ avec un délai modifiable
comment puis-je faire ?

Pour cela il vas te falloir détecter un franchissement de ligne avant le top départ. Un capteur optique ou laser ferais l'affaire.

Salutations.

bonjour a tous
merci de vos réponse j'ai des capteurs de type h21a1comme ceux-la

mais serait il possible de le faire au niveau des rails quand on appuis sur la télécommande pour envoyer le courant a la voiture ? :confused:

Une barrière infra-rouge ou laser ne nécessite qu'une entrée mais elle ne permet pas d'identifier l'auteur du faux départ
Des capteurs sur la piste ou la lecture de la tension délivrée par les poignées permet de connaitre l'auteur du faux départ mais complique un peu l'interface. D'autant qu'il me semble que la tension sur les rails est de 12V et que sa polarité change lors des changement de piste.

Cela dépend donc de ton besoin et de ta capacité à réaliser la fonction.

Dans un projet sur lequel j'avais travaillé avec des jeunes on avait pris des petits composants comme cela à moins de 1 euro pour mettre de part et d'autre du circuit.

ça faisait très Pro :slight_smile:

L'arduino gérait le count-down et pilotait aussi des relais qui bloquaient l'alimentation des rails de la piste. Donc un faux départ n'était pas possible - puisque le jus arrivait seulement quand le feu passait au vert.

Cependant bien sûr tout le monde trichait et tenait la manette à fond pendant la phase Rouge/Orange/Vert puisque ça ne faisait rien :slight_smile:

Donc on avant changé un peu la donne et aussi mis un capteur sur le fils des poignées de commandes qui permettait de voir si quelqu'un avait appuyé sur sa télécommande avant le feu vert. Il n'y avait comme cela pas de faux départ puisque pas de courant dans le rail, mais on pouvait enlever des points à ceux qui avaient appuyé sur la manette trop tôt.

J-M-L:
Dans un projet sur lequel j'avais travaillé avec des jeunes on avait pris des petits composants comme cela à moins de 1 euro pour mettre de part et d'autre du circuit.

bonjour
merci pour l'info J-M-L c'est super ces petit feux tricolore moi je me suis fait le mien

et une petite video ici

Joli montage ça fait super pro ! (pas clické sur la vidéo car tinypic c’est louche - site financé par plein de pub agressives et usage de flash qui n’est pas sécurisé et ne fonctionne pas sur mon smartphone de toutes façons)

J-M-L:
Joli montage ça fait super pro ! (pas clické sur la vidéo car tinypic c’est louche - site financé par plein de pub agressives et usage de flash qui n’est pas sécurisé et ne fonctionne pas sur mon smartphone de toutes façons)

merci

ezgif.com-resize.gif