Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Créer et programmer des animations sur matrices LED WS2812 8x8 et 16x16 avec Arduino et Excel

Composants et fournitures

ComposantQuantité
Arduino UNO1
Matrice LED RGB WS2812 8x81
Fils de connexion mâle/femelle3
Pile 9V (générique)1
Connecteur 9V vers prise jack1
Connecteur mâle 5 positions – 1 rangée – Long (0,1")1

Outils et machines nécessaires

À propos de ce projet

Lorsque j'ai acheté ma première matrice LED WS2812 8x8 RGB, je m'attendais à l'adresser comme un système de coordonnées XY traditionnel. Or, les 64 LED sont chainées en huit rangées de huit. J'ai découvert que l'utilitaire Excel de Kevin Darrah, conçu à l'origine pour une matrice 16×16, pouvait être adapté pour contrôler un tableau 8×8. En modifiant à la fois la feuille de calcul et le sketch Arduino associé, j'ai créé un outil polyvalent permettant de programmer des animations LED sans bibliothèques externes.

Le classeur Excel mis à jour, LED_Utility.xlsm, prend désormais en charge :

Vous trouverez ci-dessous les instructions étape par étape pour construire le matériel, configurer l'utilitaire Excel et téléverser le sketch Arduino. Chaque projet s'appuie sur le précédent, introduisant des concepts tels que les boucles, les conditions et les fonctions modulaires.

Assembler le matériel

Fixez la matrice 8×8 sur un Arduino UNO en utilisant un connecteur 5 broches :

  1. Connectez DIN à la broche 8 de l'Arduino.
  2. Connectez +5V à la broche 5V.
  3. Connectez la masse à la broche GND.
Créer et programmer des animations sur matrices LED WS2812 8x8 et 16x16 avec Arduino et Excel

Pour cette configuration, la coordonnée (0,0) correspond au coin supérieur gauche de la matrice.

Présentation de l'utilitaire Excel

Ouvrez LED_Utility.xlsm – il contient trois feuilles :

Le classeur est en lecture seule par défaut pour protéger votre travail. Utilisez Fichier → Enregistrer sous après la génération du code pour préserver votre design.

Créer et programmer des animations sur matrices LED WS2812 8x8 et 16x16 avec Arduino et Excel

Fonctionnalités clés sur la feuille Eight :

Chaque bouton génère un bloc de code C++ à copier dans le sketch Arduino. Le code est formaté pour la fonction personnalisée mapLEDXY(), qui convertit les coordonnées XY en index de LED approprié.

Le sketch Arduino

Le sketch principal (LED_Arduino.ino) contient les éléments suivants :

// Définition de la broche
#define WS2812_pin 8
// Nombre total de LED
#define numberOfLEDs 64
// Tampon RVB (3 octets par LED)
byte RGB[192];
// Déclarations anticipées
void RGB_update(int LED, byte RED, byte GREEN, byte BLUE);
void mapLEDXY(int x, int y, byte RED, byte GREEN, byte BLUE);
void clearLEDs();

La routine mapLEDXY() associe un couple de coordonnées au tableau linéaire, en tenant compte du câblage en zigzag courant des matrices WS2812.

Après avoir copié votre code généré dans la fonction loop(), téléversez le sketch. La matrice répondra instantanément aux instructions.

Projet 1 – Carré rouge statique

Créez un carré rouge 3×3 aux coordonnées (2,2) à (4,4). Dans Excel, réglez les cellules correspondantes à 255 pour le rouge et 0 pour vert/bleu. Copiez le code généré à la ligne 40 du sketch :

mapLEDXY(2,2,255,0,0);mapLEDXY(2,3,255,0,0);mapLEDXY(2,4,255,0,0);
mapLEDXY(3,2,255,0,0);mapLEDXY(3,3,255,0,0);mapLEDXY(3,4,255,0,0);
mapLEDXY(4,2,255,0,0);mapLEDXY(4,3,255,0,0);mapLEDXY(4,4,255,0,0);

Téléversez et observez le carré s'allumer. Expérimentez en effaçant la grille, en changeant les couleurs ou en ajoutant une bordure.

Projet 2 – Carrés bicolores

Dupliquez le sketch en Colour_Sq.ino et modifiez la feuille Excel pour créer un second carré plus grand. Utilisez le bouton Show pour générer le code et collez-le dans le sketch. Ajoutez un simple delay et clearLEDs() pour basculer entre les deux formes.

Projet 3 – Carré qui grandit

Dans le sketch Grow.ino, concevez un petit carré intérieur et entourez-le d'une bordure de votre choix. Supprimez les valeurs du carré intérieur, générez le code de la bordure, et collez les deux blocs dans le sketch. Le résultat est un carré animé qui s'agrandit et se rétrécit.

Projet 4 – Animation spirale

Pour des motifs complexes, encapsulez chaque image dans une fonction séparée et appelez-les depuis loop(). L'exemple Spiral.ino utilise cinq fonctions auxiliaires pour construire une spirale à 5 couches. Cette approche modulaire garde la boucle principale concise et facilite les futures modifications.

Projet 5 – Boucle de luminosité variable

Introduisez une boucle for pour animer la luminosité :

for (int r=0; r<256; r++) {
  mapLEDXY(3,3,r,0,0);mapLEDXY(3,4,r,0,0);
  mapLEDXY(4,3,r,0,0);mapLEDXY(4,4,r,0,0);
  RGB_update(-1,0,0,0); delay(50);
}
for (int r=255; r>=0; r--) {
  mapLEDXY(3,3,r,0,0);mapLEDXY(3,4,r,0,0);
  mapLEDXY(4,3,r,0,0);mapLEDXY(4,4,r,0,0);
  RGB_update(-1,0,0,0); delay(50);
}

Le carré s'estompe et s'intensifie automatiquement.

Projet 6 – Bordure fondu

Combinez des boucles for avec une variable g partagée pour estomper une bordure environnante :

for (int g=0; g<256; g++) {
  b=g;
  mapLEDXY(...); // cellules de la bordure
  RGB_update(-1,0,0,0); delay(50);
}
for (int g=255; g>=0; g--) {
  b=g;
  mapLEDXY(...); // cellules de la bordure
  RGB_update(-1,0,0,0); delay(50);
}

Ici, le canal bleu suit le vert pour créer un fondu fluide.

Projet 7 – Transition de couleur

Utilisez une instruction if pour changer les cellules du milieu de la bordure du vert au jaune une fois un seuil atteint :

for (int r=0; r<256; r++) {
  g=r;
  if (g>64) { g=65; l=r; }
  mapLEDXY(...); // cellules
  RGB_update(-1,0,0,0); delay(50);
}

Expérimentez avec différents seuils pour des effets variés.

Projet 8 – Flèche en mouvement

Générez une flèche en mouvement en paramétrant la coordonnée X :

for (int x=0; x<8; x++) {
  mapLEDXY((x+0)%8,3,0,255,255);
  mapLEDXY((x+1)%8,1,255,128,128);
  mapLEDXY((x+1)%8,3,0,255,255);
  mapLEDXY((x+1)%8,5,255,128,128);
  mapLEDXY((x+2)%8,2,255,128,128);
  mapLEDXY((x+2)%8,3,0,255,255);
  mapLEDXY((x+2)%8,4,255,128,128);
  mapLEDXY((x+3)%8,3,255,128,128);
  RGB_update(-1,0,0,0); delay(100);
}

Utilisez la fonction Wrap Map de la feuille de calcul pour gérer le débordement de coordonnées.

Utilisation d'une matrice 16×16

Tous les concepts ci-dessus s'appliquent directement à une matrice 16×16. Remplacez LED_Arduino.ino par LED_Arduino16.ino et basculez sur la feuille Sixteen du classeur. Le seul ajustement nécessaire est la définition de numberOfLEDs et le calcul de RGBlocation dans mapLEDXY().

Extensions et conseils

Bien que ce guide se concentre sur les tableaux 8×8 et 16×16, la même méthodologie s'applique à d'autres tailles (ex: 8×32). Pour chaque nouvelle taille, mettez à jour la constante numberOfLEDs et modifiez le calcul d'index pour correspondre au câblage de la matrice. Gardez le classeur en mode lecture seule pour éviter la perte accidentelle de code personnalisé. Envisagez d'utiliser une carte plus petite, comme un Arduino Nano, si la consommation d'énergie est un souci.

Processus de fabrication

  1. Panneau de contrôle Arduino Nano pour Flight Simulator 2020 – Affichage LCD et CDI
  2. Panneau commutateurs et LED pour Microsoft Flight Simulator 2020 basé sur Arduino
  3. Créer et programmer des animations sur matrices LED WS2812 8x8 et 16x16 avec Arduino et Excel
  4. Sécuriser l'IoT mondial : trois étapes essentielles
  5. Top 3 des tendances de la fabrication numérique façonnant 2020
  6. Top 3 stratégies pour les PME pour réussir leur expansion internationale
  7. Trois leçons essentielles que les détaillants doivent tirer d'une année de perturbations
  8. Top 3 conseils essentiels pour maintenance et sécurité équipements industriels
  9. Guide essentiel : 3 stratégies éprouvées pour l'achat d'équipements industriels lourds