Arduino, Internet das Coisas e Computação vestível

[Voltar]

[Avançar]

Módulo Matriz de LED 8×8 - MAX7219

Descrição

O Módulo de matriz de LED é capaz de controlar 8x8 LEDs simultaneamente. Uma matriz de LEDs permite a criação de mensagens com maior quantidade de informação. Uma das vantagens desse módulo é que ele já vem com os pinos de saída para você interligar outros módulos Max7219. Dessa maneira, você controla vários deles usando as mesmas 4 portas do microcontrolador.

Caracteristicas

  • Tensão de operação: 5V DC
  • Cor LED: Vermelha
  • Dimensões: 5,0 x 3,2 x 1,5cm

Pinagem

  • VCC: 3,3 a 5V DC
  • GND: GND
  • DIN: Dados
  • CS: Load
  • CLK: Clock

Bilioteca

Use Led Matrix Editor para criar caracteres: https://xantorohara.github.io/led-matrix-editor

Baixe a biblioteca: https://github.com/wayoda/LedControl

Outras funções e exemplos: https://www.arduino.cc/en/Tutorial/RowColumnScanning


Projeto(s) relacionado(s)


Projeto Placar Eletrônico com Max7219

O projeto utiliza Matriz de LED 8×8 - MAX7219, Arduino Uno R3 e Chave Táctil ou Push-Button para incrementar ou decrementar o valor (0 até 15) de um placar eletrônico.

// Programa: Placar Eletronico com Arduino e Max7219
// Autor: André Luis Marques da Silveira
// Data: 23/03/2018

#include ‹LedControl.h›
#define MAX_DEVICES  1  // Numero de modulos utilizados  
#define DATA_PIN        4  // Ligacoes ao Arduino MD_MAX72xx
#define CS_PIN            5  // Ligacoes ao Arduino MD_MAX72xx
#define CLK_PIN          6  // Ligacoes ao Arduino MD_MAX72xx

LedControl Placar = LedControl(DATA_PIN, CLK_PIN, CS_PIN, MAX_DEVICES);

int v_but1, v_but2;      // Armazenam o valor dos botoes
int placar;                   // Variável do placar atual
int placar_ant;            // Variável do placar anterior
int delaytime = 100;   // Tempo
int brilho = 15;          // Brilho dos displays

byte CARACTER [16][8]  = {
         {B00011000, B00100100, B00100100, B00100100, B00100100, B00100100, B00011000, B00000000}, // 0
         {B00001000, B00011000, B00001000, B00001000, B00001000, B00001000, B00011100, B00000000}, // 1
         {B00011000, B00100100, B00000100, B00001000, B00010000, B00100000, B00111100, B00000000}, // 2
         {B00011000, B00100100, B00000100, B00001000, B00000100, B00100100, B00011000, B00000000}, // 3
         {B00001100, B00010100, B00100100, B00111100, B00000100, B00000100, B00000100, B00000000}, // 4
         {B00111100, B00100000, B00111000, B00000100, B00000100, B00100100, B00011000, B00000000}, // 5
         {B00011000, B00100000, B00100000, B00111000, B00100100, B00100100, B00011000, B00000000}, // 6
         {B00111100, B00000100, B00000100, B00001000, B00010000, B00100000, B00100000, B00000000}, // 7
         {B00011000, B00100100, B00100100, B00011000, B00100100, B00100100, B00011000, B00000000}, // 8
         {B00011000, B00100100, B00100100, B00111100, B00000100, B00000100, B00011000, B00000000}, // 9
         {B01000110, B11001001, B01001001, B01001001, B01001001, B01001001, B11100110, B00000000}, // 10
         {B01000100, B11001100, B01000100, B01000100, B01000100, B01000100, B11101110, B00000000}, // 11
         {B01000110, B11001001, B01000001, B01000010, B01000100, B01001000, B11101111, B00000000}, // 12
         {B01000110, B11001001, B01000001, B01000010, B01000001, B01001001, B11100110, B00000000}, // 13
         {B01000011, B11000101, B01001001, B01001111, B01000001, B01000001, B11100001, B00000000}, // 14
         {B01001111, B11001000, B01001110, B01000001, B01000001, B01001001, B11100110, B00000000}  // 15
};

void setup() {
      Serial.begin(9600);
      pinMode(8, INPUT_PULLUP);       // Inicializa pino botão aumenta
      pinMode(9, INPUT_PULLUP);       // Inicializa pino botaão diminui
      Placar.shutdown(0, false);          // Inicializa os displays
      Placar.setIntensity(0, brilho);     // Ajusta o brilho de cada display
      Placar.clearDisplay(0);               // Apaga os display
      MostrarCaracter(0, 0);              // Mostra 0 (zero) no display
}

void loop() {

  // Verifica se o botao de aumentar foi acionado

  v_but1 = digitalRead(8);  // Le botão aumentar
  if  (v_but1 == 0)   {
       placar = placar + 1;
       if  (placar >= 16) { placar = 15; }

       if  (placar_ant != placar)     {
            MostrarCaracter(placar, 0); //Chama a rotina que atualiza o display
            v_but1 = digitalRead(8);
            placar_ant = placar;
       }
      
       while (digitalRead(8) == 0) {
            delay(delaytime);
       }
 }

 // Verifica se o botao de diminuir foi acionado

  v_but2 = digitalRead(9);  // Le botão diminuir
  if  (v_but2 == 0)   {
       placar = placar - 1;
       if  (placar <= 0) { placar = 0;  }

       if  (placar_ant != placar)     {
            MostrarCaracter(placar, 0); //Chama a rotina que atualiza o display
            v_but2 = digitalRead(9);
            placar_ant = placar;
       }

       while (digitalRead(9) == 0) {
            delay(delaytime);
       }
  }
}

// Rotina Mostra número no display

void MostrarCaracter(int numero, int tela) {

    for  (int i = 0; i < 8; i++)  {
          Placar.setRow(tela, i, CARACTER[numero][i]);
    }
  
}

 

[Voltar]

[Avançar]