Existem muitas aplicações, somente de software ou de automação, onde
contar o tempo é necessário, ou seja, onde é preciso ter um relógio.
Esse relógio pode ser feito apenas via software, com programação, ou
pode ser implementado utilizando-se hardware específico (cristal
oscilador e etc.). A ideia deste artigo é utilizar apenas técnicas de
programação e comandos da linguagem C do Arduino para programar um
relógio.
Eis o código fonte:
int seg=0,
min=0,
hor=0;
void setup()
{
Serial.begin(9600);
}
void loop()
{
static unsigned long ult_tempo = 0;
int tempo = millis();
if(tempo - ult_tempo >= 1000) {
ult_tempo = tempo;
seg++;
}
if(seg>=60) {
seg = 0;
min++;
}
if(min>=60) {
min = 0;
hor++;
}
if(hor>=24) {
hor=0;
min=0;
}
Serial.print(hor);
Serial.print(":");
Serial.print(min);
Serial.print(":");
Serial.println(seg);
delay(1000);
}
O que fizemos:
A função millis() retorna a quantidade de milissegundos desde o
início da execução do programa. Esse retorno é bastante estável uma vez
que volta ao zero apenas em aproximadamente 50 dias!
A cada 1000 milissegundos contamos um segundo, incrementando a
variável seg (segundos) e guardamos essa marca, para podermos refazer a
conta para encontrar os próximos 1000 milissegundos, uma vez que a
contagem da função millis() sempre caminha em frente (excento quando
zera, no caso que comentei acima).
Depois disso é o mais fácil: a cada 60 segundos, incrementamos um
minuto, a cada 60 minutos incrementamos uma hora e a cada 24 horas
voltamos tudo ao zero.
O delay é para que a impressão no terminal serial não fique confusa, mostrando várias vezes o tempo repetidamente.
Uma vez compilado e enviado ao Arduino, basta iniciar o Serial Monitor e verificar a contagem do tempo:
Mas talvez, mais interessante ainda, é incluirmos alguma coisa para
ajustarmos a contagem do tempo o horário atual. Para isso você vai
precisar de:
1. Um Botão
2. Um resistor (220?)
3. Fios
A ligação é a seguinte:
GND---| Resistor |-----| Botão | --------------- Pino 3 do Arduino
5V-------------------------| |
5V-------------------------| |
Altere o programa para que fique assim:
Com isso quando se mantem o botão pressionado o tempo correrá mais
rápido, cada segundo será incrementado em 200 milissegundos, ou seja, o
tempo correrá 5 vezes mais rápido. Ao despressionar o botão o tempo
voltará a correr normalmente, com um segundo valendo um segundo.
Dessa forma você poderá ajustar o tempo do Arduino a um relógio.
Lógico, esse projeto pode ser melhorando em muito, seja CRIATIVO!
0 comentários:
Postar um comentário