# Relógio com arduino sem hardware externo -AJUDA

**URL:** <https://forum.fazedores.com/t/relogio-com-arduino-sem-hardware-externo-ajuda/1589>\
**Category:** Arduino\
**Created:** [Abril 27, 2015, 12:12am UTC](https://forum.fazedores.com/t/relogio-com-arduino-sem-hardware-externo-ajuda/1589 "2015-04-27T00:12:11Z")\
**Posts on this page:** 16\
**Page:** 1

<div class="post-metadata">

**Author:** ![Pedreiro](https://avatars.discourse-cdn.com/v4/letter/p/a9a28c/32.png) [@Pedreiro](https://forum.fazedores.com/u/Pedreiro)\
**Post date:** [Abril 27, 2015, 12:12am UTC](https://forum.fazedores.com/t/relogio-com-arduino-sem-hardware-externo-ajuda/1589/1 "2015-04-27T00:12:11Z")

</div>

Olá, estou fazendo um relógio que exibe os números em binário com arduino sem hardware externo porém estou com um pequeno problema.  
Pare economizar bateria gostaria que ele somente exibisse a hora ao apertar de um botão,porém estou com dificuldade ao realizar isso.

O código para fazer o arduino contar as horas está mais ou menos assim:

delay(60000);  
m++;

if(m\>=60){  
h++;  
m=000;

}

if(h\>11){  
h=000;

}

coisa simples e funcional, mas não estou conseguindo fazer ele exibir as horas no momento que apertar um botão,gostaria de ajuda. Grato 🙂

---

<div class="post-metadata">

**Author:** ![jeffersonaraujo](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.fazedores.com/jeffersonaraujo/32/1733_2.png) [@jeffersonaraujo](https://forum.fazedores.com/u/jeffersonaraujo)\
**Post date:** [Abril 27, 2015, 3:18pm UTC](https://forum.fazedores.com/t/relogio-com-arduino-sem-hardware-externo-ajuda/1589/2 "2015-04-27T15:18:56Z")

</div>

A hora vai ser apresentada de que forma? leds? display? voce quer esse controle de botão via hardware ou software?

---

<div class="post-metadata">

**Author:** ![Pedreiro](https://avatars.discourse-cdn.com/v4/letter/p/a9a28c/32.png) [@Pedreiro](https://forum.fazedores.com/u/Pedreiro)\
**Post date:** [Abril 27, 2015, 11:09pm UTC](https://forum.fazedores.com/t/relogio-com-arduino-sem-hardware-externo-ajuda/1589/3 "2015-04-27T23:09:36Z")

</div>

Olá, as horas vão ser exibidas em binário, e mostradas por um led rgb. Se o led acender verde o valor é 1 ,se acender vermelho o valor é 0. E a cor azul é para diferenciar as horas dos minutos.  
montei um esquema bem rápido e mal feito no paint para demonstrar. ![](https://sea2.discourse-cdn.com/flex016/uploads/fazedores/940/03ee5499ed6bc6dc.png)

A seta mostra o sentido no qual os led vão ver exibidos. Assim o primeiro a piscar vale 1 caso verde ,o segundo vale 2 caso verde e assim por diante, até completar as horas,depois irá piscar azul e depois o mesmo jeito para mostrar os minutos.

Então vejo como necessário o"“display”" ser ativado por software, pois não vejo como seria possível por hardware.

Irá ser um relógio de pulso por isso escolhi desse método, assim gastarei só espaço para um led.  
Obrigado pela ajuda…  
Depois vou postar mais detalhes sobre design e componentes. 🙂

---

<div class="post-metadata">

**Author:** ![jeffersonaraujo](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.fazedores.com/jeffersonaraujo/32/1733_2.png) [@jeffersonaraujo](https://forum.fazedores.com/u/jeffersonaraujo)\
**Post date:** [Abril 28, 2015, 4:06pm UTC](https://forum.fazedores.com/t/relogio-com-arduino-sem-hardware-externo-ajuda/1589/4 "2015-04-28T16:06:20Z")

</div>

Agora entendi o que quer fazer, espero que já possua o algoritmo e/ou programa rodando, senão, é só falar.  
o botão via hardware seria um simples interruptor NA indo do led para o terra, o led iria receber a informação continuamente mas só acenderia no intervalo que o botão fosse mantido pressionado (seria fácil, mas voce não teria controle na apresentação). Já o via software, ideal nesse caso, terá que acionar uma porta input como gatilho, disparando a apresentação, para esta, crie uma rotina para apresentação baseado em loop para apresenta bit a bit.  
Se ja tiver o programa, apresenta ele, senão vamos iniciar a confecção.  
qualquer coisa estamos aqui. 👍

---

<div class="post-metadata">

**Author:** ![Pedreiro](https://avatars.discourse-cdn.com/v4/letter/p/a9a28c/32.png) [@Pedreiro](https://forum.fazedores.com/u/Pedreiro)\
**Post date:** [Abril 29, 2015, 12:01am UTC](https://forum.fazedores.com/t/relogio-com-arduino-sem-hardware-externo-ajuda/1589/5 "2015-04-29T00:01:21Z")

</div>

Olá,muito obrigado pela ajuda.  
Em questão ao software só possuo funcionando a parte de contar o tempo,a parte do botão das maneiras que tentei não funcionaram,então se puder ajudar, grato .  
Muito obrigado.

Aos leitores que gostarem do projeto, durante e depois do seu término irei postar como fazer é disponibilizar os arquivos para os interessados.

---

<div class="post-metadata">

**Author:** ![jeffersonaraujo](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.fazedores.com/jeffersonaraujo/32/1733_2.png) [@jeffersonaraujo](https://forum.fazedores.com/u/jeffersonaraujo)\
**Post date:** [Abril 29, 2015, 4:22pm UTC](https://forum.fazedores.com/t/relogio-com-arduino-sem-hardware-externo-ajuda/1589/6 "2015-04-29T16:22:08Z")

</div>

Então, divulga o código, já que preciso entender como você esta lidando com os dados. não sei se são várias variáveis, se está usando array,…

---

<div class="post-metadata">

**Author:** ![Pedreiro](https://avatars.discourse-cdn.com/v4/letter/p/a9a28c/32.png) [@Pedreiro](https://forum.fazedores.com/u/Pedreiro)\
**Post date:** [Abril 29, 2015, 11:36pm UTC](https://forum.fazedores.com/t/relogio-com-arduino-sem-hardware-externo-ajuda/1589/7 "2015-04-29T23:36:38Z")

</div>

Está muito superficial , os comandos do lcd é pois estava testando com ele. Onde preferir trocar coisas e mudar, sinta-se a vontade.

#include \<LiquidCrystal.h\>

int h=0;  
int m=0;  
int botao=8;  
int estadobotao=0;  
int led=13;  
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup(){  
pinMode(led,OUTPUT);  
Serial.begin(9600);  
pinMode(botao,INPUT);  
lcd.begin(16,2);  
lcd.clear();  
h=5;  
m=38;  
}

void loop(){

lcd.setCursor(0,1);  
lcd.print(h);  
lcd.setCursor(5,1);  
lcd.print(m);  
delay(60000);  
m++;

if(m\>=60){  
h++;  
m=000;  
lcd.clear();  
}

if(h\>11){  
h=000;  
lcd.clear();  
}

}

---

<div class="post-metadata">

**Author:** ![jeffersonaraujo](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.fazedores.com/jeffersonaraujo/32/1733_2.png) [@jeffersonaraujo](https://forum.fazedores.com/u/jeffersonaraujo)\
**Post date:** [Maio 3, 2015, 12:44am UTC](https://forum.fazedores.com/t/relogio-com-arduino-sem-hardware-externo-ajuda/1589/8 "2015-05-03T00:44:17Z")

</div>

Fala ae pedreiro, blz?!?  
segue o procedimento, estou trabalhando no loop():

Void Transmite (byte TXHORA, byte TXMIN){ //função que faz o envio bit a bit das horas e dos minutos  
// etapa de confirmação e aviso de inicio de apresentação, led pisca AZUL  
digitalWrite(LEDPAUSA, HIGH);  
delay(3000);  
digitalWrite(LEDPAUSA, LOW);  
delay(1000);  
// etapa de envio bit a bit das horas  
byte MASCARA;  
for (MASCARA = B10000000; MASCARA \> 0; MASCARA \>\>= 1){  
if(TXHORA & MASCARA){  
digitalWrite(LEDON, HIGH);// se o bit for 1, led acende VERMELHO  
delay (ACESO);  
}  
else {  
digitalWrite(LEDOFF, HIGH); // se o bit for 0, led acende VERDE  
delay (ACESO);  
}  
digitalWrite(LEDON, LOW); // apaga led VERMELHO  
digitalWrite(LEDOFF, LOW); // apaga led VERDE  
delay(ACESO);  
}  
// etapa aviso termino horas e inicio minutos  
delay(1000);  
digitalWrite(LEDPAUSA, HIGH); // acende led AZUL  
delay(1000);  
digitalWrite(LEDPAUSA, LOW); // apaga led AZUL  
delay(1000);  
// etapa envio bit a bit dos minutos  
for (MASCARA = B10000000; MASCARA \> 0; MASCARA \>\>= 1){  
if(TXMIN & MASCARA){  
digitalWrite(LEDON, HIGH); // acende led VERMELHO  
delay(ACESO);  
}  
else{  
digitalWrite(LEDOFF, HIGH); // acende led VERDE  
delay(ACESO);  
}  
digitalWrite(LEDON, LOW); // apaga led VERMELHO  
digitalWrite(LEDOFF, LOW); // apaga led VERDE  
delay(ACESO);  
}  
}

Essa parte ja esta funcionando perfeitamente, vou agora acertar o procedimento principal.

---

<div class="post-metadata">

**Author:** ![Pedreiro](https://avatars.discourse-cdn.com/v4/letter/p/a9a28c/32.png) [@Pedreiro](https://forum.fazedores.com/u/Pedreiro)\
**Post date:** [Maio 3, 2015, 8:54pm UTC](https://forum.fazedores.com/t/relogio-com-arduino-sem-hardware-externo-ajuda/1589/9 "2015-05-03T20:54:34Z")

</div>

E ai ? Valeu pela ajuda aí. Sou meio pempa em programar, estou tentando compreender todo o código que está muito bom, porém eu irei mudar os delays para menos tempo, para ser mais fluido na hora de ver as horas.Mas isso é detalhe.Muito obrigado pela ajuda,vou trabalhar no hardware.  
Posto noticias em breve.  
Espero noticias suas também, huahua.

---

<div class="post-metadata">

**Author:** ![jeffersonaraujo](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.fazedores.com/jeffersonaraujo/32/1733_2.png) [@jeffersonaraujo](https://forum.fazedores.com/u/jeffersonaraujo)\
**Post date:** [Maio 5, 2015, 9:32pm UTC](https://forum.fazedores.com/t/relogio-com-arduino-sem-hardware-externo-ajuda/1589/10 "2015-05-05T21:32:38Z")

</div>

então, ainda falta o loop, como você deve ter percebido, os intervalos estão longos mas só fiz assim pra “ler” as informações, ainda falta muita coisa visto que se fizermos essa rotina rodar ela ira consumir tempo que irá defasar o horário, por conta dos delays que “travam” o relógio (o contador deixa de contar nesse período); se você me passar os valores de delay posso ajustar o código, regular e acertar o delay e terminar tudo.

---

<div class="post-metadata">

**Author:** ![Pedreiro](https://avatars.discourse-cdn.com/v4/letter/p/a9a28c/32.png) [@Pedreiro](https://forum.fazedores.com/u/Pedreiro)\
**Post date:** [Maio 5, 2015, 11:02pm UTC](https://forum.fazedores.com/t/relogio-com-arduino-sem-hardware-externo-ajuda/1589/11 "2015-05-05T23:02:22Z")

</div>

Entendi, acho que de 500 a 600ms é um tempo ótimo para cada led, ficando fluido. A questão do atraso tinha pensado nisso, porem será que daria para depois de cada “visualização” das horas ser adicionado na variável o tempo perdido.  
Em questão ao hardware fiz o primeiro protótipo, vi grandes falhas irei fazer a segunda versão.

---

<div class="post-metadata">

**Author:** ![jeffersonaraujo](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.fazedores.com/jeffersonaraujo/32/1733_2.png) [@jeffersonaraujo](https://forum.fazedores.com/u/jeffersonaraujo)\
**Post date:** [Maio 6, 2015, 1:44pm UTC](https://forum.fazedores.com/t/relogio-com-arduino-sem-hardware-externo-ajuda/1589/12 "2015-05-06T13:44:22Z")

</div>

sim, é nisso que estou pensando, supondo que a soma de todos os delays dê 2 seg, no loop eu acrescento esse mesmo valor. na verdade, posso por um contador ou a função millis() para cronometrar o tempo parado e acrescentá-lo nos “segundos” do loop.  
Algumas questões:  
1º - você vai usar a temporização de aviso de apresentação? se sim, o tempo está bom?  
2º - o tempo que o led azul fica aceso/apagado na mudança de hora para minuto esta bom?

contas:  
“aviso” = 2,8s aceso e 0,2s apagado (3s somados)  
“horas” = 8x 0,6s aceso e 0,1 apagado (5,6s somados)  
“h p/m” = 0,6s aceso e 0,2s apagado (0,8s somados)  
“min” = 8x 0,6s aceso e 0,1 apagado (5,6s somados)  
total soma 15s a serem somados ao incremento de "segundos"  
Te falar que nos meus testes tive dificuldade pra ler os números, mas eu estou enferrujado em bin, rsrsrs…

---

<div class="post-metadata">

**Author:** ![Pedreiro](https://avatars.discourse-cdn.com/v4/letter/p/a9a28c/32.png) [@Pedreiro](https://forum.fazedores.com/u/Pedreiro)\
**Post date:** [Maio 6, 2015, 11:53pm UTC](https://forum.fazedores.com/t/relogio-com-arduino-sem-hardware-externo-ajuda/1589/13 "2015-05-06T23:53:53Z")

</div>

1º qual a temporização de aviso que se refere ? Se for a de piscar azul antes de exibir as horas acho que coisa de 0,3s aceso e 0,2s apagado esta bom.  
2º O tempo do led azul está ótimo.

Uma dúvida, Não entendi o porque das horas possuir 8 bits se só é necessário até o valor 2³ o 4º bit;  
Se for parte do raciocínio do código pode deixar assim, Porém acho desnecessário, só ira gastar tempo.  
De resto está tudo ótimo,muito obrigado pela ajuda. 🙂

---

<div class="post-metadata">

**Author:** ![Pedreiro](https://avatars.discourse-cdn.com/v4/letter/p/a9a28c/32.png) [@Pedreiro](https://forum.fazedores.com/u/Pedreiro)\
**Post date:** [Maio 7, 2015, 12:01am UTC](https://forum.fazedores.com/t/relogio-com-arduino-sem-hardware-externo-ajuda/1589/14 "2015-05-07T00:01:32Z")

</div>

Aí esta a terceira versão do relógio, Porém já identifiquei mais falhas para possíveis melhorias para a versão 4 ,mas de qualquer forma mostro a ideia de design,grato.

![](https://sea2.discourse-cdn.com/flex016/uploads/fazedores/950/3069e30e7633c748.jpg) ![](https://sea2.discourse-cdn.com/flex016/uploads/fazedores/951/042bb91ce746f161.jpg)

---

<div class="post-metadata">

**Author:** ![renato\_toi](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.fazedores.com/renato_toi/32/186_2.png) [@renato\_toi](https://forum.fazedores.com/u/renato_toi)\
**Post date:** [Maio 31, 2015, 5:15pm UTC](https://forum.fazedores.com/t/relogio-com-arduino-sem-hardware-externo-ajuda/1589/15 "2015-05-31T17:15:03Z")

</div>

Da forma como voce está fazendo, seu relógio vai acumular um atraso.  
Para a contagem de tempo em um cronometro eu uso o seguinte:

long SEC\_NXT;  
void loop() {  
static unsigned long ms,ms\_ant;

ms = millis();  
if (ms == ms\_ant) {  
return;  
}  
ms\_ant = ms;

if (ms \>= SEC\_NXT) {  
SEC\_NXT = SEC\_NXT + 1000;  
if (estado == 1) { // contando  
S += 1;  
if (S \>= 60) {  
S = 0; M += 1;  
if (M \>= 99) {M = 0; }  
}  
}  
}

---

<div class="post-metadata">

**Author:** ![jeffersonaraujo](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.fazedores.com/jeffersonaraujo/32/1733_2.png) [@jeffersonaraujo](https://forum.fazedores.com/u/jeffersonaraujo)\
**Post date:** [Setembro 10, 2015, 11:27pm UTC](https://forum.fazedores.com/t/relogio-com-arduino-sem-hardware-externo-ajuda/1589/16 "2015-09-10T23:27:28Z")

</div>

Boa noite, a que pé anda esse projeto?! Precisando de ajuda é só falar…
