Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Controle de Matriz de LED 8×8 com Arduino Nano — Sem Drivers ou Bibliotecas

Componentes e Materiais

Sobre este Projeto

Este tutorial mostra como controlar uma matriz de LED 8×8 1088AS de cátodo comum sem chips drivers como MAX7219 e sem bibliotecas correspondentes.

Em breve criarei um segundo tutorial usando MAX7219 para comparação.

Tutorial completo: Patreon | PayPal

Código

1. Testando todos os 64 LEDs da matriz 8×8

// Mario's Ideas
// Testando todos os 64 LEDs da matriz 8x8 acendendo um a um

// Linhas
#define R1 2  #define R2 3  #define R3 4  #define R4 5
#define R5 6  #define R6 7  #define R7 8  #define R8 9

// Colunas
#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() {
  // Configura todos os pinos como saída
  for (int p = 2; p <= 13; p++) pinMode(p, OUTPUT);
  for (int p = A0; p <= A3; p++) pinMode(p, OUTPUT);

  // Apaga todos os LEDs no início (cátodo comum: linha HIGH=off, coluna LOW=off)
  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) {
  // Ativa uma linha (LOW) e desativa as outras (HIGH)
  for (int r = 1; r <= 8; r++) {
    int pin = (r <= 8) ? (r + 1) : 0; // R1=2, R2=3... R8=9
    digitalWrite(pin, (r == row) ? LOW : HIGH);
  }
}

void SelectColumn(int column) {
  // Ativa uma coluna (HIGH) e desativa as outras (LOW)
  int pins[8] = {10, 11, 12, 13, A0, A1, A2, A3};
  for (int c = 0; c < 8; c++) {
    digitalWrite(pins[c], (c + 1 == column) ? 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. Exibindo imagem de gato na matriz 8×8 (Multiplexação)

// Mario's Ideas - Exibindo imagem de gato na matriz 8x8 (Multiplexação)

#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) {
  int pins[8] = {2,3,4,5,6,7,8,9};
  for (int r = 0; r < 8; r++) digitalWrite(pins[r], (r == row-1) ? LOW : HIGH);
}

void Set_LED_in_Active_Row(int column, int state) {
  int pins[8] = {10,11,12,13,A0,A1,A2,A3};
  digitalWrite(pins[column-1], 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 != 0 && pause > 100) pause -= 100;
  else if (pause != 0 && pause <= 100) pause -= 10;
}

3. Texto rolante na matriz 8×8 (Multiplexação)

// Mario's Ideas - Texto rolante na matriz 8x8 (Multiplexação)

#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;
// Matriz 8x54 com padrão de texto "Marios_ideas"
int Marios_ideas[8][54] = { /* dados omitidos por brevidade */ };

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) {
  int pins[8] = {2,3,4,5,6,7,8,9};
  for (int r = 0; r < 8; r++) digitalWrite(pins[r], (r == row-1) ? LOW : HIGH);
}

void Set_LED_in_Active_Row(int column, int state) {
  int pins[8] = {10,11,12,13,A0,A1,A2,A3};
  digitalWrite(pins[column-1], 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) - abs((i + position) / 54) * 54;
        Set_LED_in_Active_Row(i+1, Marios_ideas[j][idx]);
      }
      delay(2);
    }
  }
  position++;
}

Esquemático

Controle de Matriz de LED 8×8 com Arduino Nano — Sem Drivers ou Bibliotecas

Processo de manufatura

  1. Diodos Emissores de Luz: Da Incepção a Vida Útil de 100 Anos
  2. Drivers LED MAX25610A/B da Maxim: Compactos, Alta Eficiência, Otimizados para EMI em Iluminação Automotiva e Industrial
  3. Projeto Arduino: Melodia Coffin Dance – Construa e Toque a Música Viral
  4. Construa um Console Pong 24×16 LED com Arduino Nano e MAX7219
  5. Display Interativo de Matriz LED na Porta com Sensor PIR – Saudação de Férias Arduino
  6. Display de Luz com 8 LEDs Ativado por Som
  7. Construa um Robô Quadrúpede Inteligente com Arduino: Guia Passo a Passo
  8. Lâmpada Matriz LED DIY com Bastões de Cola Quente – Crie Seu Próprio Display Colorido
  9. Controle Suave de Brilho de LED com Bolt IoT e Arduino UNO
  10. Controle de Matriz de LED 8×8 com Arduino Nano — Sem Drivers ou Bibliotecas