un dé composé de 5 leds. Problème


bonjour,

je suis un novice, et je travaille sur un dé à 5 leds composé sur une breadboard.
un bouton pression active le lancé virtuel du dé. une série de chiffres aléatoires apparaissent selon la constellation classique du dé, puis se stabilise pour laisse découvrir le résultat aléatoire offert par le dé.

le problème dont je fais face se situe sur l'activation du bouton. il ne fonctionne pas.

voici la déclaration des variables:

code: [select]
//déclaration des variables

  //leds sur les pins 2 à 6 correspondants aux valeurs de 1-5 du dé (le 6 laissant les leds éteintes)
    int ledhautgauche=2;
    int ledbasgauche=3;
    int ledcentre=4;
    int ledhautdroite=6;
    int ledbasdroite=5;
  //bouton sur le pin 7
    int bouton=7;
  // initialisation du stockage du résultat aléatoire dans 'nombre'
    int nombre;
//////////////////////////////////////////////////////////////////////


voici la définition de la carte:

code: [select]
void setup()
{
    //appel de la fonction randomseed() pour la séquence aléatoire
    randomseed(analogread (0));
   
    //pin 2 à 6 en mode output
    (int m=2; m<7; m=m++)
    {pinmode(m,output);}
    //pin 7 du bouton en mode input_pullup
    pinmode (bouton, input_pullup);
    //appel de la fonction 'setzero()' pour tout éteindre
    setzero ();
}
////////////////////////////////////////////////////////////////////////


voici le corps du programme

code: [select]
//boucle principale

void loop()
{
    //test de l'état du bouton avec boolean etatbouton
    boolean etatbouton = digitalread (bouton);
    if (etatbouton == false)
    {for (int afflent=100; afflent<801; afflent=2*afflent)  //boucle qui temporise l'affichage de plus en plus lentement
            {
                //exctinction brève des leds (100ms)
                setzero ();
                //tirage d'un nombre aléatoire avec la fonction random()
                nombre = random(0,6);
                //appel de la fonction d'allumage des leds
                allumage();
                delay(afflent);//temporisation
            }//sortie de la boucle de temporisation
    }//sortie du test bouton
//////////////////////////////////////////////////////////////////////////////


voici les fonctions associées au projet.

code: [select]
// les fonctions du programme

    //déclaration de la fonction setzero()
    void setzero()
    {for (int zero=0; zero<5; zero=zero++)
        {digitalwrite(zero+2,low);
        delay (100);}
    }
   
    //la fonction d'allumage
    void allumage()
    {
      if (nombre==1){nombre1();}
      if (nombre==2){nombre2();}
      if (nombre==3){nombre3();}
      if (nombre==4){nombre4();}
      if (nombre==5){nombre5();} 
      //inutile de tester le 0 car on commencé par tout éteindre
      else return;}
   
    // la fonction d'alumage des motifs
    void nombre1()
    {
    digitalwrite(ledcentre,high);
    }

    void nombre2()
    {
    digitalwrite(ledhautdroite,high);
    digitalwrite(ledbasgauche,high);
    }
   
    void nombre3()
    {
    digitalwrite(ledhautdroite,high);
    digitalwrite(ledcentre,high);
    digitalwrite(ledbasgauche,high);
    }

    void nombre4()
    {
    digitalwrite(ledhautgauche,high);
    digitalwrite(ledhautdroite,high);
    digitalwrite(ledbasgauche,high);
    digitalwrite(ledbasdroite,high);
   }

    void nombre5()
    {
    digitalwrite(ledhautgauche,high);
    digitalwrite(ledbasgauche,high);
    digitalwrite(ledhautdroite,high);
    digitalwrite(ledbasdroite,high);
    digitalwrite(ledcentre,high);
    }



le montage fait sur le breadboard est établi comme correct.
( pin 2,3,4,5,6 utilisés pour l'allumage ; pin 7 pour le bouton déclaré en input_pullup)

pourquoi ça ne marche pas ?.. la compilation et le téléversement sont acceptés sans erreurs.

merci ))

bonjour,

si tu penses que ton bouton ne fonctionne pas correctement, la première chose à faire est d'afficher son état dans le moniteur série.

dans setup()
code: [select]
serial.begin(115200);
après la lecture du bouton
code: [select]
serial.println(etatbouton);

tu ouvres le moniteur série que tu règles à 115200 bds et tu voies déjà ce qui se passe quand tu appuies sure le bouton


Arduino Forum > International > Français (Moderators: jfs, Snootlab) > un dé composé de 5 leds. Problème


arduino

Comments

Popular posts from this blog

DHT11 Time out error using v0.4.1library

Sketch upload fails with Java error (___REMOVE___/bin/avrdude)!

Arduino Uno + KTY81/210 temperature sensor