// 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]);
}
} |