Chiffres différents par digits, 74SL47
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

Chiffres différents par digits, 74SL47



  1. #1
    XDamienX007

    Chiffres différents par digits, 74SL47


    ------

    Bonjour,
    Je possède un Arduino, un 74SL47 et un afficheur 7 segments 3 digits (http://i00.i.aliimg.com/img/pb/287/9...900287_207.jpg)

    L'afficheur fonctionne très bien, mais le chiffre est affiché sur les 3 digits. Comment faire pour afficher des chiffres différents sur chaque digits ?

    Exemple: Je veux afficher le nombre '123', comment faire?

    Mon afficheur possède 12 broches:
    - 3 "sorties" (une pour chaque digits)
    - 7 "entrées" (une pour chaque led...)
    - 1 je_sais_pas_a_quoi_il_sert

    Je ne sais pas du tout si c'est une anode ou une cacode commune (Les 3 digits sont reliés au +5 avec une résistance si ça peut aider..)
    C'est bien un multiplexé car je l'ai récupéré sur un jeu de fléchettes, il affichait le score et il afficher 500 par exemple.
    Je vous avoue que j'ai fait le montage comme je pouvais, avec les datasheets et les schéma sur internet..
    J'ai modifié à ma sauce pour que ça fonctionne ! Je précise que le point ne s'allume pas, ou je sais pas comment l'allumer..
    Le micro-contrôleur est un Arduino Uno, donc il est pas assez rapide pour afficher tout les digits un par un je pense..

    Voilà, je rappel la question:
    Comment afficher '123' sur un afficheur 7 segments 3 digits ?

    Je vous remercie d'avance.

    -----

  2. #2
    Picooz

    Re : Chiffres différents par digits, 74SL47

    Ton afficheur est un afficheur a anode commune, l'allumage d'un segment d'un chiffre se fait par la mise au potentiel bas de sa cathode.
    Les 7 pins correspondent aux cathodes des 7 segments.
    Les 3 correspondent aux anode qui "activent" un 7 segment.
    Le dernier pin correspond au point.

    Pour contrôler un afficheur de ce type, il faut balayer en permanence les 3 7 segments.
    Je m'explique :
    Pour afficher 1, 2 et 3 il faut : "allumer le premier 7 segment", c'est à dire mettre sur le potentiel haut l'anode du premier 7 segments, puis mettre au potentiel bas les cathode des segments qui doivent s'allumer
    Ensuite il faut "éteindre le premier 7 segment", c'est à dire mettre au potentiel bas l'anode du premier 7 segments, et au potentiel haut chaque segments.
    Et ainsi de suite pour les 3 segments. Il faut effectuer cette tâche assez de fois par seconde pour jouer avec la persistance rétinienne et que l’œil humain ne s’aperçoive pas que les 7 segments sont allumer puis éteint successivement.

    (Dans ton cas :
    Potentiel bas = la masse
    Potentiel haut = 5V)

    J'espère que mon explication est claire


    Nom : display7seg_anim.gif
Affichages : 65
Taille : 60,3 Ko
    Dernière modification par Picooz ; 16/02/2015 à 18h13.

  3. #3
    Picooz

    Re : Chiffres différents par digits, 74SL47

    Je n'ai pas fait gaffe, le gif ci dessus représente bien le concept mais c'est un afficheur a cathode commune (l'inverse donc) mais vu que tu as réussi a allumer le tiens, tu peux maintenant faire la distinction

  4. #4
    XDamienX007

    Re : Chiffres différents par digits, 74SL47

    Merci de ta réponse.

    Je possède des 8050D (NPN) Lien:http://www.datasheetarchive.com/dl/D...SA00422680.pdf

    Le contacte fonctionne, mais rien se s'affiche avec mon code...
    Mon code: http://pastebin.com/9WmbEwh5

    Pour l'instant seul 2 digits sont branchés (j'attend de savoir si je dois changer les transistors avant d'en recommander)

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

    Re : Chiffres différents par digits, 74SL47

    J'ai modifié à ma sauce pour que ça fonctionne"
    Je pense qu'il vaut mieux essayer son propre petit code La preuve, ça ne marche pas et le code que tu as présenté fait tout autre chose.
    Même si ton code est long et pas très beau, il vaut mieux essayer !
    Allez je t'aide :


    Code:
    const int A = 0;
    const int B = 1;
    const int C = 2;
    const int D = 3;
    
    const int digit1 = 4;
    const int digit2 = 5;
    const int digit3 = 6;
    
    
    void setup()
    {
      pinMode(A, OUTPUT);
      pinMode(B, OUTPUT);
      pinMode(C, OUTPUT);
      pinMode(D, OUTPUT);
      
      pinMode(digit1, OUTPUT);
      pinMode(digit2, OUTPUT);
      pinMode(digit3, OUTPUT);
      
     }
    
    void loop()
    { 
      
      do
      {
    /********************************Affichage du premier segment****************************************/   
        digitalWrite(A, HIGH);        //on envoie un chiffre au decodeur 
        digitalWrite(B, HIGH);
        digitalWrite(C, HIGH);
        digitalWrite(D, HIGH);
      
        digitalWrite(digit1, HIGH);   //on active le premier 7 segment
        delay(5);                    //on attend 5ms le temps que l'afficheur s'empreigne de lumière :)
        digitalWrite(digit1, LOW);  //on desactive le premier 7 segment
    /********************************Fin d'affichage du premier segment***********************************/     
    
    
    
    /********************************Affichage du deuxieme segment****************************************/  
        digitalWrite(A, HIGH);
        digitalWrite(B, LOW);
        digitalWrite(C, LOW);
        digitalWrite(D, HIGH);
      
        digitalWrite(digit2, HIGH);    
        delay(5);
        digitalWrite(digit2, LOW);
      
     /********************************Fin d'affichage du deuxieme segment**********************************/ 
      
      
      
    /********************************Affichage du troisieme segment****************************************/  
        digitalWrite(A, LOW);
        digitalWrite(B, HIGH);
        digitalWrite(C, HIGH);
        digitalWrite(D, LOW);
      
        digitalWrite(digit3, HIGH);
        delay(5);
        digitalWrite(digit3, LOW);
     /********************************Fin d'affichage du troisieme segment*********************************/   
      
      }
      while(1);   //on recommence a l'infini
    
      
    }


    La mon code est très lourd et ne permet pas d'afficher un chiffre contenu dans une variable, à toi de trouver des solutions pour écrire un beau programme avec une belle fonction d'affichage .
    Pour t'aider : http://eskimon.fr/98-arduino-205-afficheurs-7-segments
    Il fait traite exactement du même sujet
    Dernière modification par Picooz ; 16/02/2015 à 20h08. Motif: problème UTF8

  7. #6
    XDamienX007

    Re : Chiffres différents par digits, 74SL47

    Merci beaucoup !

    J'ai préféré garder mon code (car il y avait toute la partie décodage infrarouge et je voulais pas oublier des trucs..)

    Je me suis juste servis de l'ordre des digitalWrite qui était mal organisé. Avec un delay ça fonctionne très bien !

    Je re-posterai mon code une fois le dernier bug résolu
    Le troisième digit ne fonctionne pas, il est superposé au deuxième...

Discussions similaires

  1. 39 Chiffres doubles, chiffres miroi 93
    Par Parsifal82 dans le forum Epistémologie et Logique (archives)
    Réponses: 1
    Dernier message: 24/06/2013, 23h53
  2. Last 3 digits
    Par invite4bfe448c dans le forum Mathématiques du collège et du lycée
    Réponses: 1
    Dernier message: 25/05/2012, 21h02
  3. entier aleatoire à 4 chiffres à condition que chacun des chiffres n'y figure qu'une fois, en Java :(
    Par invite0da6e6b6 dans le forum Programmation et langages, Algorithmique
    Réponses: 5
    Dernier message: 17/04/2011, 20h18
  4. Sum of digits
    Par invitecceb1161 dans le forum Mathématiques du supérieur
    Réponses: 27
    Dernier message: 08/06/2005, 22h58
Découvrez nos comparatifs produits sur l'informatique et les technologies.