Nous avons créé une série de tutoriels Raspberry Pi, dans lesquels nous avons couvert l'interfaçage de Raspberry Pi avec tous les composants de base tels que LED, LCD, bouton, moteur à courant continu, servomoteur, moteur pas à pas, ADC, registre à décalage, etc. a publié quelques projets Raspberry Pi simples pour les débutants, ainsi que de bons projets IoT. Aujourd'hui, dans la continuité de ces tutoriels, nous allons contrôler le module matriciel LED 8x8 de Raspberry Pi. Nous allons écrire un programme python pour afficher les caractères sur le module matrice.
Vérifiez également l'interfaçage de la matrice LED 8x8 avec Arduino et de la matrice LED avec AVR Microcontorller.
Composants requis:
Ici, nous utilisons Raspberry Pi 2 Model B avec le système d'exploitation Raspbian Jessie. Toutes les exigences matérielles et logicielles de base sont décrites précédemment, vous pouvez les rechercher dans l'introduction de Raspberry Pi et le clignotement du voyant Raspberry PI pour commencer, à part ce dont nous avons besoin:
- Carte Raspberry Pi
- Alimentation (5v)
- Condensateur 1000uF (connecté à travers l'alimentation)
- Résistance 1KΩ (8 pièces)
Module matriciel 8x8 LED:
Un module de matrice de 8 * 8 LED contient 64 LED (diodes électroluminescentes) qui sont disposées sous la forme d'une matrice, d'où le nom de matrice de LED. Ces modules compacts sont disponibles en différentes tailles et plusieurs couleurs. On peut les choisir par commodité. La configuration PIN du module est comme indiqué sur l'image. Gardez à l'esprit que les broches du module ne sont pas dans l'ordre, les codes PIN doivent donc être numérotés exactement comme indiqué sur l'image pour éviter les erreurs.
Il y a 8 + 8 = 16 bornes communes dans le module LED Matrix. Sur eux, nous avons 8 bornes positives communes et 8 bornes négatives communes, sous forme de 8 lignes et 8 colonnes, pour connecter 64 LED sous forme de matrice. Si le module devait être dessiné sous la forme d'un schéma de circuit, nous aurons une image comme indiqué ci-dessous:
Donc, pour 8 lignes, nous avons 8 bornes positives communes (9, 14, 8, 12, 17, 2, 5). Considérez la première rangée, les LED de D1 à D8 ont une borne positive commune et la broche est sortie à PIN9 du module LED Matrix. Lorsque nous voulons qu'une ou toutes les LED d'une RANGée soient allumées, la broche correspondante du MODULE LED doit être alimentée avec + 3.3v.
Semblable aux bornes positives communes, nous avons 8 bornes négatives communes sous forme de colonnes (13, 3, 4, 10, 6, 11, 15, 16). Pour la mise à la terre de toute LED dans n'importe quelle colonne, la borne négative commune respective doit être mise à la terre.
Explication du circuit:
Les connexions effectuées entre le Raspberry Pi et le module de matrice LED sont indiquées dans le tableau ci-dessous.
Module de matrice de LED Pin no. |
Fonction |
N ° de broche GPIO du Raspberry Pi |
13 |
POSITIF0 |
GPIO12 |
3 |
POSITIF1 |
GPIO22 |
4 |
POSITIF2 |
GPIO27 |
dix |
POSITIF3 |
GPIO25 |
6 |
POSITIF4 |
GPIO17 |
11 |
POSITIF5 |
GPIO24 |
15 |
POSITIF6 |
GPIO23 |
16 |
POSITIF7 |
GPIO18 |
9 |
NÉGATIF0 |
GPIO21 |
14 |
NÉGATIF1 |
GPIO20 |
8 |
NÉGATIF2 |
GPIO26 |
12 |
NÉGATIF3 |
GPIO16 |
1 |
NÉGATIF4 |
GPIO19 |
sept |
NÉGATIF5 |
GPIO13 |
2 |
NÉGATIF6 |
GPIO6 |
5 |
NÉGATIF7 |
GPIO5 |
Voici le schéma de circuit final pour l' interfaçage de la matrice LED 8x8 avec Raspberry Pi:
Explication de travail:
Ici, nous utiliserons la technique de multiplexage pour afficher les caractères sur le module matriciel LED 8x8. Parlons donc de ce multiplexage en détail. Disons que si nous voulons allumer la LED D10 dans la matrice, nous devons alimenter le PIN14 du module et mettre à la terre le PIN3 du module. Avec cette LED, D10 s'allumera comme indiqué dans la figure ci-dessous. Cela doit également être vérifié en premier pour que MATRIX sache que tout est en ordre.
Maintenant, disons que si nous voulons activer D1, nous devons alimenter le PIN9 de la matrice et mettre à la terre le PIN13. Avec cette LED, D1 brillera. La direction actuelle dans ce cas est indiquée dans la figure ci-dessous.
Maintenant, pour la partie délicate, considérez que nous voulons activer à la fois D1 et D10 en même temps. Nous devons donc alimenter à la fois PIN9, PIN14 et mettre à la terre PIN13, PIN3. Cela allumera les LED D1 et D10, mais avec cela, cela allumera également les LED D2 et D9. C'est parce qu'ils partagent des terminaux communs. Donc, si nous voulons allumer les LED le long de la diagonale, nous serons obligés d'allumer toutes les LED en cours de route. Ceci est illustré dans la figure ci-dessous:
Pour éviter ce problème, nous utilisons une technique appelée multiplexage. Nous avons également discuté de cette technique de multiplexage lors de l'interfaçage de la matrice LED 8x8 avec AVR, ici nous expliquons à nouveau. Cette même technique de multiplexage est également utilisée dans Scrolling Text sur matrice LED 8x8 avec Arduino et avec microcontrôleur AVR.
L'œil humain ne peut pas capturer une fréquence supérieure à 30 HZ. C'est-à-dire si une LED s'allume et s'éteint en continu à une fréquence de 30 Hz ou plus. L'œil voit la LED comme allumée en permanence. Cependant, ce n'est pas le cas et la LED s'allumera et s'éteindra en permanence. Cette technique s'appelle le multiplexage.
Disons par exemple que nous voulons allumer uniquement la LED D1 et la LED D10 sans allumer D2 et D9. L'astuce est que nous allons d'abord alimenter uniquement la LED D1 en utilisant les broches 9 et 13 et attendre 1mSEC, puis nous l'éteindre. Ensuite, nous allons alimenter la LED D10 en utilisant les broches 14 et 3 et attendre 1mSEC, puis l'éteindre. Le cycle se déroule en continu à haute fréquence et D1 et D10 s'allument et s'éteignent rapidement et les deux LED semblent être allumées en permanence à nos yeux. Cela signifie que nous n'alimentons qu'une seule rangée (LED) à la fois, ce qui élimine les chances d'allumer d'autres LED dans d'autres rangées. Nous utiliserons cette technique pour montrer tous les personnages.
Nous pouvons le comprendre davantage par un exemple, comme si nous voulons afficher «A» sur la matrice, comme indiqué ci-dessous:
Comme dit, nous allumerons une ligne en un instant, À t = 0m SEC, PIN09 est réglé sur HAUT (les autres broches de ROW sont à l'état bas à ce moment) à ce moment, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15 sont mis à la terre (les autres broches de COLONNE sont à l'état HAUT à ce moment)
À t = 1m SEC, PIN14 est réglé sur HIGH (les autres broches de ROW sont à ce moment-là), PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 sont mis à la terre (les autres broches de COLUMN sont HIGH à ce moment)
À t = 2m SEC, PIN08 est réglé sur HAUT (les autres broches de ROW sont à l'état bas à ce moment) à ce moment, PIN13, PIN3, PIN15, PIN16 sont mis à la terre (les autres broches de COLONNE sont à ce moment-là)
À t = 3m SEC, PIN12 est réglé sur HAUT (les autres broches de ROW sont à l'état bas à ce moment) à ce moment, PIN13, PIN3, PIN15, PIN16 sont mis à la terre (les autres broches de COLONNE sont à ce moment-là)
À t = 4m SEC, PIN01 est réglé sur HAUT (les autres broches de ROW sont à l'état bas à ce moment) à ce moment, PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 sont mis à la terre (les autres broches de COLONNE sont à ce moment)
À t = 5m SEC, PIN07 est réglé sur HAUT (les autres broches de ROW sont à l'état bas à ce moment) à ce moment, PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 sont mis à la terre (les autres broches de COLONNE sont à ce moment)
À t = 6m SEC, PIN02 est réglé sur HAUT (les autres broches de ROW sont à l'état bas à ce moment) à ce moment, PIN13, PIN3, PIN15, PIN16 sont mis à la terre (les autres broches de COLONNE sont à ce moment-là)
À t = 7m SEC, PIN05 est réglé sur HAUT (les autres broches de ROW sont à l'état bas à ce moment) à ce moment, PIN13, PIN3, PIN15, PIN16 sont mis à la terre (les autres broches de COLONNE sont à l'état HAUT à ce moment)
À cette vitesse, l'affichage sera vu comme montrant en continu le caractère «A» comme indiqué sur la figure.
Le programme Python pour afficher les caractères sur la matrice LED à l'aide de Raspberry Pi est donné ci-dessous. Le programme est bien expliqué par les commentaires. Les valeurs de port pour chaque caractère sont données dans le programme. Vous pouvez afficher les caractères de votre choix en changeant simplement les valeurs «pinp» dans les «boucles for» du programme donné. Consultez également la vidéo de démonstration ci-dessous.