Como exibir o tempo para o seu projeto relógio arduino

Video: Relógio RTC Arduíno com visor LCD

Uma vez que você tem algo na tela para o seu Project Clock Arduino, é hora de ler o tempo a partir do módulo RTC e exibi-lo. Mais tarde, você adicionar botões para programar o alarme, e um interruptor para alternar entre Time Display, Set Alarme e Alarme modos Armadas.

Há realmente apenas duas coisas que você pode mostrar com este relógio: ou a hora actual ou o tempo que você deseja que o alarme disparar. Em vez de incluir o código para ambos no principal ciclo (), faz sentido para colocar o processo de exibição em sua própria função.

Adicione o seguinte código para a secção de declarações de variáveis ​​no topo do seu código:

RTC_DS1307 rtc- // Criar um relógio de tempo real chamado rtcLiquidCrystal lcd (12, 11, 5, 4, 3, 2) - // Criar um LCD chamado lcdDateTime agora-

Isso cria um objeto DateTime chamado agora. O objeto DateTime é parte da biblioteca RTC e é a única maneira de obter o tempo fora do módulo RTC, embora ele tem um monte de opções e pode proporcionar horas, minutos, segundos, e no ano, mês e dia.

Video: Como fazer um relógio com Arduino e RTC DS1307

Em seguida, adicione o código em seu loop principal que lê a hora atual do módulo RTC, e adicionar uma função para atualizar a tela com a hora atual:

void loop () {agora = rtc.now () - // Obter a hora atual // Atualize a displayupdateDisplay () -}

o agora DateTime objeto armazena a hora atual retirado do rtc.now () função para exibir a hora e verificar se é hora de disparar o alarme.

Para manter o código modular, actualizar a apresentação é feita em sua própria função, fora do loop principal. Depois de fechar o loop principal, adicione o updateDisplay () função digitando o seguinte código:

anular updateDisplay () {int h = now.hour () - // Obter as horas agora e armazená-los em um inteiro chamado dica m = now.minute () - // Obter os minutos agora e armazená-los em um inteiro chamado hortelã s = now.second () - // Obter os segundos agora e armazená-los em um inteiro chamado slcd.setCursor (0, 0) - // Definir o cursor na coluna zero, fileira superior ... lcd. impressão(" O tempo é: ") - // ... com espaços para limpar caracteres a partir da criação alarm.lcd.setCursor (4, 1) - // Move o cursor para a coluna quatro, menor rowif (HLT; 10) {// Adicionar um zero, se necessário , como abovelcd.print (0) -} lcd.print (h) - // Mostrar a hourlcd.setCursor corrente (6, 1) - // Move para a próxima columnlcd.print (":") - // E imprimir o colonlcd.setCursor (7, 1) - // Move para a próxima columnif (MLT; 10) {// Adicionar um zero, se necessário, como abovelcd.print (0) -} lcd.print (m) - // Mostra a corrente minutelcd.setCursor (9, 1) - // movimento para a próxima columnlcd.print (":") - // E imprimir o colonlcd.setCursor (10, 1) - // Move para a próxima columnif (SLT; 10) {// Adicionar um zero, se necessário, como abovelcd.print (0) -} lcd.print (s) - // Mostra a corrente segunda}

Envie este código ao seu Arduino e ver o que acontece. Se tudo está bem e seu código compila corretamente, você deve estar no negócio! O display deve mostrar uma vez que coincide com o um em seu computador.



No código, o tempo atual é solicitado ao agora objeto e colocado em três variáveis ​​inteiras utilizados apenas no updateDisplay função. Estas variáveis ​​têm uma âmbito local, que significa que eles só podem ser usados ​​dentro updateDisplay (), eo resto do programa não sabe nada sobre eles - o que explica por que eles não são declarados no início do seu código.

Você solicitar minutos de tempo, horas e segundos separadamente com now.hours (), now.minutes (), e now.seconds (). Atribuindo cada um deles separadamente a sua própria variável inteiro (h, m, e s) é muito mais fácil de solicitar a hora atual de uma só vez.

Tendo analisado o tempo em três variáveis, a principal coisa acontecendo em updateDisplay () está posicionando o cursor no LCD e imprimir o texto relevante. Posicionando o cursor é feito com lcd.setCursor (), o qual tem dois parâmetros: número de coluna e número de linha. Definir o cursor só coloca-lo na posição correta.

Você então tem que dizer ao visor o que imprimir. A numeração começa em zero, de modo que o carácter superior esquerda está em coluna 0 e fila 0. O cursor está posicionado no canto superior esquerdo do ecrã e a primeira linha de texto é impresso com lcd.print ( “O tempo é:”).

Você pode usar o lcd.clear () função, que apaga todo o texto na tela inteira. No entanto, o seu relógio está constantemente atualizando o visor, para limpar o LCD cada vez que o updateDisplay () Executa a função pode introduzir um pouco de cintilação perceptível. Uma abordagem mais simples (que usa um a menos instrução) é apenas para escrever os caracteres de espaço sobre o que poderia ter já sido no visor.

Em seguida, o cursor é movido quatro espaços para a direita e na segunda linha, de modo que o tempo está centrada na tela:

lcd.setCursor (4,1) -

Um pouco complicado sobre o uso de números inteiros para obter as horas, minutos e segundos, é que eles não têm um zero à esquerda para valores abaixo de 10. Você precisa adicionar aqueles em manualmente, tanto para fazer o relógio olhar direito (por exemplo, 01 : 05) e para manter os minutos horas e segundos no mesmo lugar na tela.

Video: Relógio com Arduino ( DS1302 )

Adicionando os zeros é realizada da mesma maneira para horas, minutos e segundos:

if (HLT; 10) {// Adicionar um zero, se necessário, como abovelcd.print (0) -} lcd.print (h) - // Mostrar a hora atual

o condicional E se testes declaração sobre se o horário atual for inferior a 10, e em caso afirmativo, o impressão() declaração imprime um zero. Depois disso, o LCD avança automaticamente para a posição da coluna seguinte, por isso, quando você imprime a hora corrente, armazenado na variável inteiro h, ele vai ter um zero à esquerda. O mesmo vale para minutos e segundos.

Video: Arduino - Relógio, data e hora com Display LCD, Big Numbers e RTC DS3231

Você também deve avançar o cursor para a posição correta para o zero à esquerda para minutos e segundos. Você insere uma vírgula entre elas com o lcd.print ( “:”) - declaração.


Publicações relacionadas