IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Téléchargé 17 fois
Vote des utilisateurs
1 
0 
Détails
Licence : Non renseignée
Mise en ligne le 18 mars 2023
Plate-formes : Linux, Mac, Windows
Langue : Français
Référencé dans
Navigation

Piloter un afficheur 7-segments à 8 digits (et 74HC595 x 2)

Piloter un afficheur 7-segments à 8 digits
(2 x 4 digits à anode commune) avec 2 registres à décalage 74HC595 chainés (fonctionnement multiplexé).
Voir le schéma du document Mod-LED-Display-8D-74HC595.pdf.

Deux fonctions sont proposées pour formater et afficher des nombres entiers ou des flottants.

Affichage d'un entier non signé 16 bits :
void led_display_7seg_write_uint16(unsigned int value , enum align_t align);
- value : valeur à afficher entre 0 et 65535
- align : LEFT_ALIGN ou RIGHT_ALIGN

Affichage d'un flottant (au format "[-]d.ddd") :
void led_display_7seg_write_float(float value, byte min_width, byte num_digits_after_decimal);
- min_width = largeur mini de la chaîne de caractères
- num_digits_after_decimal = nombre de chiffres après la virgule

Voir aussi la fonction dtostrf() pour la définition des paramètres.
Avatar de ChampAng
Futur Membre du Club https://www.developpez.com
Le 29/04/2023 à 18:50
Bonjour, Bon Travail

J'avais des inversions de digits gauche-droite et inversée. Corrections apportées. Mais je pense que cela dépend du fabricant :
https://fr.aliexpress.com/item/32834757140.html

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
const byte DIGIT_NUM[8] = {
  0b00000001,  //SEG0
  0b00000010,  //SEG1
  0b00000100,  //SEG2
  0b00001000,  //SEG3
  0b00010000,  //SEG4
  0b00100000,  //SEG5
  0b01000000,  //SEG6
  0b10000000   //SEG7
Avatar de f-leb
Responsable Arduino et Systèmes Embarqués https://www.developpez.com
Le 29/04/2023 à 20:10
Bonsoir,

Je me souviens en effet d'avoir galéré avec une façon de câbler les digits aux registres à décalage d'une logique imparable
Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
const byte DIGIT_NUM[8] = {
  0b00001000,  //SEG0
  0b00000100,  //SEG1
  0b00000010,  //SEG2
  0b00000001,  //SEG3
  0b10000000,  //SEG4
  0b01000000,  //SEG5
  0b00100000,  //SEG6
  0b00010000   //SEG7
};


Ce sont des afficheurs de la marque RobotDyn (j'en ai encore 5 avec ce même défaut), une marque qui m'avait l'air sérieuse à l'époque, mais il semble que la société ait fait pschitt depuis... On se demande pourquoi
Avatar de rico07
Nouveau Candidat au Club https://www.developpez.com
Le 02/08/2023 à 17:33
Bonjour,

Pour ma part, il ne se passe rien à l'écran.
J'ai :
DIO => Pin 5
SCLK => Pin 6
RCLK => Pin 7

Programme chargé, mais rien....

Merci pour vos retours.
Avatar de f-leb
Responsable Arduino et Systèmes Embarqués https://www.developpez.com
Le 02/08/2023 à 18:07
Bonjour,

Citation Envoyé par rico07 Voir le message

DIO => Pin 5
SCLK => Pin 6
RCLK => Pin 7

Je pense que tu as inversé 5 et 7. DIO, c'est DATA_IN_PIN qui doit être sur la pin 7. RCLK, c'est LATCH_PIN qui doit être sur la pin 5.
Code : Sélectionner tout
1
2
3
enum { LATCH_PIN = 5,
       CLOCK_PIN = 6,
       DATA_IN_PIN = 7 };
Il est vrai que ce serait plus simple si tout le monde s'accordait sur les noms à donner aux entrées-sorties
Developpez.com décline toute responsabilité quant à l'utilisation des différents éléments téléchargés.