A primeira diferença, óbvia, é que temos oito dígitos. Isto é feito usando dois displays de quatro dígitos do mesmo tamanho que o usado no outro módulo. Entretanto, estes displays possuem pontos entre os dígitos ao invés dos dois pontos no centro.
Do ponto de vista mecânico, a montagem é mais compacta. Os displays são soquetados (o que é bom). Infelizmente o posicionamento dos conectores de interligação do módulo não é dos melhores. Os pinos retos para cima dificultam a montagem em um painel. Além disso, o conector da direita está muito próximo do display.
A boa notícia é que o módulo usa o MAX7219 que já examinamos aqui e aqui. Este chip é bastante versátil e de fácil uso.
O conector da direita do módulo possui os sinais VCC, GND, DIN, CS e CLK (entrada). O conector da direita (saída) possui os sinais VCC, GND, DOUT, LOAD e CLK. Desta forma é possível ligar o conector da esquerda a um microcontrolador e o conector da direita a um segundo módulo. Esta interconexão de módulos é limitada pela presença de um diodo entre os sinais de VCC da entrada e saída, o que faz com que a alimentação do segundo módulo seja 0,7V abaixo da do primeiro. Na prática isto limite o encadeamento a três módulos.
Para exercitar o módulo com um Arduino usei uma adaptação do software feito anteriormente:
// Conexões ao MAX7219 #define PIN_CLK 4 #define PIN_LOAD 5 #define PIN_DIN 6 #define LED 13 // Registradores do MAX7219 #define MAX7219_NOP 0x00 #define MAX7219_DIG0 0x01 #define MAX7219_DIG1 0x02 #define MAX7219_DIG2 0x03 #define MAX7219_DIG3 0x04 #define MAX7219_DIG4 0x05 #define MAX7219_DIG5 0x06 #define MAX7219_DIG6 0x07 #define MAX7219_DIG7 0x08 #define MAX7219_MODE 0x09 #define MAX7219_INT 0x0A #define MAX7219_LIM 0x0B #define MAX7219_SHUT 0x0C #define MAX7219_TEST 0x0F // CONEXOES DOS LEDS #define DIG1 MAX7219_DIG7 #define DIG2 MAX7219_DIG6 #define DIG3 MAX7219_DIG5 #define DIG4 MAX7219_DIG4 #define DIG5 MAX7219_DIG3 #define DIG6 MAX7219_DIG2 #define DIG7 MAX7219_DIG1 #define DIG8 MAX7219_DIG0 uint8_t cont [9]; void setup () { pinMode (LED, OUTPUT); pinMode (PIN_LOAD, OUTPUT); pinMode (PIN_DIN, OUTPUT); pinMode (PIN_CLK, OUTPUT); digitalWrite (PIN_LOAD, HIGH); digitalWrite (PIN_CLK, LOW); digitalWrite (PIN_DIN, LOW); write7219 (MAX7219_SHUT, 0x00); write7219 (MAX7219_TEST, 0x00); write7219 (MAX7219_MODE, 0xFF); write7219 (MAX7219_INT, 0x0F); write7219 (MAX7219_LIM, 0x07); write7219 (DIG1, 12); write7219 (DIG2, 11); write7219 (DIG3, 13); write7219 (DIG4, 14); write7219 (DIG5, 12); write7219 (DIG6, 11); write7219 (DIG7, 13); write7219 (DIG8, 14); write7219 (MAX7219_SHUT, 0x01); delay (2000); for (int i = 0; i < 8; i++) cont[i] = 0; } void loop () { write7219 (DIG1, cont[0]); write7219 (DIG2, cont[1]); write7219 (DIG3, cont[2]); write7219 (DIG4, cont[3] | 0x80); write7219 (DIG5, cont[4]); write7219 (DIG6, cont[5]); write7219 (DIG7, cont[6]); write7219 (DIG8, cont[7]); for (int i = 7; i >= 0; i--) { if (cont[i] < 9) { cont[i]++; break; } cont[i] = 0; } delay (10); } void write7219 (uint8_t addr, uint8_t data) { digitalWrite (PIN_LOAD, LOW); shiftOut (PIN_DIN, PIN_CLK, MSBFIRST, addr); shiftOut (PIN_DIN, PIN_CLK, MSBFIRST, data); digitalWrite (PIN_LOAD, HIGH); }Reparar que o dígito 7 do MAX7219 corresponde ao dígito mais à esquerda e o digito 0 ao mais à direita (ao contrário da minha montagem anterior). O ponto, como esperado, é controlado pelo bit mais significativo do registrador dos dígitos (independente do modo).
Conclusão
Este módulo é uma boa solução para quando precisamos apresentar números com mais de quatro dígitos. O posicionamento dos conectores não é dos melhores mas dá para conviver com ele. Uma opção com displays maiores seria muito interessante.
6 comentários:
Esse código funciona direito ou tenho que baixa outras biblioteca.
Não precisa de nenhuma biblioteca adicional.
Obrigado daniel. Pela resposta vou estalar... dúvida.
Meu projeto é um pimbal caseiro pois digo sou iniciante no mundo Arduino,
Minha intenção é colocar 2 placares,
Será possipos com esse esquema.desde já muito obrigado...
Sim, é possível. Você pode inclusive encadear dois módulos destes, ligando os sinais de saída de um na entrada do outro (isto requer alterar um pouco o software).
Professor mas um pergunta
Até quantos leds de auto brilho um arduino pode acender..ao mesmo tempo
Obrigado
Estou fazendo um post falando sobre LEDs que vai abordar esta questão.
Postar um comentário