2025 Autor: John Day | [email protected]. Última modificação: 2025-01-13 06:58
Criação de um contador que aumenta quando um botão é pressionado usando o MAX7221.
Etapa 1: Peças
MAX7221 ou MAX7219
Trocar
4 Display de 7 segmentos (cátodo comum)
2 resistores: 10k e 9,53k (usei um 9,1k e ainda funciona)
Arduino
Etapa 2: Construindo o Circuito
Eu apenas anotei os pinos que usei, você pode encontrar o layout completo dos pinos na ficha técnica ou anexei. Certifique-se de olhar para o seu Display de 7 segmentos porque provavelmente será diferente do meu, mas o procedimento é o mesmo.
1. Conecte os dígitos 0 - 3 no MAX7221 aos dígitos 1 - 4 no visor. O dígito MAX 0 se conecta aos visores dígito 1 etc. Os visores não são convencionais e começam em 1 em vez de 0.
2. Conecte os segmentos A - G no MAX7221 aos segmentos A - G na tela.
3. Forneça energia e aterramento para o MAX. O VCC vai para o pino 19. O resistor de 10k também é conectado aos pinos 19 e 18. O aterramento vai para os pinos 4 e 9.
4. O MAX7221 se comunica com o Arduino via SPI (Interface Periférica Serial). Neste caso, apenas 3 fios são necessários porque não estou usando MISO (Master In Slave Out). No MAX7221 conecte o pino 1 (Din) ao Arduino, no meu caso usei o pino 12. Este é o seu MOSI (Master Out Slave In) ou os dados. O pino 12 no MAX é CS (entrada de seleção de chip) e é como os dados são carregados no Shift Register, conectei-o ao pino 9 no Arduino. A última conexão é CLK que é o pino 13 no MAX, conectei no pino 10 no Arduino.
Certifique-se de fornecer energia e aterramento por meio do Arduino usando 5 volts. Eu tive um problema em que meu Arduino não estava fornecendo potência suficiente para minha placa.
Isso é para a folha de dados MAX7221. Também de onde vieram as fotos.
www.mouser.com/datasheet/2/256/max7219-max…
Etapa 3: a mudança
Liguei o interruptor do esquema acima. Encontrado em
Usei o pino 8 no Arduino para controlar a chave e um resistor de 10k.
Etapa 4: Código
Usei a biblioteca LedControl.h encontrada no GitHub e seu código básico para ligar o MAX7221. Em seguida, modifiquei o código para contar de 0 a 9999 quando o botão está sendo pressionado.
#include "LedControl.h"
botão int = 8;
LedControl lc = LedControl (12, 10, 9, 1);
void setup () {
pinMode (botão, INPUT);
lc.shutdown (0, falso); // MAX7221 está no modo de economia de energia, então temos que ativá-lo
lc.setIntensity (0, 15); // Definindo brilho, máx. 15
lc.clearDisplay (0); // limpando a tela
}
void loop () {
estado int = digitalRead (botão);
int i = 0;
int j = 0;
int k = 0;
int l = 0;
enquanto (1) {
estado = digitalRead (botão);
enquanto (estado == 1) {
estado = digitalRead (botão);
lc.setDigit (0, 3, i, falso);
i ++;
atraso (100); // você pode mexer com isso
if (i == 10) {
i = 0;
j ++;
if (j == 10) {
j = 0;
k ++;
if (k == 10) {
k = 0;
l ++;
if (l == 10) {
enquanto (1) {
lc.setRow (0, 0, 0x3E); // quando a exibição atingir 9999, exibirá U - 1
lc.setRow (0, 1, 0x1); // Em valor decimal hexi
lc.setRow (0, 2, 0x1);
lc.setDigit (0, 3, 1, falso);
}
}
lc.setDigit (0, 0, l, falso);
}
lc.setDigit (0, 1, k, falso);
}
lc.setDigit (0, 2, j, falso);
}
}
}
}