Compteur afficheur 7 segments et Arduino
Répondre à la discussion
Affichage des résultats 1 à 11 sur 11

Compteur afficheur 7 segments et Arduino



  1. #1
    invite417b53bb

    Question Compteur afficheur 7 segments et Arduino


    ------

    Bonjour,

    J'aimerai faire un compteur de 0 a 9 avec un afficheur 7 segments a cathode commune et un bouton en utilisant un registre a décalage (shift register).Je voudrai avoir un truc du genre appuyer sur le Bouton et ca avance de 1 jusqu'a 9.Je dispose deja d'un montage avec le shift register le bouton et l'afficheur.Ce qui me pose probleme c'est surtout le code. Quelqu'un pourrais m'aider.


    Merci

    -----

  2. #2
    Gérard

    Re : Compteur afficheur 7 segments et Arduino

    Montre déjà ce que tu as fait.

    De rien.

  3. #3
    invite417b53bb

    Re : Compteur afficheur 7 segments et Arduino

    J'ai fais quelque chose comme ça cf piece jointe. J'ai essayé avec ce tuto http://forum.snootlab.com/viewtopic.php?f=38&t=1003, j'ai copié le code telquel et coller j'ai televerser mais ca ne marche pas.
    Images attachées Images attachées  

  4. #4
    invite417b53bb

    Re : Compteur afficheur 7 segments et Arduino

    Je me suis un peu creuser la tete et j'en suis arriver là mais :
    lorsque mon afficheur arrive à 9 et bien comment faire pour le rendre à zero ?
    Voici le code et merci d'avance:
    Code:
    // Déclaration des pins auxquelles sont reliés le registre et le bouton
    const int latchPin = 2;
    const int clockPin = 4;
    const int dataPin = 3;
    const int button = 13;
    
    // Déclaration des constantes liées au bouton
    int compte = 0;
    int buttonState = LOW; 
    int prevState = LOW;
    int chiffre;
    
    // Définition des segments à allumer pour l'affichage des chiffres :
    // Seuls la barre centrale "G" et le point décimal sont éteints pour afficher 0, etc.
    const byte digit[10] = 
    {
     //ABCDEFG°  
     63, // 0
      6, // 1
      91, // 2
      79, // 3
      102, // 4
      109, // 5
    125, // 6
      7, // 7
      127, // 8
      103, // 9
    };
    
    void setup()
    {
      pinMode(button, INPUT);
      pinMode(latchPin, OUTPUT);
      pinMode(clockPin, OUTPUT);
      pinMode(dataPin, OUTPUT);
      
    }
    
    void loop()
    {
      buttonState = digitalRead(button);
       
      // si l'état du bouton a changé
      if (buttonState != prevState)
      {
        // et qu'il est haut (= on appuie dessus)
        if (buttonState == HIGH)
        {
          // on incrémente le compteur
          compte++;
          
          // si le compte = 0 alors chiffre vaudra 63, car 63 est la valeur dans la case 0 du tableau digit ci dessus
          if (compte = 0)
        {chiffre = digit[0];
        }
        
        if (compte = 1)
        {chiffre = digit[1];
        }
      
       
        if(compte = 2)
        {chiffre = digit[2];
        }
    
        if(compte = 3)
        {chiffre = digit[3];
        }
    
        if(compte = 4)
        {chiffre = digit[4];
        }
    
        if(compte = 5)
        {chiffre = digit[5];
        }
    
        if(compte = 6)
        {chiffre = digit[6];
        }
    
        if(compte = 7)
        {chiffre = digit[7];
        }
    
        if(compte = 8)
        {chiffre = digit[8];
        }
    
        if(compte =9)
        {chiffre = digit[9];
       
        }
        }
       
      }
    
     
      digitalWrite(latchPin, LOW);
      // on envoie les données
      shiftOut(dataPin, clockPin, MSBFIRST, chiffre);
      // et on affiche le nombre souhaité
      digitalWrite(latchPin, HIGH);
      // et on stocke l'état du bouton pour le prochain tour
    
      prevState = buttonState;
    
    }
    Dernière modification par Antoane ; 02/11/2015 à 17h54. Motif: Ajout balises code

  5. A voir en vidéo sur Futura
  6. #5
    invitef86a6203

    Re : Compteur afficheur 7 segments et Arduino

    Compilé OK
    Pas essayé en réel...
    J'ai ajouté un delay de 200ms pour éviter les rebonds

    Code:
    // Déclaration des pins auxquelles sont reliés le registre et le bouton
    const int latchPin = 2;
    const int clockPin = 4;
    const int dataPin = 3;
    const int button = 13;
    
    // Déclaration des constantes liées au bouton
    int compte = 0;
    int buttonState = LOW;
    int prevState = LOW;
    int chiffre;
    
    // Définition des segments à allumer pour l'affichage des chiffres :
    // Seuls la barre centrale "G" et le point décimal sont éteints pour afficher 0, etc.
    const byte digit[10] =
    {
    //ABCDEFG°
    63, // 0
    6, // 1
    91, // 2
    79, // 3
    102, // 4
    109, // 5
    125, // 6
    7, // 7
    127, // 8
    103, // 9
    };
    
    void setup()
    {
    pinMode(button, INPUT);
    pinMode(latchPin, OUTPUT);
    pinMode(clockPin, OUTPUT);
    pinMode(dataPin, OUTPUT);
    
    }
    
    void loop()
    {
      
      buttonState = digitalRead(button);
    
      // si l'état du bouton a changé
      if (buttonState != prevState)
        {
        // et qu'il est haut (= on appuie dessus)
        if (buttonState == HIGH)
          {
          // on incrémente le compteur
          compte++;
          if (compte>9)
            compte=0;
    
          chiffre = digit[compte];
          delay(200);
        }
    
    }
    
    
    digitalWrite(latchPin, LOW);
    // on envoie les données
    shiftOut(dataPin, clockPin, MSBFIRST, chiffre);
    // et on affiche le nombre souhaité
    digitalWrite(latchPin, HIGH);
    // et on stocke l'état du bouton pour le prochain tour
    
    prevState = buttonState;
    
    }

  7. #6
    invite417b53bb

    Re : Compteur afficheur 7 segments et Arduino

    Merci infiniment. J'ai essayé d'allumer une led_verte lorsque le compteur est à 9 et allumer une led_jaune lorsque le compteur est < 9. Mais l'afficheur s'arrete à 9 et ne bouge plus. Voici le code:
    Code:
    // Déclaration des pins auxquelles sont reliés le registre et le bouton
    const int latchPin = 2;
    const int clockPin = 4;
    const int dataPin = 3;
    const int button = 13;
    const int led_verte = 7;
    const int led_jaune = 8;
    // Déclaration des constantes liées au bouton
    int compte = 0;
    int buttonState = LOW;
    int prevState = LOW;
    int chiffre;
    
    // Définition des segments à allumer pour l'affichage des chiffres :
    // Seuls la barre centrale "G" et le point décimal sont éteints pour afficher 0, etc.
    const byte digit[10] =
    {
    //ABCDEFG°
    63, // 0
    6, // 1
    91, // 2
    79, // 3
    102, // 4
    109, // 5
    125, // 6
    7, // 7
    127, // 8
    103, // 9
    };
    
    void setup()
    {
    pinMode(button, INPUT);
    pinMode(latchPin, OUTPUT);
    pinMode(clockPin, OUTPUT);
    pinMode(dataPin, OUTPUT);
    
    }
    
    void loop()
    {
      
      buttonState = digitalRead(button);
    
      // si l'état du bouton a changé
      if (buttonState != prevState)
        {
        // et qu'il est haut (= on appuie dessus)
        if (buttonState == HIGH)
          {
          // on incrémente le compteur
          compte++;
          if (compte>9)
            {compte=0;}
            if(compte=9)
            {digitalWrite(led_jaune, LOW);
              digitalWrite(led_verte, HIGH);
             }
            if(compte < 9)
            {digitalWrite(led_verte, LOW);
              digitalWrite(led_jaune, HIGH);}
         
    
          chiffre = digit[compte];
          delay(200);
          
        }
    
    }
    
    
    digitalWrite(latchPin, LOW);
    // on envoie les données
    shiftOut(dataPin, clockPin, MSBFIRST, chiffre);
    // et on affiche le nombre souhaité
    digitalWrite(latchPin, HIGH);
    // et on stocke l'état du bouton pour le prochain tour
    
    prevState = buttonState;
    
    }
    Dernière modification par Antoane ; 02/11/2015 à 17h55. Motif: Ajout balises [code]

  8. #7
    invite417b53bb

    Re : Compteur afficheur 7 segments et Arduino

    ]Merci infiniment. J'ai essayé d'allumer une led_verte lorsque le compteur est à 9 et allumer une led_jaune lorsque le compteur est < 9. Mais l'afficheur s'arrete à 9 et ne bouge plus. Voici le code:
    Code:
    // Déclaration des pins auxquelles sont reliés le registre et le bouton
    const int latchPin = 2;
    const int clockPin = 4;
    const int dataPin = 3;
    const int button = 13;
    const int led_verte = 7;
    const int led_jaune = 8;
    // Déclaration des constantes liées au bouton
    int compte = 0;
    int buttonState = LOW;
    int prevState = LOW;
    int chiffre;
    
    // Définition des segments à allumer pour l'affichage des chiffres :
    // Seuls la barre centrale "G" et le point décimal sont éteints pour afficher 0, etc.
    const byte digit[10] =
    {
    //ABCDEFG°
    63, // 0
    6, // 1
    91, // 2
    79, // 3
    102, // 4
    109, // 5
    125, // 6
    7, // 7
    127, // 8
    103, // 9
    };
    
    void setup()
    {
    pinMode(button, INPUT);
    pinMode(latchPin, OUTPUT);
    pinMode(clockPin, OUTPUT);
    pinMode(dataPin, OUTPUT);
    
    }
    
    void loop()
    {
      
      buttonState = digitalRead(button);
    
      // si l'état du bouton a changé
      if (buttonState != prevState)
        {
        // et qu'il est haut (= on appuie dessus)
        if (buttonState == HIGH)
          {
          // on incrémente le compteur
          compte++;
          if (compte>9)
            {compte=0;}
            if(compte=9)
            {digitalWrite(led_jaune, LOW);
              digitalWrite(led_verte, HIGH);
             }
            if(compte < 9)
            {digitalWrite(led_verte, LOW);
              digitalWrite(led_jaune, HIGH);}
         
    
          chiffre = digit[compte];
          delay(200);
          
        }
    
    }
    
    
    digitalWrite(latchPin, LOW);
    // on envoie les données
    shiftOut(dataPin, clockPin, MSBFIRST, chiffre);
    // et on affiche le nombre souhaité
    digitalWrite(latchPin, HIGH);
    // et on stocke l'état du bouton pour le prochain tour
    
    prevState = buttonState;
    
    }
    Dernière modification par Antoane ; 02/11/2015 à 17h55. Motif: Ajout balises [code]

  9. #8
    invitef86a6203

    Re : Compteur afficheur 7 segments et Arduino

    if(compte=9) NON

    if(compte==9) OUI

  10. #9
    invite417b53bb

    Re : Compteur afficheur 7 segments et Arduino

    Merci encore une fois et dsl si je te casse la tete mais j'essaye de desincrementer le compteur en utilisant ce code mais encore une fois ca ne fonctionne pas. Merci encore !
    Code:
     // Déclaration des pins auxquelles sont reliés le registre et le bouton
    const int latchPin = 2;
    const int clockPin = 4;
    const int dataPin = 3;
    const int button1 = 13;
    const int button2 = 9;
    const int led_verte = 7;
    const int led_jaune = 8;
    
    // Déclaration des constantes liées au bouton1
    int button1State = LOW;
    int prevState = LOW;
    // Déclaration des constantes liées au bouton2
    int button2State = LOW;
    int prevState2 = LOW;
    // Declaration des variables qu'on utilisera
    int compte = 0;
    int chiffre;
    
    //Definition des valeurs pour afficher les chiffres
    const byte digit[10] =
    {
    //ABCDEFG°
    63, // 0
    6, // 1
    91, // 2
    79, // 3
    102, // 4
    109, // 5
    125, // 6
    7, // 7
    127, // 8
    103, // 9
    };
    
    void setup()
    {
    pinMode(button1, INPUT);
    pinMode(button2, INPUT);
    pinMode(latchPin, OUTPUT);
    pinMode(clockPin, OUTPUT);
    pinMode(dataPin, OUTPUT);
    
    }
    
    void loop()
    {
      
      button1State = digitalRead(button1);
      button2State = digitalRead ( button2);
    
      // si l'état du bouton a changé
      if (button1State != prevState)
        {
        // et qu'il est haut (= on appuie dessus)
        if (button1State == HIGH)
          {
          // on incrémente le compteur
          compte++;
          if (compte>9)// si le compte est superieur à 9 il redeviendra 0
            {compte=0;}
            if(compte == 9)// si le compte = 9 alors led verte s'eteint et led jaune s'allume 
            {digitalWrite(led_jaune, LOW);
              digitalWrite(led_verte, HIGH);
             }
            if(compte < 9)// si le compte < 9 alors led verte s'eteint et led jaune s'allume
            {digitalWrite(led_verte, LOW);
              digitalWrite(led_jaune, HIGH);} 
          }
        }
     if (button2State != prevState2) // si l'état du bouton2 a changé
        { 
       if (button2State == HIGH)// et qu'il est heut
          {compte--;}// on desinccrement le compteur
          
        }
        chiffre = digit[compte];
        
        digitalWrite(latchPin, LOW);
    // on envoie les données
    shiftOut(dataPin, clockPin, MSBFIRST, chiffre);
    // et on affiche le nombre souhaité
    digitalWrite(latchPin, HIGH);
    // et on stocke l'état du bouton pour le prochain tour
    
    prevState = button1State;
    prevState2 = button2State;
    
    }

  11. #10
    invitef86a6203

    Re : Compteur afficheur 7 segments et Arduino

    Il faut tester si on dépasse en négatif et si oui mettre la valeur max ,ici 9.

    if (button2State == HIGH)// et qu'il est heut
    {
    compte--;
    if (compte<0) compte=9;
    }// on desinccrement le compteur

  12. #11
    invite417b53bb

    Re : Compteur afficheur 7 segments et Arduino

    Merci beeeaaaaaauuuucoup

Discussions similaires

  1. PIC16F84A Afficheur 7 segments (Compteur) Probleme
    Par invited93be9e9 dans le forum Électronique
    Réponses: 8
    Dernier message: 12/04/2014, 19h55
  2. un compteur => un afficheur 7 segments
    Par Antoane dans le forum Électronique
    Réponses: 18
    Dernier message: 27/03/2012, 07h56
  3. compteur afficheur 7 segments
    Par invite938b5933 dans le forum Électronique
    Réponses: 9
    Dernier message: 28/10/2010, 08h48
  4. Compteur décompteur avec afficheur 7 segments
    Par invite40abdd95 dans le forum Électronique
    Réponses: 20
    Dernier message: 03/06/2009, 12h54
  5. Realise un compteur avec afficheur 7 segments
    Par invite928d5d9d dans le forum Électronique
    Réponses: 4
    Dernier message: 19/12/2007, 22h38
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...