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

Contrôler une matrice LED 8×8 avec Arduino Nano – Sans pilote ni bibliothèque

Composants et fournitures

Composant Quantité
Arduino Nano R3 1
Matrice LED à points 8×8, cathode commune (1088AS) 1
Résistance traversante 330 Ω 1

À propos de ce projet

Ce tutoriel vidéo explique comment piloter une matrice LED 8×8 à cathode commune (1088AS) sans puce pilote type MAX7219 ni bibliothèque dédiée. Une seconde partie comparera avec l'utilisation du MAX7219.

Tutoriel complet disponible sur la chaîne de l'auteur. Soutien possible via Patreon ou PayPal.

Codes

1. Test de toutes les 64 LED (allumage séquentiel)

// Mario's Ideas - Test des 64 LED de la matrice 8x8
// Lignes (anodes pour cathode commune)
#define R1 2  #define R2 3  #define R3 4  #define R4 5
#define R5 6  #define R6 7  #define R7 8  #define R8 9
// Colonnes (cathodes)
#define C1 10 #define C2 11 #define C3 12 #define C4 13
#define C5 A0 #define C6 A1 #define C7 A2 #define C8 A3

void setup() {
  // Configuration toutes broches en sortie
  for (int p = 2; p <= 13; p++) pinMode(p, OUTPUT);
  for (int p = A0; p <= A3; p++) pinMode(p, OUTPUT);
  
  // Éteindre toutes les LED au départ (anodes HIGH, cathodes LOW)
  for (int p = 2; p <= 9; p++) digitalWrite(p, HIGH);
  for (int p = 10; p <= 13; p++) digitalWrite(p, LOW);
  for (int p = A0; p <= A3; p++) digitalWrite(p, LOW);
}

void SelectRow(int row) {
  // Active une ligne (met l'anode LOW), les autres HIGH
  for (int r = 1; r <= 8; r++) {
    digitalWrite(r + 1, (r == row) ? LOW : HIGH);
  }
}

void SelectColumn(int col) {
  // Active une colonne (met la cathode HIGH), les autres LOW
  for (int c = 1; c <= 8; c++) {
    int pin = (c <= 4) ? c + 9 : c + 10; // 10-13 puis A0-A3
    digitalWrite(pin, (c == col) ? HIGH : LOW);
  }
}

void loop() {
  for (int i = 1; i < 9; i++) {
    for (int j = 1; j < 9; j++) {
      SelectRow(i);
      SelectColumn(j);
      delay(100);
    }
  }
}

2. Affichage image (chat) par multiplexage

// Affichage image chat sur matrice 8x8 (Multiplexage)
#define R1 2 #define R2 3 #define R3 4 #define R4 5
#define R5 6 #define R6 7 #define R7 8 #define R8 9
#define C1 10 #define C2 11 #define C3 12 #define C4 13
#define C5 A0 #define C6 A1 #define C7 A2 #define C8 A3

int pause = 300;
int Cat[8][8] = {
  {1,0,0,0,1,0,0,0},
  {1,1,1,1,1,0,0,0},
  {1,0,1,0,1,0,0,0},
  {0,1,1,1,0,0,0,1},
  {0,0,1,0,0,0,0,1},
  {0,1,1,1,1,0,0,1},
  {0,1,1,1,1,1,0,1},
  {1,0,1,1,1,1,1,0}
};

void setup() {
  for (int p = 2; p <= 13; p++) pinMode(p, OUTPUT);
  for (int p = A0; p <= A3; p++) pinMode(p, OUTPUT);
  for (int p = 2; p <= 9; p++) digitalWrite(p, HIGH);
  for (int p = 10; p <= 13; p++) digitalWrite(p, LOW);
  for (int p = A0; p <= A3; p++) digitalWrite(p, LOW);
}

void SelectRow(int row) {
  for (int r = 1; r <= 8; r++) digitalWrite(r + 1, (r == row) ? LOW : HIGH);
}

void Set_LED_in_Active_Row(int col, int state) {
  int pin = (col <= 4) ? col + 9 : col + 10;
  digitalWrite(pin, state);
}

void loop() {
  for (int j = 0; j < 8; j++) {
    SelectRow(j + 1);
    for (int i = 0; i < 8; i++) {
      Set_LED_in_Active_Row(i + 1, Cat[j][i]);
    }
    delay(2 + pause);
  }
  if (pause > 100) pause -= 100;
  else if (pause > 0) pause -= 10;
}

3. Défilement de texte (multiplexage)

// Défilement texte sur matrice 8x8 (Multiplexage)
#define R1 2 #define R2 3 #define R3 4 #define R4 5
#define R5 6 #define R6 7 #define R7 8 #define R8 9
#define C1 10 #define C2 11 #define C3 12 #define C4 13
#define C5 A0 #define C6 A1 #define C7 A2 #define C8 A3

int position = 0;
int Marios_ideas[8][54] = { /* matrice 8x54 pour le texte défilant */ };

void setup() {
  for (int p = 2; p <= 13; p++) pinMode(p, OUTPUT);
  for (int p = A0; p <= A3; p++) pinMode(p, OUTPUT);
  for (int p = 2; p <= 9; p++) digitalWrite(p, HIGH);
  for (int p = 10; p <= 13; p++) digitalWrite(p, LOW);
  for (int p = A0; p <= A3; p++) digitalWrite(p, LOW);
}

void SelectRow(int row) {
  for (int r = 1; r <= 8; r++) digitalWrite(r + 1, (r == row) ? LOW : HIGH);
}

void Set_LED_in_Active_Row(int col, int state) {
  int pin = (col <= 4) ? col + 9 : col + 10;
  digitalWrite(pin, state);
}

void loop() {
  for (int x = 0; x < 5; x++) {
    for (int j = 0; j < 8; j++) {
      SelectRow(j + 1);
      for (int i = 0; i < 8; i++) {
        int idx = (i + position) % 54;
        Set_LED_in_Active_Row(i + 1, Marios_ideas[j][idx]);
      }
      delay(2);
    }
  }
  position++;
}

Schémas

Schéma de câblage : 8 lignes (broches 2-9) pilotent les anodes, 8 colonnes (broches 10-13, A0-A3) pilotent les cathodes via résistance 330 Ω commune.

Processus de fabrication

  1. Diodes Électroluminescentes (DEL) : De l'Inception aux Durées de Vie de 100 Ans
  2. Pilotes LED MAX25610A/B de Maxim : compacts, haute efficacité, optimisés EMI pour éclairage auto et industriel
  3. Projet Arduino : Mélodie "Coffin Dance" — Construire et jouer le tube viral
  4. Construire une console Pong 24×16 LED avec Arduino Nano et MAX7219
  5. Affichage LED matrice interactif porte avec capteur PIR - Salutations fêtes Arduino
  6. Affichage lumineux 8 LED activé par le son
  7. Construire un robot quadrupède Arduino intelligent : guide étape par étape
  8. Lampe matricielle LED à colle chaude DIY – Créez votre propre affichage coloré
  9. Contrôle fluide de la luminosité LED avec Bolt IoT et Arduino UNO