Índice:

Relógio de aposentadoria / Contagem Crescente / Relógio Dn: 4 etapas (com imagens)
Relógio de aposentadoria / Contagem Crescente / Relógio Dn: 4 etapas (com imagens)

Vídeo: Relógio de aposentadoria / Contagem Crescente / Relógio Dn: 4 etapas (com imagens)

Vídeo: Relógio de aposentadoria / Contagem Crescente / Relógio Dn: 4 etapas (com imagens)
Vídeo: Book 10 - The Hunchback of Notre Dame Audiobook by Victor Hugo (Chs 1-7) 2024, Novembro
Anonim
Relógio de aposentadoria / Contagem Crescente / Relógio Dn
Relógio de aposentadoria / Contagem Crescente / Relógio Dn

Eu tinha alguns desses visores matriciais de LED 8x8 na gaveta e estava pensando no que fazer com eles. Inspirado por outros instructables, tive a ideia de construir um display de contagem regressiva / crescente para fazer uma contagem regressiva para uma data / hora futura e se o tempo alvo passar, contar a partir dele. Eu fiz este agora meu relógio de aposentadoria sentado na prateleira.

A ideia de colocá-lo em uma garrafa foi mais um acidente enquanto pensava em um invólucro. Outros colocam navios em uma garrafa, por que não um relógio?

Eu também queria fazer o relógio obedecer ao horário de verão e, claro, lembrar as configurações e a hora ao ser desconectado. Estou ligando o relógio via USB, o que o torna reprogramável se você quiser fazer algo diferente ou apenas adicionar recursos ao código. O código é muito simples e também pode precisar de muita otimização. Não me preocupei muito com o consumo de RAM, tenho que admitir. Se eu tiver tempo e motivação, voltarei ao assunto.

Suprimentos

1. Arduino Nano

2. RTC (usei o DS3231 comum que também tem EEPROM)

3. Módulo de matriz de pontos 12x 8x8. (Eu tinha os módulos quádruplos que são mais fáceis de alinhar)

4. LDR para ajustar o brilho da tela

5. Resistor 10 kOhm

6. Capacitor 5x 100 uF suprimindo picos da tela

7. Para aumentar o contraste dos módulos 8x8, usei o "Window Film" escurecido. O display mostra os LEDs como pontos brancos se não estiverem acesos. A película da janela torna-o um aspecto preto brilhante.

Etapa 1: conectar os componentes

Conecte os componentes
Conecte os componentes
Conecte os componentes
Conecte os componentes

Usei três dos monitores quádruplos para montar a tela. Para mostrar uma data com barras e a hora com dois-pontos, precisamos de espaço para 8 caracteres. Usando a fonte 5x7 típica, precisaríamos de seis blocos de 8x8 por linha. Cortei um dos blocos quádruplos pela metade e organizei-os em duas fileiras por seis blocos, conforme mostrado no esquema do breadboard.

Etapa 2: peças impressas em 3D

Peças impressas em 3D
Peças impressas em 3D
Peças impressas em 3D
Peças impressas em 3D
Peças impressas em 3D
Peças impressas em 3D

Para segurar as duas filas da tela e posicioná-las na garrafa, imprimi anéis de distância redondos para a moldura da tela. Eu adicionei os arquivos que usei abaixo. Para poder imprimi-los sem suporte, eles são divididos em partes. A captura de tela mostra os dois anéis colados na moldura da tela. A tampa do gargalo da garrafa abriga os três botões para alternar entre os modos de exibição e definir a hora atual e a hora alvo. A tampa do gargalo eu imprimi em TPU permitindo deslizar o cabo USB na tampa sem cortar os conectores e amarrá-lo com alguns enrolamentos de fio. Esqueci de dizer que usei uma garrafa de vinho de 1,5 L que cortei bem no fundo. Todas as peças a serem impressas cabem em uma impressora de 20x20 cm (8x8 pol.).

Etapa 3: O Código

O código do Arduino está usando algumas bibliotecas comumente usadas.

MD_MAX72xx

SPI

Arame

RTClib

Fuso horário

TimeLib

Existem algumas linhas no arquivo INO que podem precisar de alteração:

Linha 38: #define HARDWARE_TYPE MD_MAX72XX:: FC16_HW <- depende do módulo 8x8 e sua orientação

em vez de FC16_HW, ele poderia:

- MD_MAX72XX:: PAROLA_HW

- MD_MAX72XX:: GENERIC_HW

- MD_MAX72XX:: ICSTATION_HW

- MD_MAX72XX:: FC16_HW

O código está usando as configurações do horário central dos EUA e precisa ser ajustado para outros fusos horários:

Linha 53/54:

TimeChangeRule myDST = {"CDT", Second, Sun, Mar, 2, -300}; // Horário de verão UTC-5TimeChangeRule mySTD = {"CST", First, Sun, Nov, 2, -360}; // Horário padrão UTC -6

Isso é fácil de ajustar. O nome CST / CDT serve apenas como referência. Eu não exibo a abreviatura de três letras, então não importa. Os próximos parâmetros referem-se ao dia do mês em que a troca está acontecendo. O ajuste é feito em minutos, portanto, os locais que usam ajustes de +/- 30 minutos também funcionarão.

O RTC está sendo executado internamente no horário UTC, permitindo que a biblioteca de fuso horário funcione conforme o planejado. Você pode se perguntar por que o código está se referindo ao chip DS1307 mais antigo, ao contrário do chip de clock que usei, mas isso não importa. A biblioteca está funcionando bem com qualquer um dos chips. O DS1307 tem a tendência de se distanciar mais do que o DS3132. o DS3132 é o relógio preferido. Para aqueles que desejam adicionar tempo de Internet, um ESP8266 fará o trabalho com bastante facilidade. Isso pode tornar o RTC obsoleto. Se você estiver fazendo essas alterações, use o Arduino EEPROM para armazenar o tempo alvo, usei o RTC EEPROM para fazer isso.

Etapa 4: Operação e configurações

Operação e configurações
Operação e configurações
Operação e configurações
Operação e configurações
Operação e configurações
Operação e configurações

Existem três botões

1. Menu / configurações

2. Para cima

3. Baixo

O botão de menu permite alternar entre os três tipos de exibição: hora atual, tempo alvo, tempo delta. O tempo Delta mostra o número de dias, HH / MM / SS entre a hora atual e a hora alvo. Ele mostrará t- e contando regressivamente se o alvo estiver no futuro ou t + e contando progressivamente se o alvo estiver no passado.

Para ajustar a hora atual ou alvo, selecione a hora atual ou a exibição de hora alvo. Para alterar a hora, segure o botão menu por 2 segundos e solte, o que o levará ao modo de configuração. O vizinho "/" ou ":" se transformará em "" para indicar qual dígito você está ajustando. Use os botões para cima / para baixo para ajustar hh / mm / ss e mm / dd / aa individuais. Não adicionei uma configuração para alternar entre mm / dd / aa e dd / mm / aa, isso precisa ser alterado no código ou talvez alguém esteja disposto a adicionar esse recurso.

Você notará que se passar os minutos acima de 59 ou abaixo de 00, a exibição das horas também se ajustará. o mesmo é verdadeiro para segundos, horas e dias, alterando o próximo valor mais alto se cruzar abaixo de 0 ou acima do máximo para este dígito. Fiz isso para evitar a programação dos vários limites de meses individuais e se fevereiro está precisando de 29 dias em um ano bissexto. O ajuste da hora é, na verdade, feito em tempo de época, segundos desde 1970-01-01.

Adicionei um vídeo simples para mostrar a contagem. Eu queria fazer isso como uma tela giratória. Se você quiser ajustar a duração da mudança, a linha 69 no INO oferece algumas opções para acelerar ou desacelerar a mudança. 120 ms faria os dígitos rolarem devagar o suficiente, pois seria uma roda girando continuamente.

Espero que você tenha gostado deste instrutível.

Patrick Geschwindner

Recomendado: