Code de recherche

Matrice LED 8x8 utilisant un module Arduino MAX7219

Matrice LED 8x8 utilisant un module Arduino MAX7219

Dans ce tutoriel, nous allons apprendre à contrôler une matrice LED 8x8 à l'aide d'un module MAX7219 avec un Arduino. Le MAX7219 simplifie le contrôle de plusieurs LED, nous permettant d'afficher facilement des caractères et des motifs. À la fin de ce projet, vous serez en mesure d'afficher le mot "ROBOJAX" sur la matrice.

Pour y parvenir, nous utiliserons la bibliothèque LedControl, qui est spécifiquement conçue pour interagir avec le MAX7219. Cette bibliothèque nous permet d'envoyer des données à la matrice LED avec un minimum d'effort. Si vous souhaitez une compréhension plus claire du câblage et du code, assurez-vous de consulter la vidéo associée (dans la vidéo à 0:30).

Matériel expliqué

Les composants principaux de ce projet incluent le module MAX7219 et la matrice LED 8x8. Le MAX7219 est un circuit intégré qui gère l'affichage des LED, en s'occupant des signaux de communication et de contrôle provenant de l'Arduino. Il utilise une interface série, ce qui signifie que nous pouvons contrôler de nombreuses LED avec seulement quelques broches de l'Arduino.

La matrice LED 8x8 se compose de 64 LED individuelles disposées en grille. Chaque LED peut être allumée ou éteinte en envoyant les commandes appropriées via le MAX7219. Cela permet d'afficher divers caractères et graphiques sur la matrice.

Détails de la fiche technique

FabricantMaxim Integrated
Numéro de pièceMAX7219
Tension logique/IO3,3V à 5,5V
Tension d'alimentation4,0V à 5,5V
Courant de sortie (par canal)40 mA max
Courant de crête (par canal)100 mA max
Directives sur la fréquence PWM100 Hz
Seuils logiques d'entrée2,0V (haut) / 0,8V (bas)
Chute de tension / RDS(on)/ saturation0,2V typ.
Limites thermiques150°C
Paquet16-DIP
Remarques / variantesConfiguration d'anode commune
  • Assurez-vous d'une alimentation électrique adéquate (4,0V à 5,5V).
  • Utilisez des résistances limitant le courant pour chaque LED afin de prévenir les dommages.
  • Gardez le câblage court pour éviter les interférences.
  • Surveillez la dissipation de chaleur ; utilisez un dissipateur thermique si nécessaire.
  • Vérifiez à nouveau les connexions des broches pour éviter toute mauvaise communication.

Instructions de câblage

Pour câbler le MAX7219 à l'Arduino, connectez les broches suivantes :

  • Connectez leVCCbroche du MAX7219 au 5V de l'Arduino.
  • Connectez leGNDpincer à la masse de l'Arduino.
  • Connectez leDINbroche (Données d'entrée) à la broche 12 de l'Arduino.
  • Connectez leCLKbroche (Horloge) à la broche 11 de l'Arduino.
  • Connectez leCSbroche (Sélection de puce) à la broche 10 de l'Arduino.

Assurez-vous de vérifier que toutes les connexions sont sécurisées avant d'alimenter le circuit. Le câblage est simple, mais si vous rencontrez des problèmes, examinez attentivement les connexions (dans la vidéo à 1:45).

Exemples de code et guide étape par étape

Dans le code, nous commençons par inclure la bibliothèque LedControl, qui est essentielle pour communiquer avec le MAX7219. L'extrait suivant initialise l'objet LedControl :

LedControl lc=LedControl(12,11,10,1);

Cette ligne définit la broche de données, la broche d'horloge, la broche de sélection de puce et le nombre d'appareils (1, dans ce cas). Ensuite, dans lesetup()fonction, nous réveillons le MAX7219 et réglons l'intensité d'affichage :

lc.shutdown(0,false);
lc.setIntensity(0,8);
lc.clearDisplay(0);

Cela garantit que l'affichage est actif et prêt à montrer des caractères. La fonction principale qui pilote l'affichage estwriteArduinoOnMatrix(), qui éclaire successivement les rangées de la matrice pour afficher des lettres.

Démonstration / À quoi s'attendre

Une fois que tout est câblé et que le code est téléchargé, la matrice LED doit afficher le mot "ROBOJAX". Si l'affichage ne fonctionne pas, vérifiez les problèmes tels que des connexions lâches ou des affectations de broches incorrectes. De plus, assurez-vous que l'alimentation est adéquate (dans la vidéo à 2:30).

Chapitres

  • Introduction (0:00)
  • Aperçu du matériel (0:30)
  • Instructions de câblage (1:45)
  • Présentation du code (2:15)
  • Démonstration (3:00)
4-8x8 LED matrix using a MAX7219 Arduino module
Langue: C++
/*
 * Cette vidéo vous montre comment utiliser le module MAX7219 avec une matrice LED 8x8 pour afficher du texte ou des caractères sur la LED.
 * Regardez la vidéo YouTube : https://youtu.be/AAiDwBKs9uE
 * 
 * Écrit par Ahmad Shamshiri pour Robojax.com
 * le 26 février 2017 à Ajax, Ontario, Canada
 * Obtenez ce code et d'autres codes Arduino sur Robojax.com
 * Apprenez Arduino étape par étape dans un cours structuré avec tous les matériaux, schémas de câblage et bibliothèques
 * tous au même endroit.
 * 
 * Obtenez un accès anticipé à mes vidéos via Patreon et faites mentionner votre nom à la fin de chaque
 * vidéo que je publie sur YouTube ici : http://robojax.com/L/?id=63 (regardez jusqu'à la fin de cette vidéo pour la liste de mes Patrons)
 * 
 * Ou faites un don via PayPal : http://robojax.com/L/?id=64
 * 
 * Ce code est fourni "TEL QUEL" sans garantie ni responsabilité. Libre d'utilisation tant que cette note reste intacte.
 * Ce code a été téléchargé depuis Robojax.com
 * Ce programme est un logiciel libre : vous pouvez le redistribuer ou le modifier
 * selon les termes de la licence GNU General Public License telle que publiée par
 * la Free Software Foundation, soit la version 3 de la licence, soit
 * (à votre discrétion) toute version ultérieure.
 * 
 * Ce programme est distribué dans l'espoir qu'il sera utile,
 * mais SANS AUCUNE GARANTIE ; sans même la garantie implicite de
 * QUALITÉ MARCHANDE ou d'ADÉQUATION À UN USAGE PARTICULIER. Voir la
 * licence GNU General Public License pour plus de détails.
 * 
 * Vous devriez avoir reçu une copie de la licence GNU General Public License
 * avec ce programme. Sinon, consultez <https://www.gnu.org/licenses/>.
 * 
 * // Nous devons toujours inclure la bibliothèque
 * // Basé sur un projet publié https://github.com/wayoda/LedControl
 */
#include "LedControl.h"

/*
 * Maintenant, nous avons besoin d'un LedControl pour travailler.
 *   // Personnalisé pour RoboJax.com le 26 février 2017 à Ajax, Ontario, Canada.
 * **** Ces numéros de broches ne fonctionneront probablement pas avec votre matériel *****
 *   la broche 12 est connectée à DataIn
 *   la broche 11 est connectée à CLK
 *   la broche 10 est connectée à CS
 *   Nous n'avons qu'un seul MAX72XX.
 */
 LedControl lc=LedControl(12,11,10,1);

/*
 * nous attendons toujours un peu entre les mises à jour de l'affichage */
 *  unsigned long delai=600;
 * 
 *  void setup() {
 *    /*
 *     Le MAX72XX est en mode économie d'énergie au démarrage,
 *     nous devons effectuer un réveil
 */
   lc.shutdown(0,false);
/*
 * Réglez la luminosité sur une valeur moyenne */
 *    lc.setIntensity(0,8);
 *    /* et effacez l'affichage
 */
   lc.clearDisplay(0);
 }

/*
 * Cette méthode affichera les caractères du mot "Arduino" un par un sur la matrice. (il faut au moins 5x7 LED pour voir les caractères entiers)
 */
 void writeArduinoOnMatrix() {
/*
 * Voici les données pour les caractères */
 * 
 *    // K
 *    byte R[8]={B11111100,B10000100,B10000100,B11111000,B10100000,B10010000,B10001000,B10000100};
 *    byte O[8]={B00011000,B00100100,B01000010,B01000010,B01000010,B01000010,B00100100,B00011000};  
 *    byte B[8]={B11111100,B10000100,B10000100,B11111000,B10001000,B10000100,B10000100,B11111100};
 *    byte J[8]={B00011110,B00000100,B00000100,B00000100,B10000100,B10000100,B01000100,B00111000};
 *    byte A[8]={B00111000,B01000100,B10000010,B11111110,B10000010,B10000010,B10000010,B10000010};     
 *    byte X[8]={ B10000001,B01000010,B00100100,B00011000,B00011000,B00100100,B01000010,B10000001};
 *    byte love[8]={ B00000000,B01100110,B10011001,B10011001,B10000001,B01000010,B00100100,B00011000};  
 * 
 *  
 *    /* Lettre R
 */
   for (int i=0; i<8; i++){
   lc.setRow(0,i,R[i]);

   }

   delay(delaytime);
   for(int i=0; i<8; i++){
       lc.setRow(0,i,0); // c'est pour blanc
   }
 // ////////////// FIN de la lettre R ///////

/*
 * Lettre O */
 *    for (int i=0; i<8; i++){
 *    lc.setRow(0,i,O[i]);
 * 
 *    }
 *     
 *    delay(delai);
 *    for(int i=0; i<8; i++){
 *        lc.setRow(0,i,0);// ceci est pour effacer
 *    }  
 *  //////////////// FIN de la Lettre O ///////
 * 
 * 
 *    /* Lettre B
 */
   for (int i=0; i<8; i++){
   lc.setRow(0,i,B[i]);

   }

   delay(delaytime);
   for(int i=0; i<8; i++){
       lc.setRow(0,i,0); // c'est pour blanc
   }
 // ////////////// FIN de la Lettre B ///////

/*
 * Lettre O */
 *    for (int i=0; i<8; i++){
 *    lc.setRow(0,i,O[i]);
 *  
 *    }
 *     
 *    delay(delaytime);
 *    for(int i=0; i<8; i++){
 *        lc.setRow(0,i,0);// ceci est pour effacer
 *    }  
 *  //////////////// FIN de la Lettre O ///////
 *  
 *    /* Lettre J
 */
   for (int i=0; i<8; i++){
   lc.setRow(0,i,J[i]);

   }

   delay(delaytime);
   for(int i=0; i<8; i++){
       lc.setRow(0,i,0); // c'est pour blanc
   }
 // ////////////// FIN de la lettre J ///////

/*
 * Lettre A */
 *    for (int i=0; i<8; i++){
 *    lc.setRow(0,i,A[i]);
 * 
 *    }
 * 
 *    delay(delaytime);
 *    for(int i=0; i<8; i++){
 *        lc.setRow(0,i,0);// ceci est pour effacer
 *    }
 *  //////////////// FIN de la Lettre A ///////
 * 
 *    /* Lettre X
 */
   for (int i=0; i<8; i++){
   lc.setRow(0,i,X[i]);

   }

   delay(delaytime);
   for(int i=0; i<8; i++){
       lc.setRow(0,i,0); // c'est pour blanc
   }
 // ////////////// FIN de la Lettre X ///////



5-8x8 LED Matrix using a MAX7219 Arduino Module
Langue: C++
/*
 * Cette vidéo vous montre comment utiliser le module MAX7219 avec une matrice LED 8x8 pour afficher du texte ou des caractères sur la LED.  
 * Regardez la vidéo YouTube : https://youtu.be/AAiDwBKs9uE  
 * 
 * Écrit par Ahmad S. pour Robojax.com  
 * le 26 février 2017 à Ajax, Ontario, Canada  
 * Autorisation accordée de partager ce code, à condition que cette note soit conservée avec le code.  
 * Avertissement : Ce code est fourni "TEL QUEL" et à des fins éducatives uniquement.  
 * 
 * /  
 * 
 * // Nous devons toujours inclure la bibliothèque  
 * // Basé sur un projet publié sur https://github.com/wayoda/LedControl
 */
#include "LedControl.h"

/*
 * Maintenant, nous avons besoin d'un objet LedControl pour travailler.
 *  // Personnalisé pour RoboJax.com le 26 février 2017 à Ajax, Ontario, Canada.
 * **** Ces numéros de broches ne fonctionneront probablement pas avec votre matériel *****
 *  la broche 1 est connectée à DataIn
 *  la broche 4 est connectée à CLK
 *  la broche 53 est connectée à CS
 *  Nous n'avons qu'un seul MAX72XX.
 */
LedControl lc=LedControl(1,4,53,1); // Cette ligne détermine si ce code peut fonctionner avec Arduino Mega ou Arduino UNO.

/*
 * Nous attendons toujours un peu entre les mises à jour de l'affichage */
 * unsigned long delai=600;
 * 
 * void setup() {
 *   /*
 *    Le MAX72XX est en mode économie d'énergie au démarrage,
 *    nous devons effectuer un appel de réveil
 */
  lc.shutdown(0,false);
/*
 * Réglez la luminosité sur une valeur moyenne */
 *   lc.setIntensity(0,8);
 *   /* et effacez l'affichage
 */
  lc.clearDisplay(0);
}

/*
 * Cette méthode affichera les caractères du mot "Arduino" un par un sur la matrice. 
 *  (il faut au moins 5x7 LED pour voir l'intégralité des caractères)
 */
void writeArduinoOnMatrix() {
/*
 * Voici les données pour les caractères */
 * 
 *   // K
 *   byte R[8]={B11111100,B10000100,B10000100,B11111000,B10100000,B10010000,B10001000,B10000100};
 *   byte O[8]={B00011000,B00100100,B01000010,B01000010,B01000010,B01000010,B00100100,B00011000};  
 *   byte B[8]={B11111100,B10000100,B10000100,B11111000,B10001000,B10000100,B10000100,B11111100};
 *   byte J[8]={B00011110,B00000100,B00000100,B00000100,B10000100,B10000100,B01000100,B00111000};
 *   byte A[8]={B00111000,B01000100,B10000010,B11111110,B10000010,B10000010,B10000010,B10000010};     
 *   byte X[8]={ B10000001,B01000010,B00100100,B00011000,B00011000,B00100100,B01000010,B10000001};
 *   byte amour[8]={ B00000000,B01100110,B10011001,B10011001,B10000001,B01000010,B00100100,B00011000};  
 * 
 * 
 *   /* Lettre R
 */
  for (int i=0; i<8; i++){
  lc.setRow(0,i,R[i]);

  }

  delay(delaytime);
  for(int i=0; i<8; i++){
      lc.setRow(0,i,0); // c'est pour le vide
  }
 // ///////////// FIN de la lettre R ///////

/*
 * /* Lettre O */
 *   for (int i=0; i<8; i++){
 *   lc.setRow(0,i,O[i]);
 *   }
 *    
 *   delay(delaytime);
 *   for(int i=0; i<8; i++){
 *       lc.setRow(0,i,0);// ceci est pour effacer
 *   }  
 * /////////////// FIN de la lettre O ///////
 * 
 * 
 *   /* Lettre B
 */
  for (int i=0; i<8; i++){
  lc.setRow(0,i,B[i]);

  }

  delay(delaytime);
  for(int i=0; i<8; i++){
      lc.setRow(0,i,0); // c'est pour le vide
  }
 // ///////////// FIN de la Lettre B ///////

/*
 * /* Lettre O */
 *   for (int i=0; i<8; i++){
 *   lc.setRow(0,i,O[i]);
 *   }
 *    
 *   delay(delaytime);
 *   for(int i=0; i<8; i++){
 *       lc.setRow(0,i,0);// ceci est pour effacer
 *   }  
 * /////////////// FIN de la Lettre O ///////
 * 
 *   /* Lettre J
 */
  for (int i=0; i<8; i++){
  lc.setRow(0,i,J[i]);

  }

  delay(delaytime);
  for(int i=0; i<8; i++){
      lc.setRow(0,i,0); // c'est pour le vide
  }
 // ///////////// FIN de la lettre J ///////

/*
 * Lettre A */
 *   for (int i=0; i<8; i++){
 *   lc.setRow(0,i,A[i]);
 * 
 *   }
 *    
 *   delay(delaytime);
 *   for(int i=0; i<8; i++){
 *       lc.setRow(0,i,0);// ceci est pour effacer
 *   }  
 * /////////////// FIN de la Lettre A ///////
 * 
 *   /* Lettre X
 */
  for (int i=0; i<8; i++){
  lc.setRow(0,i,X[i]);

  }

  delay(delaytime);
  for(int i=0; i<8; i++){
      lc.setRow(0,i,0); // c'est pour le vide
  }
 // ///////////// FIN de la Lettre X ///////



Fichiers📁

Aucun fichier disponible.