O CI TM1637 serve para controlar displays de Sete Segmentos de 4 dígitos.
Conectar 4 displays de sete segmentos no Arduino consumiria muitos pinos, portanto o uso do TM1637é essencial.
Com o TM1637, controlamos 4 dígitos com somente dois pinos.
A comunicação entre o Arduino e o TM1637 é realizada via protocolo serial.
Para facilitar a implementação, é essencial utilizar uma biblioteca externa que já implementa esta comunicação.
Neste projeto você criará um circuito que faz o uso um display de Sete Segmentos com TM1637 no Arduino.
Para a criação deste circuito serão necessários os seguintes componentes:
Para instalar a biblioteca do TM1637, no Arduino IDE acesse o gerenciador de bibliotecas, busque por TM1637, e clique em instalar/install na opção TM1637 by Avishay Orpaz.
Para montar o circuito, visualize na imagem a seguir como conectar os componentes entre a placa Arduino e a breadboard.
A seguir temos o schematics do circuito, que detalha suas conexões e fornece detalhes mais específicos do que o circuito da imagem anterior.
Uma vez criado o circuito, use o código fonte a seguir no Arduino IDE para fazer o upload dele na placa Arduino e assim ver o resultado do circuito em funcionamento.
/**
* Código do curso Magos do Arduino para utilizar um display de sete segmentos
* de 4 dígitos controlado pelo TM1637 que exibe a hora e minutos.
*
* (c) Copyright KazaleIT
* @kazaleitoficial no YouTube
**/
#include <Arduino.h>
#include <TM1637Display.h>
#define PINO_CLK 2
#define PINO_DIO 3
TM1637Display display(PINO_CLK, PINO_DIO);
void setup() {
// valores entre 0 e 7 para menos e mais brilho
display.setBrightness(3);
}
// defina a hora e minuto inicial
int horas = 9;
int minutos = 56;
int segundos = 0;
void loop() {
if (segundos == 60) {
segundos = 0;
minutos++;
}
if (minutos == 60) {
minutos = 0;
horas++;
}
if (horas == 24) {
horas = 0;
}
char horasBuffer[4];
sprintf(horasBuffer, "%02d%02d", horas, minutos);
display.showNumberDecEx(atoi(horasBuffer), SEG_G, false, 4, 0);
delay(1000);
segundos++;
display.showNumberDecEx(atoi(horasBuffer), 0, false, 4, 0);
delay(1000);
segundos++;
}