Projet 9 : Matrice de points LED 8*16 pour expressions faciales

(1) Description :

Ne serait-ce pas amusant d’ajouter un panneau d’expression au robot ? Et la matrice de points LED 8*16 de Keyestudio peut faire l’affaire. Grâce à elle, vous pouvez concevoir vous-mêmes des expressions faciales, des images, des motifs et d’autres affichages.

Le panneau LED 8*16 est équipé de 128 LEDs. Les données du microprocesseur (Arduino) communiquent avec l’AiP1640 via une interface de bus à deux fils. Par conséquent, il peut contrôler l’allumage et l’extinction des 128 LEDs du module, afin de faire afficher à la matrice de points du module le motif dont vous avez besoin. Un câble HX-2.54 4 broches est fourni pour faciliter le câblage.

(2) Paramètres :

  • Tension de fonctionnement : DC 3,3-5V

  • Perte de puissance : 400mW

  • Fréquence d’oscillation : 450KHz

  • Courant de commande : 200mA

  • Température de fonctionnement : -40~80℃

  • Mode de communication : bus à deux fils

(3) Connaissances :

Circuit de la matrice de points LED 8*16

Principe de la matrice de points LED 8*16

Comment contrôler chaque LED de la matrice de points 8*16 ? On sait que chaque octet comporte 8 bits et que chaque bit vaut 0 ou 1. Quand il vaut 0, la LED est éteinte, et quand il vaut 1, la LED est allumée. Un octet peut contrôler une colonne de LEDs, et naturellement 16 octets peuvent contrôler 16 colonnes de LEDs, ce qui constitue la matrice de points 8*16.

Description des broches et protocole de communication

Les données du microprocesseur (Arduino) communiquent avec l’AiP1640 via un câble de bus à deux fils.

Le schéma du protocole de communication est le suivant : (SCLK) est SCL, (DIN) est SDA.

① La condition de départ pour l’entrée de données : SCL est au niveau haut et SDA passe du niveau haut au niveau bas.

② Pour le réglage de la commande de données, il existe des méthodes comme indiqué dans la figure ci-dessous.

Dans notre exemple de programme, on sélectionne la méthode d’incrémentation automatique de l’adresse, la valeur binaire est 0100 0000 et la valeur hexadécimale correspondante est 0x40.

③ Pour le réglage de la commande d’adresse, l’adresse peut être sélectionnée comme indiqué ci-dessous.

Le premier 00H est sélectionné dans notre exemple de programme, et le nombre binaire 1100 0000 correspond à l’hexadécimal 0xc0.

④ La condition pour l’entrée de données est que lorsque SCL est au niveau haut lors de la saisie des données, le signal sur SDA doit rester inchangé. Ce n’est que lorsque le signal d’horloge sur SCL est au niveau bas que le signal sur SDA peut être modifié. La saisie des données se fait d’abord par le bit de poids faible, puis par le bit de poids fort.

⑤ La condition de fin de transmission des données est que lorsque SCL est au niveau bas, SDA au niveau bas et SCL au niveau haut, le niveau de SDA devient haut.

⑥ Contrôle d’affichage, réglage de différentes largeurs d’impulsion ; la largeur d’impulsion peut être sélectionnée comme indiqué dans la figure ci-dessous.

Dans l’exemple, la largeur d’impulsion est de 4/16, et l’hexadécimal correspondant à 1000 1010 est 0x8A.

Instructions pour l’utilisation de l’outil de modulation

L’outil de matrice de points utilise la version en ligne, et le lien est : http://dotmatrixtool.com/#

① Entrez le lien et la page apparaît comme indiqué ci-dessous

② La matrice de points est 8*16, donc ajustez la hauteur à 8 et la largeur à 16, comme indiqué dans la figure ci-dessous.

③ Générer des données hexadécimales à partir du motif.

Comme indiqué dans la figure ci-dessous, appuyez sur le bouton gauche de la souris pour sélectionner, cliquez droit pour annuler ; dessinez le motif souhaité, cliquez sur Générer, et les données hexadécimales dont nous avons besoin seront générées.

(4) Schéma de connexion :

Les broches GND, VCC, SDA et SCL du panneau lumineux LED 8x16 sont respectivement connectées aux broches G(GND), V (VCC), A4 et A5 de la carte d’extension pour la communication série à deux fils.

(Remarque : bien qu’il soit connecté à la broche IIC d’Arduino, ce module n’est pas destiné à la communication IIC. Le port IO ici simule la communication I2C et peut être connecté à deux broches quelconques)

(5) Code de test :

Vous pouvez également faire glisser des blocs pour modifier votre code, comme indiqué ci-dessous

Code de test complet

(Remarque : Ne connectez pas le module Bluetooth avant de téléverser le code, car le téléversement du code utilise également la communication série, et il peut y avoir des conflits avec la communication série Bluetooth, ce qui peut entraîner l’échec du téléversement.)

(6) Résultats du test :

Après avoir téléversé le code de test avec succès, effectuez le câblage, mettez l’interrupteur DIP sur la position ON et mettez sous tension ; un motif en forme de sourire s’affiche sur la matrice de points.

(7) Pratique d’extension :

Nous utilisons l’outil de modulation que nous venons d’apprendre, http://dotmatrixtool.com/#, pour faire afficher à la matrice de points les motifs : démarrer, avancer et s’arrêter, puis effacer le motif. L’intervalle de temps est de 2000 ms.

Bloc pour afficher un visage souriant

Code pour afficher une expression

Bloc pour afficher un cœur

Code pour avancer

Bloc pour reculer

Bloc pour tourner à gauche

Bloc pour tourner à droite

Bloc pour s’arrêter

Bloc pour effacer

Vous pouvez également faire glisser des blocs pour modifier votre code, comme indiqué ci-dessous.

(1)

(2)

(3)

Code de test complet

(Remarque : Ne connectez pas le module Bluetooth avant de téléverser le code, car le téléversement du code utilise également la communication série, et il peut y avoir des conflits avec la communication série Bluetooth, ce qui peut entraîner l’échec du téléversement.)

Téléversez le code sur la carte de développement ; le panneau 8*16 affichera les motifs suivants.