Índice:

Relógio fácil de verão: 7 etapas
Relógio fácil de verão: 7 etapas

Vídeo: Relógio fácil de verão: 7 etapas

Vídeo: Relógio fácil de verão: 7 etapas
Vídeo: Que tipo de pessoa você seria no trote da faculdade? Kkk. #faculdade #atletica #trotefaculdade 2024, Julho
Anonim
Relógio de verão fácil
Relógio de verão fácil
Relógio fácil de verão
Relógio fácil de verão

História

Este projeto começou como um desafio para mim aprender a programar (codificação) com o Arduino Uno e um único display LCD 1602A. Primeiro, eu queria levar o Arduino aos seus limites de precisão. Este é um projeto para construir um relógio sem a utilização de um módulo RTC (módulo Real Time Clock) e além disso não utilizar nenhum delay (); comandos porque o atraso (); comando interrompe o código por um determinado período de tempo. Conforme eu trabalhava no código básico de manutenção de tempo, pensei que isso poderia ser um pouco mundano, então decidi adicionar um recurso de horário de verão como uma adição nova para apimentar as coisas e possivelmente criar um pouco mais de interesse neste projeto. No início, a ideia era puramente nova, mas quanto mais trabalho com ela e observo o relógio físico que tenho em minha mesa, mais prática a ideia se torna. Adicionando um módulo RTC e ajustando o código, esse relógio seria preciso por muitos anos e a um custo muito baixo para os fabricantes e o público que adquirir tal relógio.

O horário de verão ou (DST) existe há mais de 100 anos (Google, tem uma história bastante colorida). Não quero entrar na política disso, mas é um exercício rude e doloroso que não torna a vida fácil para as pessoas comuns (você e eu). Na maioria das vezes, gostamos da hora extra de luz do dia, mas a maneira como é aplicada é brutal. É hora de uma grande atualização para uma ideia muito antiga.

Este exemplo é fácil de conviver com a era digital e os avanços da tecnologia facilmente aplicados a todas as formas de relógios digitais, mas pode ajudar no fim do relógio analógico. Em vez de um salto de 1 hora do horário padrão para o horário de verão e depois do horário de verão para o horário padrão, este relógio é baseado na progressão gradual de tempo do solstício de inverno para o solstício de verão e de volta ao horário padrão no próximo solstício de inverno ano após ano. Esta transição ocorre por 180 dias a cada período de 6 meses, o ajuste é de 20 segundos por dia durante 360 dias com os 5 ou 6 dias restantes adicionados à duração dos solstícios. Meu exemplo aqui incrementa 1 minuto a cada três dias dentro do ciclo de 180 dias. Em 21 de junho de cada ano ou por volta dessa data, o relógio está 1 hora adiantado e em 21 de dezembro de cada ano ou por volta dessa hora o relógio voltou ao horário padrão. O ano bissexto é facilmente contabilizado, especialmente se um RTC for usado. O hemisfério sul também se adapta facilmente a este relógio, a escala do slide está apenas 6 meses defasada em relação ao hemisfério norte.

Existem três lugares no mundo onde o horário de verão seria praticamente a menos, a região equatorial e os pólos. Não acho que a luz do dia mude muito no equador, não sei se alguma das áreas tropicais usa DST e os pólos é uma história diferente de novo, apenas 'QUE' horas são nos pólos, afinal?

Etapa 1: sobre o relógio

Sobre o relógio
Sobre o relógio
Sobre o relógio
Sobre o relógio

O relógio que criei é baseado na hora padrão, que nunca varia do relógio mundial internacionalmente aceito; isso é exibido na primeira linha do LCD 1602. A segunda linha é a mesma escala de tempo, mas mostra o deslocamento de minutos de um solstício para o próximo. Do solstício de inverno ao solstício de verão, a compensação aumenta um minuto a cada três dias até um máximo de sessenta minutos. Do solstício de verão ao solstício de inverno, a compensação diminui um minuto a cada três dias até que a hora padrão e a hora DST sejam iguais.

Para este exemplo, usei o horário militar (relógio de 24 horas) e o horário padrão (relógio de 12 horas) AM e PM para ajudar aquelas pessoas não familiarizadas com a escala de tempo de 24 horas, também dei meu espaço para exibir o número do dia em que o horário de verão é definido de. O código pode ser alterado para exibir o relógio de 12 horas. Eu adicionei três botões conectados aos pinos digitais 2, 3 e 4 para ajustar o tempo. Esses botões aumentam apenas segundos, minutos ou horas. Os botões são opcionais, o relógio ainda funcionará bem se você não conectar os botões e não precisar alterar o código. Eu recomendaria usar pelo menos um botão para ajustar os segundos e se a precisão total não puder ser alcançada mantenha o relógio no lado lento, o botão avança o tempo 1 segundo por segundo.

Se você iniciar o relógio a partir do IDE do Arduino, levará cerca de 5,5 a 6 segundos para o esboço carregar e inicializar, se você tiver o esboço carregado no Arduino, conecte-o a uma verruga de parede ou fonte de alimentação, levará cerca de 2,5 para 3 segundos para inicializar e executar.

É necessária alguma configuração manual quando você finalmente deixa o relógio pronto para funcionar.

Este relógio não usa um módulo RTC nem usa "delay ();" comandos.

Se você gosta de usar o RTC com o Arduino, este conceito ainda pode ser usado. O RTC fornecerá todas as informações de que você precisa para adicionar o horário EDSC. O código pode ser bem diferente com um módulo RTC, não o examinei. Você está praticamente sozinho, mas é uma ótima maneira de exercitar seu cérebro.

Etapa 2: O que você precisa

O que você vai precisar
O que você vai precisar
O que você vai precisar
O que você vai precisar
O que você vai precisar
O que você vai precisar

LISTA DE COMPRAS

1 Arduino Uno ou Mega2569 (os pinos I2C são A4 e A5 no UNO e 20 e 21 no 2560 Mega)

Praticamente qualquer outro Arduino deve funcionar, os pinos usados podem ser diferentes. Por esse motivo, qualquer placa controladora funcionará. Você terá que reescrever o código dessa placa ou fabricante.

1 display LCD 1602 (cor de sua escolha)

Eu uso uma mochila I2C com o LCD, acho que é mais fácil e rápido de configurar.

Fios de ligação

SUPRIMENTOS OPCIONAIS

1 tábua de pão de tamanho médio

1-3 botões de contato momentâneos

1-3 resistências de 10 K ohm

Esta instrução é longa, então não vou para a montagem ou gabinete que usei para exibir o relógio. Se gostou deste projeto e quer fazer uma versão permanente desenhe-o ao seu gosto. Este design é perfeito para mim porque eu tinha tudo o que precisava na minha caixa de lixo e gosto do visual.

NOTAS:

Para evitar quedas de energia, meu relógio final é alimentado por um painel solar que tenho do lado de fora. O painel solar mantém uma bateria de 12 volts carregada com um regulador para evitar sobrecarga. Essa bateria é conectada ao Arduino por meio do conector de alimentação próximo à porta USB. Eu mantenho a porta USB conectada à grade para reduzir o consumo da bateria. Ambas as fontes de energia podem ser usadas ao mesmo tempo sem danos ao Arduino. Uma bateria de 12 volts pode ser carregada até 14,5 volts no máximo, o que é muito alto para o Arduino, então eu uso um conversor Buck para reduzir a tensão de alimentação da bateria para uma faixa de 9 a 12 volts. A bateria de 12 volts que mantenho carregada durará 3 ou 4 dias se os dias estiverem nublados. O regulador que uso cortará a energia do Arduino se a voltagem da bateria cair para 11 volts. A bateria que tenho vem de um sistema de luz de emergência para edifícios comerciais, tem cerca de um quarto do tamanho de uma bateria de carro pequeno. Se você pretende usar uma bateria de carro, certifique-se de mantê-la em uma área bem ventilada (ao ar livre), pois as baterias liberam hidrogênio e gás oxigênio à medida que se carregam e descarregam. Essa é uma combinação explosiva.

AVISO

MANTENHA A BATERIA EM UM POÇO

ÁREA VENTILADA, LADO DE FORA

Etapa 3: Fiação

Fiação
Fiação

Eu forneci um esquema para todas as conexões neste projeto, se você usar uma placa de ensaio, você precisará de uma placa de tamanho médio, os interruptores precisarão de espaço para serem espalhados para que o circuito não seja confuso.

O display LCD 1602 tem uma mochila I2C para simplificar; se você usar conexões SPI, precisará verificar como usá-lo e alterar o código próximo ao início do esboço. Nunca usei as conexões SPI, então os pinos 2, 3 e 4 podem não estar disponíveis para os três botões.

Os três botões de pressão são usados para ajustar a hora no relógio. Eles só avançam o tempo (AHEAD). Nos ajustes finais, mantenha o relógio no código no lado lento (cerca de 1 a 2 segundos por dia ou vários dias), desta forma você pode adiantar o tempo se necessário. Cada botão avança o tempo um incremento por segundo, o botão inferior 2 segundos por segundo, o botão do meio 1 minuto por segundo e o botão superior 1 hora por segundo. Um grau bastante alto de precisão deve ser viável, então você não precisará ajustá-lo muito rapidamente.

Se você estiver ajustando segundos, minutos ou horas (por exemplo, se os minutos forem 58, 59, 00), a hora avançará para a próxima hora.

Esses três botões são uma adição de última hora ao relógio, eles funcionam bem, mas pode haver uma maneira melhor. Apenas lembre-se de que se você mexer com essa parte do código o "delay ();" comando não pode ser usado. Usei esse método porque não preciso me preocupar com saltos de mudança e saltos estranhos com o avanço do tempo.

Etapa 4: O que o visor mostra

O que a tela mostra
O que a tela mostra

Coloquei muitas informações no visor LCD 1602 que precisam de alguma explicação:

Linha 1 ou linha zero '0' ao falar em código, mostra a hora padrão. À esquerda está 'STD', que significa hora 'STandarD'.

O próximo na primeira linha do meio é o horário padrão local. Não comece com o horário de verão, o relógio o exibirá na segunda linha.

Esta escala de tempo é um relógio de 12 horas, portanto, no lado direito está 'AM ou' PM 'para indicar manhã ou depois do meio-dia.

Linha 2 ou linha um '1' ao falar em código, mostra o horário de verão que varia de acordo com o dia do ano. O 'DST' à esquerda significa 'Horário de verão'

No meio da segunda linha está o horário militar local, que é um relógio de 24 horas. Você vai ouvi-lo referido como 'oh seiscentas horas', por exemplo.

No lado direito está o dia do ano com referência ao solstício de inverno, no Hemisfério Norte, 21 de dezembro (aproximadamente) é o dia zero '0' e no Hemisfério Sul, 21 de junho (aproximadamente) é o dia zero '0'.

Forneci dois arquivos.pdf para referência ao configurar o relógio pela primeira vez. Escolha o arquivo que se refere ao hemisfério em que você vive.

Os três botões à direita incrementam os segundos, minutos e horas de baixo para cima.

Etapa 5: configuração do esboço

Configuração de esboço
Configuração de esboço

Existem várias linhas de código que precisam ser configuradas para a inicialização. Algumas dessas linhas precisam ser alteradas cada vez que você desconecta o relógio e altera os valores das variáveis no esboço. Se você iniciar o relógio do IDE, levará cerca de 6 segundos para carregar e iniciar. Se você carregar o esboço do IDE, desconecte o relógio e reinicie-o de uma verruga na parede ou fonte de alimentação, o esboço será inicializado em cerca de 2,5 segundos.

Linha 11 LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7);

Esta linha endereça o display LCD e define o endereço apropriado da mochila I2C. 0x27 é o endereço de qualquer uma das mochilas que comprei. Se você ligar o relógio, mas não houver dados exibidos, mas ele acender, o endereço provavelmente é diferente em seu LCD. Vou colocar um link abaixo para uma descrição de como alterar o endereço de sua mochila de LCD ou encontrar o endereço.

Linhas 24 int minutoSt = 35;

Defina o minuto de início para o relógio padrão, normalmente defina-o 5 minutos antes de iniciar o relógio para permitir a configuração do tempo.

Linhas 25 int hourSt = 18;

Defina a hora para o horário STD (relógio de 24 horas) para começar em. 18h00 seria a hora 18h00.

Linha 26 int DSTdays = 339;

Faça o download e consulte o arquivo pdf "Easy DST Clock Time Scale" (hemisfério norte ou sul) em que você mora, procure a data e insira o dia # nesta linha. (Coluna esquerda). Exemplo (24 de novembro é o dia # 339 no hemisfério norte e o dia # 156 no hemisfério sul)

Linha 27 int DSTyear = 2019;

Insira o ano atual.

Linha 92 if ((masterTime - previousMasterTimeSt> = 1000) && (microTime - previousMicroTimeSt> = 500)) {

O "previousMasterTimeSt" precisa ser comparado ao número de milissegundos, portanto, '1000' pode precisar ser alterado para 999 dependendo do relógio interno da placa Arduino e, em seguida, ajustar o anterior MicroTime para ajustar o relógio. O clock interno, embora 16MH, tem variações de uma placa para a outra.

O "previousMicroTimeSt" ajusta o relógio interno para ajudar a contar um segundo preciso. Se o relógio for muito rápido, aumente os microssegundos e se o relógio for muito lento, diminua os microssegundos e, se necessário, diminua os milissegundos para 999 e então inicie os microssegundos em cerca de 999, 990 ou aumente a velocidade do relógio.

Cada placa Arduino tem uma velocidade ligeiramente diferente, portanto, esses números mudarão com cada placa que você usar. Parte do código ainda não foi testada, esta é a linha 248 para contabilizar cada ano bissexto. Nas próximas semanas irei testá-lo e postar quaisquer alterações, se necessário.

Etapa 6: Notas Finais

Notas Finais
Notas Finais

Este projeto é fácil de construir, mas o conceito e os ajustes necessários no código podem ser uma tarefa, tome seu tempo e pense bem, o relógio não expira até o final de 2037. Vou ficar de olho no meu e-mail para perguntas, pois tenho certeza que haverá algumas, não sou um gênio literário, então algumas de minhas descrições podem ser um pouco confusas.

Há dois arquivos.pdf incluídos, baixe o arquivo para o hemisfério em que você vive, esse arquivo fornecerá as informações necessárias para iniciar o relógio com precisão.

Com as informações manipuladas no esboço, seria fácil exibir não apenas a hora padrão e o horário de verão, mas também o dia e a data em um LCD 2004A. Se você gosta dos desafios que este projeto oferece, tente conectar um display LCD 2004A e, em seguida, adicione o código para exibir as informações adicionais ou, se houver interesse suficiente, farei outra variação deste projeto incluindo essas informações adicionais.

Tentei ser totalmente incluso neste projeto, mas encontrei três áreas do mundo em questão. O Pólo Norte, o Pólo Sul e o Equador.

O horário de verão é necessário ou mesmo possível nos pólos norte ou sul?

Que horas são no Pólo Norte ou no Pólo Sul?

Em que direção você viajaria para deixar o Pólo Norte ou o Pólo Sul?

Do Pólo Sul, em que direção você viajaria para chegar à Austrália, América do Norte, Europa ou Ásia?

Em que fuso horário o Papai Noel mora?

Ele precisa do horário de verão?

Que horas são no Pólo Norte?

Em que direção o Papai Noel viaja para entregar todos os seus presentes?

Em que latitude o horário de verão é eficaz?

Agora, para o Equador;

Este relógio pode ser usado no Equador?

Eles usariam a escala do hemisfério norte ou sul?

Quais são as datas do solstício de inverno e do solstício de verão?

Em que latitude o horário de verão é eficaz?

Os pinguins precisam do horário de verão?

Você acha que sou estranho por pensar nessas questões?

Feliz construção a todos!

philmnut

Etapa 7: Outros links

Este é um link para determinar ou alterar o endereço na mochila I2C:

www.instructables.com/id/1602-2004-LCD-Adapter-Addressing/

PiotrS escreveu um excelente instrutível para endereços de hardware I2C

playground.arduino.cc/Main/I2cScanner

Este link fará a varredura do seu dispositivo I2C e retornará o endereço

Recomendado: