IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

Jeu de cible de hockey : problème de boucle


Sujet :

Arduino

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2020
    Messages : 8
    Par défaut Jeu de cible de hockey : problème de boucle
    bonjour je souhaite faire un jeu de tir pour une école de hockey avec 4 cibles lumineuses qui s'allument façon chenillard puis la cible 1 s'allume et attend qu'on la frappe avec un palet puis le chenillard reprend et c'est au tour de la cible 2 etc...
    pour l'expérimentation je teste avec 4 led et 4 boutons pousoir.
    pour les led:
    L1 pin2 (led cible1)
    L2 pin3 (led cible2)
    L3 pin4 (led cible3)
    L4 pin4 (led cible4)
    B1 pin5 (bouton cible1)
    B2 pin6 (bouton cible2)
    B3 pin7 (bouton cible3)
    L4 pin8 (bouton cible4)

    les entrées et sorties sont bien deffinis car mon programme de chenillard fonctionne bien; je l'ai appelé (roulette)
    mon problème se situe dans le fait de faire les boucles pour interroger l'etat du bouton et agir en conséquence.

    le prog devrait faire:

    roulette;
    allumer L1
    attendre que B1 soit haut
    quand B1 est haut
    éteindre L1
    roulette
    allumer L2
    attendre que B2 soit haut
    quand B2 est haut
    éteindre L2
    roulette
    allumer L3
    attendre que B3 soit haut
    quand B3 est haut
    éteindre L3
    roulette
    allumer L4
    attendre que B4 soit haut
    quand B4 est haut
    éteindre L4
    roulette

    voila auriez vous une solution pour moi car ça fait deux semaine que s'essaye toute sorte de boucle sans succès et ça me tien à cœur de réussir pour les enfants merci par avance.

  2. #2
    Membre Expert
    Avatar de jpbbricole
    Homme Profil pro
    Retraité des réseaux informatiques
    Inscrit en
    Février 2013
    Messages
    1 017
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Retraité des réseaux informatiques
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 1 017
    Par défaut
    Bonjour laparano

    As-tu, déjà, un bout de programme?
    Si oui, mets-le en ligne.

    Cordialement
    jpbbricole

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2020
    Messages : 8
    Par défaut
    en fait j'ai que le sous programme roulette qui fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    const int L1=2;
    const int L2=3;
    const int L3=4;
    const int L4=5;
    const int B1=6;
    const int B2=7;
    const int B3=8;
    const int B4=9;
     
     
     
    void setup() {
      // put your setup code here, to run once:
     
    pinMode(B1,INPUT);
    pinMode(B2,INPUT);
    pinMode(B3,INPUT);
    pinMode(B4,INPUT);
    pinMode(L1,OUTPUT);
    pinMode(L2,OUTPUT);
    pinMode(L3,OUTPUT);
    pinMode(L4,OUTPUT);
     
     
    }
     
    void loop() {
     
     
     
     
     
    }
     
     
     
     
    void roulette ()
    {
    digitalWrite(l1,HIGH);
    delay(200);
    digitalWrite(l1,LOW);
    digitalWrite(l2,HIGH);
    delay(200);
    digitalWrite(l2,LOW);
    digitalWrite(l3,HIGH);
    delay(200);
    digitalWrite(l3,LOW);
    digitalWrite(l4,HIGH);
    delay(200);
    digitalWrite(l4,LOW);
    digitalWrite(l3,HIGH);
    delay(200);
    digitalWrite(l3,LOW);
    digitalWrite(l2,HIGH);
    delay(200);
    digitalWrite(l2,LOW);
    }

  4. #4
    Membre Expert
    Avatar de jpbbricole
    Homme Profil pro
    Retraité des réseaux informatiques
    Inscrit en
    Février 2013
    Messages
    1 017
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Retraité des réseaux informatiques
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 1 017
    Par défaut
    Bonjour laparano

    Tout d'abord, il faut mettre ton programme entre des balises en cliquant sur l'icône # et en collant ton programme.
    Question, quel type de contactes utilises-tu, out-il des résistances de PULL_UP, sinon il faut mettre ces PULL_UP à l'initialisation des ports.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      pinMode(pinNun, INPUT_PULLUP);
    Pour ce qui est de ton programme, c'est un peu fait "à la hache" et celà deviendra, assez rapidement, difficile à faire évoluer. Si tu le veux bien, on peut reprendre tout ça par bouts, de façon un peu plus structurée.

    A+
    Cordialement
    jpbbricole

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2020
    Messages : 8
    Par défaut
    Avec joie j'utilise des bp avec une résistance de 4,7k en pull down et effectivement ça fait 20 ans que j'ai pas codé donc ça se ressent

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 27
    Par défaut
    Un bout de code pour commencer, pas testé, vérifier que les pins ont bien une résistance interne pour le pull up.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
     
    byte LED[4]={2,3,4,5}; 
    byte Bouton[4]={6,7,8,9}; 
    const byte nombreBouton=4;
    byte LectureBouton[nombreBouton];
    byte EtatbuttonDefaut=1;
     
    void setup() {
      for (byte i = 0; i < nombreBouton; i++) {
        pinMode(Bouton[i], INPUT_PULLUP);
        pinMode(LED[i], OUTPUT);
      }
    }
     
    void loop() {
      delay(2000);
     
      for (byte i = 0; i < nombreBouton; i++) {
        LectureBouton[i] = EtatbuttonDefaut;
      }
     
      for (byte i = 0; i < nombreBouton; i++) {
        roulette();
        delay(1000);
        digitalWrite(LED[i], HIGH);
        while (LectureBouton[i] == EtatbuttonDefaut) {
          LectureBouton[i] = digitalRead(Bouton[i]);
          delay(50);
        }
        digitalWrite(LED[i], LOW);
        delay(500);
      } 
    }
     
    void roulette ()
    {
      for (int i = 0; i < nombreBouton; i++) {
        digitalWrite(LED[i], HIGH);
        delay(500);
        digitalWrite(LED[i], LOW);
        delay(500);
      }
    }

Discussions similaires

  1. Jeu du pendu sur console - problème de boucle
    Par Pif_Paf_Pouf dans le forum Débuter
    Réponses: 4
    Dernier message: 13/10/2014, 16h36
  2. Un jeu d'invasion en POO - Problème de boucle
    Par <arobase> dans le forum Tkinter
    Réponses: 2
    Dernier message: 10/05/2008, 17h48
  3. Jeu du pendu : problème de boucle
    Par hitman_47 dans le forum Pascal
    Réponses: 31
    Dernier message: 03/01/2008, 19h58
  4. Problème de boucle
    Par basclln dans le forum C++
    Réponses: 19
    Dernier message: 02/04/2005, 09h13
  5. [Flash MX ]Un jeu en flash mais un problème !
    Par barthmania dans le forum Flash
    Réponses: 9
    Dernier message: 02/03/2004, 20h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo