Como obter a hora e a data atuais no Arduino sem fonte externa?

Estou trabalhando em um projeto usando o Arduino Uno e o escudo do cartão SD. Gostaria de armazenar uma variável em um horário específico todos os dias no cartão SD . Como posso obter a hora atual no Arduino? Qualquer ajuda seria apreciada.

NOTA: o Arduino NÃO está conectado ao PC.

Resposta

Um maneira precisa é usar a função millis(). Ele retornará o valor em milissegundos desde o início do Arduino. Se você iniciar o Arduino em um horário específico, poderá calcular a data e a hora exatas.


Por que não um módulo externo ?? Um RTC como o DS3231 em apenas 5 $ e inclui um sensor de temperatura para você!

Comentários

Resposta

sem fonte externa

Você não pode “t. O Arduino Uno não tem relógio em tempo real. Um relógio em tempo real é apenas algo como $ 1 do eBay. Por exemplo, o DS1307 ou DS3231. Encontrei 5 x placas pré-montadas com o chip do relógio, incluindo porta-bateria, cristal, chip e placa de circuito por $ US 4,20 no eBay. Pilhas não fornecidas.

Prenda isso aos pinos I2C (A4 e A5), defina a hora uma vez usando um esboço adequado e então você está pronto para começar.


Se você apenas quiser fazer algo a cada 24 horas (não necessariamente às 9h36), então você pode simplesmente usar millis para descobrir quando o número apropriado de milissegundos passou. O resultado de millis ocorrerá a cada 49 dias aproximadamente, mas você não precisa se preocupar com isso .

Observe que isso s não permitirá que você registre a data e a hora, mas você pode registrar algo (por exemplo, temperatura) todos os dias, você só precisa saber quando começou a registrar.

Resposta

Uma possibilidade a ser considerada é use um temporizador de plug-in de 24 horas que controla a energia do Uno.

Ou seja, algo parecido com isto:

insira a descrição da imagem aqui

O circuito seria: tomada AC -> Temporizador -> carregador USB -> Arduino

Você poderia definir o temporizador para desligar o Uno, digamos, às 23h30 e ligá-lo novamente meia-noite.

Nessa configuração, millis() será o tempo desde a última inicialização do Uno, que normalmente será o tempo desde a meia-noite anterior.

Ao depurar, você pode definir o horário do Uno-start diferente da meia-noite.

As advertências são:

  • Sua situação permite 30 minutos diários ( ou quaisquer que sejam os incrementos do cronômetro) tempo de inatividade
  • Pode tolerar mudanças no cronômetro devido a falhas de energia

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *