Projeto de Contador de Clicks com Matriz LED 8x8 e Arduino
Projeto de Contador de Clicks com Matriz LED 8x8 e Arduino
Introdução
Neste artigo, apresentaremos um projeto prático utilizando uma matriz de LED 8x8, dois push buttons, um Arduino e uma protoboard para criar um contador de clicks. Esse projeto é ideal para quem está começando com eletrônica e programação, pois combina conceitos importantes como leitura de entradas digitais, controle de saídas em matrizes de LED e lógica de programação.
A matriz de LED 8x8 permite exibir números e padrões, enquanto os push buttons servem como entradas para incrementar e decrementar um contador. Esse tipo de projeto é útil para entender como sistemas de contagem são implementados em dispositivos reais, como painéis de controle, jogos e sistemas industriais.
Materiais Necessários
Arduino Uno (ou similar)
Matriz de LED 8x8 (com driver MAX7219 ou diretamente conectada)
2 push buttons
Protoboard
Jumpers
Funcionamento do Projeto
O projeto consiste em:
Dois botões (um para incrementar e outro para decrementar).
Matriz de LED 8x8 para exibir o valor atual do contador (0 a 9, ou mais, dependendo da programação).
Lógica no Arduino que lê os botões, atualiza o contador e exibe o número correspondente na matriz.
Circuito
Os botões são conectados a portas digitais do Arduino.
A matriz de LED pode ser controlada via biblioteca (como
LedControl
)
Código Completo
#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 = "0123456789";
// define pinos do Arduinoconst byte bdir = 11, besq = 12;
int number = 0; // número a ser mostrado no display deve ser int (inteiros posit. e negat.)
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(besq, INPUT_PULLUP); pinMode(bdir, INPUT_PULLUP); } void loop() { if(!digitalRead(bdir)) { // botão direito acionado number += 1; while(digitalRead(bdir) == 0) {}; // loop vazio - aguarda soltar o botão lc.clearAll(); delay(200); }
if(!digitalRead(besq)) { // botão esquerdo acionado number -= 1; while(digitalRead(besq) == 0) {}; lc.clearAll(); delay(200); }
// reseta em caso de estouro (<0 ou >9) if (number < 0) {number = 9;} if (number > 9) {number = 0;}
// rotina para exibir os dígitos char dig = digits[number]; // displayChar(adress, char) lc.displayChar(0, lc.getCharArrayPosition(dig)); // exibe o caractere na posição }
#include "LedControlMS.h"/* Criando o objeto lc***** Definindo os pinos de conexão do módulo MAX7219 *****pino 2 conectado no DINpino 3 conectado no CLKpino 4 conectado no CSN_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 = "0123456789";// define pinos do Arduinoconst byte bdir = 11, besq = 12;int number = 0; // número a ser mostrado no display deve ser int (inteiros posit. e negat.)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 ArduinopinMode(besq, INPUT_PULLUP);pinMode(bdir, INPUT_PULLUP);}void loop() {if(!digitalRead(bdir)) { // botão direito acionadonumber += 1;while(digitalRead(bdir) == 0) {}; // loop vazio - aguarda soltar o botãolc.clearAll();delay(200);}if(!digitalRead(besq)) { // botão esquerdo acionadonumber -= 1;while(digitalRead(besq) == 0) {};lc.clearAll();delay(200);}// reseta em caso de estouro (<0 ou >9)if (number < 0) {number = 9;}if (number > 9) {number = 0;}// rotina para exibir os dígitoschar dig = digits[number];// displayChar(adress, char)lc.displayChar(0, lc.getCharArrayPosition(dig)); // exibe o caractere na posição}
Importância do Projeto
Aprendizado de Eletrônica Básica
Entender como botões e resistores funcionam.
Aprender a conectar uma matriz de LED ao Arduino.
Programação de Microcontroladores
Uso de digitalRead() para ler botões.
Controle de uma matriz de LED usando bibliotecas ou multiplexação.
Implementação de debounce para evitar leituras falsas dos botões.
Aplicações Práticas
Sistemas de votação (contagem de votos).
Contadores industriais (peças produzidas, pessoas em um espaço).
Jogos e displays interativos.
Base para Projetos Mais Complexos
Pode ser expandido para um cronômetro, medidor de velocidade ou jogo de memória.
Integração com outros sensores e atuadores.
Conclusão
Este projeto é uma excelente introdução à prototipagem eletrônica e à programação embarcada, permitindo que iniciantes entendam conceitos essenciais de forma prática. A matriz de LED 8x8 oferece um visual dinâmico, enquanto os botões introduzem a interação humana com o sistema.
Com pequenas modificações, é possível adaptá-lo para diversas aplicações, tornando-o um ótimo ponto de partida para projetos mais avançados.
Comentários
Postar um comentário