Escolar Documentos
Profissional Documentos
Cultura Documentos
Deixe um comentário
filipeflop.com/blog/aprenda-a-construir-um-relogio-binario-com-arduino/
Neste post vamos ver como usar um Arduino para construir um relógio binário. Para
manter a data e hora atuais, mesmo com o Arduino desligado, vamos usar um módulo
RTC com bateria baseado no circuito integrado DS3231. A apresentação da data
e hora será feita em binário, usando um módulo matriz 8×8 de LEDs.
Material Necessário
1/9
No nosso caso vamos usar apenas os registradores de data e hora. Melhor ainda,
vamos usar uma das várias bibliotecas disponíveis no Gerenciador de Bibliotecas da IDE
do Arduino:
Na minha montagem eu usei o módulo RTC para o Raspberry Pi, aproveitando que eu
tinha um em mãos. Você pode usar o outro módulo RTC DS3231, tomando o cuidado de
usar os pinos corretos:
2/9
Conhecendo o Módulo Matriz de LED 8×8 com MAX7219
Este módulo possui 64 LEDs, organizados em 8 linhas e 8 colunas. Como controlar
tantos LEDs? São LEDs demais para ligar um pino do Arduino a cada LED!
3/9
É aí que entra o MAX7219. Ele cuida de todo o processo de ficar ativando uma linha de
cada vez e colocar o valor correto em cada coluna. Para isto ele tem 8 registradores, um
para cada linha. Cada bit dos registradores corresponde a um LED. Com o
MAX7219 basta o nosso programa escrever nos 8 registradores como deve estar cada
LED. O MAX7219 tem até o recurso de controlar a intensidade dos LEDs através dos
tempos em que os LEDs ficam acesas ou apagados (isto é feito tão rápido que a nossa vista
faz uma “média” e tem a impressão que os LEDs estão sempre acesos porém mais fortes
ou mais fracos).
4/9
Circuito do Relógio Binário com Arduino
A figura abaixo mostra a montagem. Como não são necessários componentes discretos é
mais fácil ligar diretamente os módulos sem usar uma protoboard:
5/9
#include <Wire.h>
#include "DS3231.h"
#include "LedControl.h"
// Matrix de LEDs
const int pinDIN = 5;
const int pinCLK = 7;
const int pinCS = 6;
const int disp = 0; // Temos só um display
LedControl ml = LedControl(pinDIN, pinCLK, pinCS);
// Relogio
RTClib rtc;
byte bufHora[12]; // ddmmaahhmmss
int iBuf = -1;
// Iniciação
void setup() {
// Matriz de LEDs
ml.shutdown (disp,false); // Liga o display
ml.setIntensity (disp, 8); // Ajuste a intensidade conforme o seu gosto
ml.clearDisplay (disp);
// Relogio
Wire.begin();
// Serial
Serial.begin (115200);
}
// Laço principal
void loop() {
// O acerto do relógio é feito pela serial
if (Serial.available()) {
trataAcerto();
}
// Pega a data e hora atual e mostra no display
DateTime agora = rtc.now();
ml.setRow (disp, 7, agora.day());
ml.setRow (disp, 6, agora.month());
ml.setRow (disp, 5, agora.year() % 100);
ml.setRow (disp, 3, agora.hour());
ml.setRow (disp, 2, agora.minute());
ml.setRow (disp, 1, agora.second());
}
if (c == '<') {
// inicio do acerto
iBuf = 0;
} else if (c == '>') {
if (iBuf < 12) {
// erro
Serial.print("?");
} else {
// recebeu tudo, acertar a hora
6/9
DS3231 Clock;
Clock.setClockMode(false); // formato 24h
Clock.setDate(bufHora[0]*10+bufHora[1]);
Clock.setMonth(bufHora[2]*10+bufHora[3]);
Clock.setYear(bufHora[4]*10+bufHora[5]);
Clock.setHour(bufHora[6]*10+bufHora[7]);
Clock.setMinute(bufHora[8]*10+bufHora[9]);
Clock.setSecond(bufHora[10]*10+bufHora[11]);
Serial.println("Hora acertada!");
}
iBuf = -1;
} else if ((iBuf >= 0) && (iBuf < 12) && (c >= '0') && (c <= '9')) {
bufHora[iBuf++] = (byte) (c - '0');
}
}
7/9
Para acerta a hora, conecte o Arduino ao computador, abra o Monitor Serial da IDE,
selecione a velocidade 115200 bps e digite a data e hora no formato
<ddmmaahhmmss>:
8/9
Clique no botão enviar para acertar o relógio. Atenção que não é feita nenhuma
conferência dos valores informados.
Conclusão e Sugestões
Neste artigo você aprendeu um pouco sobre o uso do relógio de tempo real DS3231 e
do uso do MAX7219 controlando uma matriz de 8×8 LEDs montando um relógio
“diferentão” com eles. Você pode encontrar mais informações sobre os componentes
lendo os respectivos datasheets (links nas páginas dos produtos no site da FilipeFlop).
Você pode aproveitar estes conhecimentos para criar os seus próprios projetos. Algumas
ideias:
9/9