Início
/
Projetos Arduino
/
Projetos Squids
/
Básico
/
Projeto 73 - Dado eletrônico com Módulo Matriz de Leds - Arduino
Projeto 73 - Dado eletrônico com Módulo Matriz de Leds - Arduino
Angelo Luis Ferreira | 07/01/2020
Acessos: 3.267
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 |
|
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