Daniel Rojas fez esse relógio usando uma matriz de LED 8x8, um microcontrolador ATmega328P (Arduino) e um DS1307 (RTC), ele imprimiu os caracteres necessários em uma folha transparente, e em seguida, programou os padrões de LED para exibir o tempo com palavras. No site de Daniel, você pode obter o código e os arquivos do projeto para o montar esse Relógio.

Para mais informações, clique aqui.

Exibições: 2025

Comentar

Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!

Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

Comentário de odmar miranda em 16 dezembro 2014 às 3:16

Vou te dar uma boa notícia.

Consegui enfiar tudo em duas matrizes de 8X8. Assim, do ponto de vista lógico, teremos uma matriz de 16X8. Não encontrei uma disposição apresentável das letras em uma matriz quadrada.

Acho que dá para endereçar as 16 colunas com dois shift-registers, usando 3 pinos apenas. As 8 linhas podem ser endereçadas por outro shift-register, mais 3 pinos, ou diretamente do Arduino, usando 8 pinos.

Sobram pinos para conectar o RTC e os botões de ajuste.

O arquivo que você pediu está quase pronto.

Comentário de Euclides Franco de Rezende em 15 dezembro 2014 às 17:11

Odmar. Se para fazer a representação sejam necessárias 11 linhas x 11 colunas...ou +/- 110 Letras (conforme vc. mostrou) então não são 2 dígitos para representar as linhas e colunas, seriam necessários 2 para linhas (00...10) e 2 para colunas (00...10), o que dá 4. Isso se não forem mais...como se pode com 3 dígitos representar até 999 posições...através de um cálculo eu consigo saber em qual linha e em qual coluna devo acender o LED (este array conteria somente os LEDs, indexados sequencialmente e não por linha e coluna, que devem ser ligados para que a frase fizesse sentido, quanto menor o arquivo melhor).

Entendeu?

Sobre "a nossa vergonha" de sermos Brasileiros, devemos ter não pelo país, mas por quem o governa. Aí eu concordo contigo. Pois enquanto batalhamos para tentar fazer alguma coisa bacana, tem um milhão de burocratas tentando fazer este país "andar pra trás".

As escolas e centros de pesquisas, como "estão nas mãos" "desses ..." acabam sofrendo indiretamente a ação nociva deles em seus cargos (e olha que não estou falando nem dos políticos...chegando aí a coisa piora e muito). Infelizmente.

Comentário de odmar miranda em 15 dezembro 2014 às 16:55

Euclides, com relação ao tutorial no Instructables, trata-se de uma outra proposta, mais convencional. O autor, por assim dizer, acende palavras, de modo que só precisa de 23 saídas digitais, já que as letras são contíguas em cada palavra. Já andei ralando sobre uma proposta dessas e a conclusão é que a nossa língua gasta muitas palavras para dizer as horas. Se não me engano, em torno de 50 para expressar os dois formatos de dizer as horas.

Preciso acrescentar que, sempre que leio tutoriais no Instructables, me sinto humilhado e envergonhado por ser brasileiro. Nós não temos acesso a nada que seja minimamente mais atualizado em termos de tecnologia. O cara montou o relógio dele com impressora 3D, cortadora a laser e encomendou a PCB de um fabricante em pequenas quantidades. Não creio que essas facilidades venham a ser encontradas por aqui em menos de dez anos. Pronto, desabafei!

Quanto ao seu pedido, vou mandar o .TXT logo que estiver pronto. Pode ser que demore uns dias, pois o material para o protótipo do meu projeto acabou de chegar e, como eu já disse, esta é a minha prioridade. É um pedido do meu filho.

Por outro lado, para fazer o arquivo, preciso que você me explique o motivo de usar trincas. Como se trata de uma matriz de duas dimensões, acho que basta a "linha X coluna" de cada letra que forma a frase, certo?

Comentário de Euclides Franco de Rezende em 14 dezembro 2014 às 8:58

Odmar. Tem como complementar o seu programa para ele gerar todos os horários possíveis (de 5 em 5 minutos) e gerar um .TXT com cada horário em uma linha, contendo: numérico (NN:nn), "Descrição do horário, entre aspas duplas", varrendo-se a tabela de letras achar o índice de cada letra que deva ser acionada e colocando-se ao final da linha como um array (tipo: {aaa,bbc,ccc,ddd...} onde cada trinca seja o número da posição do LED que deva ficar ligada?

Este array, eu poderia colocar em uma RAM que serviria para acionar os LEDs da montagem de acordo com o horário co-relacionado.

Obrigado.

Euclides.

Comentário de Euclides Franco de Rezende em 14 dezembro 2014 às 8:50
Comentário de odmar miranda em 13 dezembro 2014 às 21:49

Ok.

Vou acompanhando e tentando ajudar como puder.

Comentário de Euclides Franco de Rezende em 13 dezembro 2014 às 21:29

Odmar. Vou achar os datasheets dos mostradores e a medida que planejar como fazer vou colocando aqui. Ok?

Comentário de odmar miranda em 13 dezembro 2014 às 19:59

As horas devem ser ditas segundo o formato "horas e minutos" até os 25 minutos. Quando os minutos forem 30, a fórmula deve ser "horas e meia". Por isso tem a palavra "meia" no final da lista.

Quando os minutos excederem 30, a fórmula usada normalmente em português é "minutos para horas". Por isso existem palavras como "quinze" e "vinte" na primeira parte da lista.

No caso da hora ser igual a 12, usa-se "meio dia" ou "meia noite", conforme o caso. Por isso essas palavras aparecem no início e no final da lista, uma vez que se pode dizer "meio dia e meia" ou "quinze para meia noite", por exemplo.

Veja que não há mesmo previsão para dizer, por exemplo, "onze trinta e cinco", pois a palavra "trinta", assim como "quarenta" e "cincoenta" ou "cinquenta", não faz parte da lista, embora talvez seja possível construí-la com as letras disponíveis.

Veja também, no programa, que a constante "frase" contém a lista de todas as palavras que são mescladas pelo programa, na ordem necessária para dizer as horas segundo as convenções apresentadas até agora, ou seja:

"horas e minutos", se minutos < 30

"minutos para horas", se minutos > 30

"horas e meia", se minutos = 30, 31, 32, 33 ou 34

"meio dia" ou "meia noite", se horas = 12 (conforme o caso)

Não vejo necessidade de duas formas para dizer o mesmo horário, como você exemplificou.

Essas foram as regras que eu segui quando pensei no relógio mostrando as horas em português e montei o programa. Acho que elas simplificam as coisas ao restringirem a apresentação das horas a um determinado esquema mais rígido que o utilizado na língua falada no dia-dia.

No momento, estou envolvido com um outro projeto e não penso em atacar o circuito ou o programa do relógio por enquanto. Porém, com certeza, este relógio está na minha alça de mira e, mais cedo ou mais tarde, vai ser montado.

Quero aproveitar para agradecer, e muito, pela oportunidade de estar falando com você sobre este assunto. Espero que nossa conversa continue, pelo menos, até que um de nós tenha montado o famigerado relógio. Vamos juntar as forças e ver no que dá.

Comentário de Euclides Franco de Rezende em 13 dezembro 2014 às 13:52

Ainda está estranho...

"Vinte cinco para meia noite" ou "Onze trinta cinco", não dá...e é o mesmo horário...

Comentário de odmar miranda em 13 dezembro 2014 às 10:44

Euclides, eu só peguei seu algoritmo e fiz um código Python que o executasse. De certa forma, usei a massa cinzenta também. O segredo é formar as frases que serão exibidas e ordenar as palavras de modo correto. Eis o código:

#!/usr/bin/python
# -*- coding: utf_8 -*-

# jp2.py
#
# Mescla palavras.

__author__ = 'Odmar Miranda'
__date__ = '20141212'
__long_description__ = '''\n
Mescla palavras de modo que elas possam ser exibidas em uma matriz de
letras, da forma mais compacta possível.
\n'''
__license__ = 'GNU GPLv3 http://www.gnu.org/licenses'
__copyright__ = 'Copyright © 2014 Odmar Miranda'

# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#

frase = 'MEIO*DIA MEIA*NOITE UMA DUAS TRES QUATRO CINCO SEIS SETE OITO NOVE DEZ ONZE E QUINZE VINTE PARA UMA DUAS TRES QUATRO CINCO SEIS SETE OITO NOVE DEZ ONZE MEIO*DIA MEIA*NOITE'
mescladas = ''

palavras = frase.split(' ')

while palavras:
    if len(palavras) == 1:
        p1 = ''
        p2 = palavras.pop(0)
    else:
        p1 = palavras.pop(0)
        p2 = palavras.pop(0)

    while p1:
        letra = p1[0]
        indice = p2.find(letra)
        if indice == -1:
            mescladas += letra
            p1 = p1[1:]
            continue
        elif indice == 0:
            mescladas += letra
            p2 = p2[1:]
            p1 = p1[1:]
            continue
        else:
            mescladas += p2[:indice+1]
            p2 = p2[indice+1:]
            p1 = p1[1:]

    if len(p2) > 0:
        mescladas += p2

print 'Frase inicial : ', frase
print 'Frase mesclada: ', mescladas

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço