Projeto 73 - Dado eletrônico com Módulo Matriz de Leds - Arduino

Básico - Projeto 73

Dado Eletrônico - Módulo Matriz de Leds 8 X 8 - MAX7219

Objetivo

Neste projeto vamos criar um "dado eletrônico" que irá sortear números de 1 a 6 em uma matriz de leds 8X8, usando o módulo MAX7219 junto com a biblioteca LedControlMS.h e com o Arduino. Cada jogada é realizada ao pressionar um botão.

Obs: Antes de iniciar este projeto, recomendo que leia o tutorial: Projeto 71 - Como usar o Módulo Matriz de Led 8X8 - MAX7219 com Arduino, onde mostramos como usar o módulo matriz de leds e a bibilhoteca.

Definições

Módulo Matriz de Led 8X8 - MAX7219 - O módulo Matriz de led 8x8 é um módulo que permite controlar displays de led e transmitir informações para o Arduino de uma forma fácil e prática, ocupando poucas portas do microcontrolador (3 portas + VCC e GND). O módulo possuí um circuito integrado MAX7219 projetado para o acionamento de diversos tipos de displays de led, como uma matriz de led 8X8 por exemplo. Utilizando módulos MAX7219 você poderá ligar vários módulos em série (até 8 dispositivos) criando displays de leds de vários tamanhos.

Aplicação

Para fins didáticos e projetos com efeitos visuais, exibição de textos, imagens ou números.

Componentes necessários

Referência

Componente

Quantidade

Imagem

Observação

Protoboard Protoboard 830 pontos 1 Resultado de imagem para protoboard 830v

No mínimo utilizar protoboard com 830 pontos

Jumpers Kit cabos ligação macho / macho 1  
Módulo Matriz de led Módulo Matriz de LED 8 X 8 modelo MAX7219  1

Cor emissão do led: vermelha

Circuito Integrado: MAX7219

Tensão de operação: 5V

Qde. de leds: 64 (8X8)

Matriz: modelo 1088AS com organização interna Linhas (catodo comum) | Colunas (anodo comum)

(datasheet)

Poderá ser utilizado qualquer modelo de matriz 8 X 8

 Push Button Push button 6X6X5mm  2    
Arduino UNO R3 Arduino UNO 1

Você poderá utilizar uma placa Arduino UNO original ou similar

Montagem do Circuito

Conecte os componentes no Protoboard como mostra a figura abaixo. Verifique cuidadosamente os cabos de ligação antes de ligar seu Arduino. Lembre-se que o Arduino deve estar totalmente desconectado da força enquanto você monta o circuito.

Atenção

1. Para a montagem do módulo matriz de leds 8 X 8 basta conectar o módulo com os pinos do Arduino, conforme tabela abaixo:

Ardunino Módulo
VCC VCC
GND GND
Pino 2 DIN
Pino 3 CLK
Pino 4 CS

2. Monte o botão (push button) sem o resistor, pois através da programação vamos habilitar o resistor pull-up interno do arduino. Desta forma, quando o botão estiver pressionado, o Arduino retornará "LOW" ou "0". Para saber mais sobre botões,assista o vídeo Arduino: Botão e Resistor de Pull Up Interno ou leia os artigos: Projeto 04a - Push Button como interruptor - liga e desliga (padrão para pull-down ou pull-up) e Como usar push button com Arduino (programação).

3. Veja abaixo como realizamos a montagem do nosso projeto um mini protoboard.

Incluindo biblioteca LedControlMS.h no IDE do Arduino

Para obtermos o máximo de funcionalidade do módulo MAX7219 podemos adicionar a biblioteca LedControlMS.h no IDE do Arduino. Com ela podemos acender e apagar leds específicos, criar caracteres, números e até frases de forma muito simples.

Uma das grandes vantagens das placas Arduino é a diversidade de bibliotecas disponíveis que podem ser utilizadas em seus programas. Estas bibliotecas podem ser criadas para a linguagem "C" ou especificamente para o Arduino, reduzindo drasticamente o tempo gasto com programação. Veja a tabela Coletânea de bibliotecas para sensores.

Download dos arquivos da biblioteca LedControlMS.h

DOWNLOAD - Arduino_Led_matrix.zip

Para saber detalhes desta biblioteca clique aqui.

Instalando a biblioteca pelo IDE do Arduino

Após fazer o download do arquivo Arduino_Led_matrix.zip com todos os arquivos da biblioteca compactados no formato zip, abra o IDE do Arduino e siga o tutorial: Como incluir uma biblioteca no IDE do Arduino.

Usando o módulo MAX7219 com a biblioteca LedControlMS.h

Para saber como utilizar a biblioteca LedControlMS.h leia o tutorial: Projeto 71 - Como usar o Módulo Matriz de Led 8X8 - MAX7219 com Arduino

Sketch do projeto

1. Faça o dowload e abra o arquivo projeto73.ino no IDE do Arduino: DOWNLOAD - projeto73.ino

Ou se preferir, copie e cole o código abaixo no IDE do Arduino:

/*******************************************************************************
*
*             Projeto 73 - Dado eletrônico com módulo Max7219
*             Autor: Angelo Luis Ferreira
*             Data: 07/01/2020 (dd/mm/AA)
*                        http://squids.com.br/arduino
*
*******************************************************************************/
#include "LedControlMS.h"

/* Criando o objeto lc 
 ***** Definindo os pinos de conexão do módulo MAX7219 *****
 pino 2 conectado no DIN 
 pino 3 conectado no CLK 
 pino 4 conectado no CS
 N_MTX = 1 - Número de dispositivos (Máximo de 8 módulos MAX7219)
 */ 
const byte N_MTX = 1;
LedControl lc=LedControl(2,3,4, N_MTX);

String digits = "123456";

// define pinos do Arduino
const byte btn = 11; 

void setup() {
  for (int i=0; i< N_MTX; i++){
    lc.shutdown(i,false); 
    lc.setIntensity(i,8); /* define o brilho dos leds - médio */    
    lc.clearDisplay(i); /* limpa o display */
  }

  // define botões como entrada e pull up interno do Arduino
  pinMode(btn, INPUT_PULLUP);

  // randomSeed() basicamente "embaralha" a função random().
  randomSeed(analogRead(0));

  // coloca o primeiro número
  show(random(0, 6));
}  
  
void loop() {   
  
  if(!digitalRead(btn)) { // botão acionado
    while(digitalRead(btn) == 0) {}; // loop vazio - aguarda soltar o botão
    lc.clearAll();
    delay(200);
    rodada();
  }
}

void rodada(){
  byte result = 0; // inicializa a variável "result" com 0
  byte rodada = random(15, 35); // gera comprimento da rodada, quantos números passarão
  for (byte i = 0; i < rodada; i++) // loop de 0 até comprimento da rodada
    {
      result = random(0, 6); // gera número de 0 a 5, devido a string começar em 0 e finalizar em 5                             
      show(result); // mostra resultado
      delay(50 + i * 10); // espera para passar cada número (varia velocidade)
    }
}

void show(byte number) {
  char dig = digits[number];
  // displayChar(adress, char)
  lc.displayChar(0, lc.getCharArrayPosition(dig)); // exibe o caractere na posição  
}

ATENÇÃO: Se a matriz de leds não acender verifique todas as conexões com o Arduino.

Vídeo

Como o projeto deve funcionar

1. Ao iniciar o programa, o display irá mostrar um número aleatório entre 1 e 6.

2. Para gerar uma rodada do dado basta pressionar o botão.

3. Os números são passados de forma aleatória e com quantidade e velocidade variável.

4. Finalmente um número ficará fixo mostrando supostamente a face do dado.

5. Clique no botão para gerar uma nova rodada.

Desafios

Com base neste projeto, resolva o seguinte desafio: Desafio 60

O anúncio abaixo ajuda a manter o Squids Arduino funcionando

Comentários

×

Infomações do site / SEO








×

Adicionar Marcadores