Répondre à la discussion
Affichage des résultats 1 à 11 sur 11

Compteur afficheur 7 segments et Arduino



  1. #1
    Sky234

    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. Publicité
  3. #2
    Gérard

    Re : Compteur afficheur 7 segments et Arduino

    Montre déjà ce que tu as fait.

    De rien.

  4. #3
    Sky234

    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

  5. #4
    Sky234

    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 à 16h54. Motif: Ajout balises code

  6. #5
    freepicbasic

    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;
    
    }
    A+, pat

  7. A voir en vidéo sur Futura
  8. #6
    Sky234

    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 à 16h55. Motif: Ajout balises [code]

  9. Publicité
  10. #7
    Sky234

    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 à 16h55. Motif: Ajout balises [code]

  11. #8
    freepicbasic

    Re : Compteur afficheur 7 segments et Arduino

    if(compte=9) NON

    if(compte==9) OUI
    A+, pat

  12. #9
    Sky234

    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;
    
    }
    Dernière modification par Sky234 ; 02/11/2015 à 21h21.

  13. #10
    freepicbasic

    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
    A+, pat

  14. #11
    Sky234

    Re : Compteur afficheur 7 segments et Arduino

    Merci beeeaaaaaauuuucoup
    Build it, Hack it, Share it !

Sur le même thème :

Discussions similaires

  1. PIC16F84A Afficheur 7 segments (Compteur) Probleme
    Par SmoZy dans le forum Électronique
    Réponses: 8
    Dernier message: 12/04/2014, 18h55
  2. un compteur => un afficheur 7 segments
    Par Antoane dans le forum Électronique
    Réponses: 18
    Dernier message: 27/03/2012, 06h56
  3. compteur afficheur 7 segments
    Par steph496 dans le forum Électronique
    Réponses: 9
    Dernier message: 28/10/2010, 07h48
  4. Compteur décompteur avec afficheur 7 segments
    Par alexandreRR dans le forum Électronique
    Réponses: 20
    Dernier message: 03/06/2009, 11h54
  5. Realise un compteur avec afficheur 7 segments
    Par louping62 dans le forum Électronique
    Réponses: 4
    Dernier message: 19/12/2007, 21h38