Como exibir o tempo para o seu projeto relógio arduino
Video: Relógio RTC Arduíno com visor LCD
Conteúdo
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.