• Première étape
  • Matériel et accessoires ; GPIO
  • Projets
  • Logiciel
    • Serveur Web
  • Arduino & ESP8266
  • Automatisation de la maison
  • Sonstiges
    • News
Facebook Twitter YouTube
Tutorials for Raspberry Pi Tutorials for Raspberry Pi
  • Matériel et accessoires ; GPIO
  • Projets
  • Logiciel
  • Serveur Web
  • Première étape
  • Automatisation de la maison
  • Anglais
  • Allemand
Tutorials for Raspberry Pi Tutorials for Raspberry Pi
Home»Matériel et accessoires ; GPIO»7 segments d’affichage (anode) avec MAX7219 / MAX7221 et Raspberry Pi

7 segments d’affichage (anode) avec MAX7219 / MAX7221 et Raspberry Pi

Facebook Twitter LinkedIn Tumblr Email Reddit
Share
Facebook Twitter LinkedIn Email Tumblr Reddit Telegram WhatsApp

Les écrans à 7 segments les plus courants sont les « Cathodes Communes », auxquelles ont destinées, entre autres, les micropuces MAX7219 et MAX7221. Il existe également des « Anodes communes », qui sont généralement beaucoup moins chères. Cependant, elles ne sont pas directement compatibles avec une telle micropuce. Ce tutoriel montre comment tout cela fonctionne. Toute personne qui souhaite en savoir plus sur les anodes ou les différences peut le faire ici.

 

Accessoires

Inspiré par cet article, j’ai eu l’idée de rendre les écrans à anodes compatibles avec le Pi. Pour cela, nous avons besoin :

  • 1-8 Écrans à 7 segments à anode commune (par exemple, ceux-ci ici)
  • Pilote de l’écran LED MAX7219 (ou MAX7221)
  • si nécessaire, des outils de soudure et des brasures

 

Connexion

Examinons d’abord la fiche technique de la CI.

max7219

Le lien avec les Raspberry Pi ressemble à ceci :

  • RPi Broche 2 (5V) => Broche 19 (V+)
  • RPi Broche 2 (5V) avec résistance de 10k ohm => Broche 18 (ISET)
  • RPi Broche 6 (GND) => Broche 4 et Broche 9 (GND)
  • RPi Broche 19 => Broche 1 (DIN)
  • RPi Broche 23 => Broche 13 (CLK)
  • RPi Broche 24 => Broche 12 (CHARGE)

 

Il s’agit maintenant des connexions entre l’écran à 7 segments et le MAX7219. En outre, la structure d’un tel affichage (pour s’assurer que les broches sont les mêmes, vous pouvez tester chaque broche sur deux piles de 1,5V en série, V+ sur le pôle positif et la broche respective sur le pôle négatif, la broche V + que vous connectez n’a pas d’importance):

7-seg
Habituellement, pour un écran cathodique, ce serait DIG 0 – DIG 7 pour chacun des V+ d’un écran (donc aussi au maximum 8 segments par MAx7219) et SEG A à SEG DP connectés en parallèle aux connexions respectives de l’écran à segments (SEG A à toutes les broches A des segments, etc.) Mais comme les anodes sont maintenant polarisées dans l’autre sens, nous devons aussi échanger les connexions :

  • DIG 0 => Connexions A (parallèle à toutes)
  • …
  • DIG 7 => Connexions DP (parallèle à tous)
  • SEG A => V + le segment à l’extrême droite
  • SEG B => V + le deuxième segment en partant de la droite
  • …
  • SEG DP => V + le segment le plus à gauche (seulement pour 8 segments)

Si vous avez moins de 8 segments, vous irez de droite à gauche tout au long et certaines broches SEG seront vides. Par exemple. Je n’ai que 4 segments connectés à SEG A – SEG D.

Soudé à un breadboard, il ressemble à ceci :

 

 

Contrôle

Tout d’abord, nous installons une bibliothèque pour le MAX7219 / 7221 afin de pouvoir le contrôler plus facilement. Si vous l’avez déjà fait (par exemple à cause de la matrice de points LED), vous pouvez bien sûr l’ignorer.

git clone https://github.com/rm-hull/max7219.git && cd max721

Après l’installation

sudo python setup.py install

Vous pouvez déjà tester les écrans. Inspiré par cet article, j’ai écrit un scénario pour le Pi :

sudo nano examples/segment.py

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#!/usr/bin/env python
 
import max7219.led as segment
 
#saves the values of all segment displays (max 8)
digValues = [0b00000000,
    0b00000000,
    0b00000000,
    0b00000000,
    0b00000000,
    0b00000000,
    0b00000000,
    0b00000000]
 
def display(dig, value):
    values = {}
    values['0'] = 0b01111110
    values['1'] = 0b00001100
    values['2'] = 0b10110110
    values['3'] = 0b10011110
    values['4'] = 0b11001100
    values['5'] = 0b11011010
    values['6'] = 0b11111010
    values['7'] = 0b00001110
    values['8'] = 0b11111110
    values['9'] = 0b11011110
    values[-1]  = 0b00000000 #empty sign
    values[' '] = 0b00000000
    values['A'] = 0b11101110
    values['b'] = 0b11111000
    values['C'] = 0b01110010
    values['d'] = 0b10111100
    values['E'] = 0b11110010
    values['F'] = 0b11100010
    values['G'] = 0b01111010
    values['H'] = 0b11101100
    values['I'] = 0b01100000
    values['J'] = 0b00011100
    values['K'] = 0b11101010
    values['L'] = 0b01110000
    values['O'] = 0b01111110
    values['P'] = 0b11100110
    values['q'] = 0b11001110
    values['r'] = 0b10100000
    values['S'] = 0b11011010
    values['t'] = 0b11110000
    values['U'] = 0b01111100
    values['-'] = 0b10000000
    values['_'] = 0b00010000
 
    bPosition = 0b00000001
 
    if dig < 1:
        bPosition = bPosition<<dig-1
 
    #go through all segment displays
    for x in range(8):
        if (values[value]) & (1 << x) :
            digValues[x] |= bPosition
        else:
            digValues[x] = (0b11111111 ^ bPosition) & digValues[x]
            #Senden
            segment.send_byte(x, digValues[x])
 
def showvalue(value):
    n = [char for char in str(value)]
    #fill all unused ads with the empty character
    n = ([-1]*8 + n)[-8:]
    n.reverse()
    index = 7
    for i in n:
        display(index, i)
        index = index -1
 
def main():
    segment.init()
    segment.clear()
    while True:
        x = str(raw_input('Bitte Wert eingeben: '))
        showvalue(x)
 
if __name__ == "__main__":
    main()

Comme vous pouvez le voir, j’ai déjà prédéfini tous les chiffres et quelques lettres. Certaines lettres (par exemple M, N, X, Y, … ne peuvent pas être affichées correctement sur un écran à 7 segments, elles sont donc manquantes). Vous pouvez également définir des combinaisons pour d’autres caractères, mais faites attention à commencer par le verso (par exemple, seul le segment G serait 0b10000000, le segment A serait 0b00000010, etc.)

Voici deux images avec l’entrée « 1234 » et « StOP » (faites attention aux majuscules / minuscules, car je n’ai pas défini toutes les lettres).

 

Amusez-vous bien avec !

7 segments anode anode commune cathode commune Écran à 7 segments max7219 max7221
Share. Facebook Twitter Pinterest LinkedIn Tumblr Email
Previous ArticleConnectez et contrôlez le détecteur de mouvement PIR Raspberry Pi
Next Article Utiliser un joystick sur le Raspberry Pi (avec MCP3008)

Related Posts

Connecter un clavier Raspberry Pi – Code Lock

Construire un capteur de porte / fenêtre Raspberry Pi avec Reed Relais

MCP3008 : Lire des signaux analogiques sur le Raspberry Pi

Contrôler le module RTC de Raspberry Pi – Horloge temps réel I2C

Leave A Reply Cancel Reply

Evaluation de l’humidité du sol avec le Raspberry Pi

Contrôler le module RTC de Raspberry Pi – Horloge temps réel I2C

Comment connecter et contrôler bande LED RVB WS2801 Raspberry Pi

Comment utiliser les photorésistances (luminosité/capteur de lumière) avec un Raspberry Pi?

Création d’un certificat SSL Raspberry Pi gratuit avec Let’s Encrypt

Installer Windows 10 IoT sur le Raspberry Pi

ABONNEZ-VOUS MAINTENANT
Et recevez de nouveaux tutoriels dans votre boîte de réception.
Cliquez ici pour soumettre!

Merci!

Nous vous contacterons bientôt.

Tutorials for Raspberry Pi
Facebook Twitter YouTube
  • Politique de confidentialité
  • Conditions de service & Politique sur les cookies

Type above and press Enter to search. Press Esc to cancel.