collapse

* Links de Robótica

* Posts Recentes

Compras Aliexpress por senso
[Hoje às 14:40]


É possivel construir automaticamente a pcb? - isis proteus por edeweld
[Hoje às 10:23]


Ligar 2 sensores na mesma porta de 5v por SerraCabo
[22 de Maio de 2017, 21:56]


BOMER (2017) por msr
[22 de Maio de 2017, 17:11]


Apagar E2PROM X28C64P-25 por LVirtual
[22 de Maio de 2017, 16:43]


Vídeo sobre construção de um suporte para uma câmara por TigPT
[22 de Maio de 2017, 10:11]


Fazer seceretária por Kristey
[22 de Maio de 2017, 08:54]


Número de bits por jm_araujo
[21 de Maio de 2017, 22:44]


Kit de condensadores que dá jeito ter por edeweld
[21 de Maio de 2017, 18:34]


Medir corrente 0.1A - 5A por beirao
[21 de Maio de 2017, 15:37]

Autor Tópico: duvida programação rtc iniciantes  (Lida 737 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline saaboo

  • Mini Robot
  • *
  • Mensagens: 1
duvida programação rtc iniciantes
« em: 12 de Janeiro de 2015, 20:03 »
Boa noites. Sou iniciante em arduino daí que a minha pergunta possa ser um pouco básica mas aqui vai...........
Estou a implementar um rtc em arduino, que esta a funcionar perfeitamente com um código encontrado pela Internet. No entanto não percebo umas linhas de código. se alguém pude-se dar uma breve explicação ficaria grato.. Gostava de saber como se processa esta conversão de decimal para binário e vice-versa.

O que me faz parecer é que quando as funções são chamadas o objectivo é dividir por nibles (no caso decimal-->binário mas depois não sei como ele faz a conversão em concreto.


 int conversaobinario(int valor)                                                // conversão para binario
  {
    return ( (valor/10*16) + (valor%10) );
  }
 
  int conversaodecimal(int valor)                                                // conversao para decimal
  {
    return ( (valor/16*10) + (valor%16) );
   
  }

Wire.beginTransmission(DS1307_ADDRESS);                                                                       
  Wire.write(zero);
  Wire.endTransmission();
  Wire.requestFrom(DS1307_ADDRESS, 7);                                           
  byte segundos = conversaodecimal(Wire.read());
  byte minutos = conversaodecimal(Wire.read());
  byte horas = conversaodecimal(Wire.read() & 0b111111);
  byte diadasemana = conversaodecimal(Wire.read());
  byte diadomes = conversaodecimal(Wire.read());
  byte mes = conversaodecimal(Wire.read());
  byte ano = conversaodecimal(Wire.read());





 void acertahora()                                                                                         
  {
    byte segundos = 00;
    byte minutos = 57;
    byte horas = 16;
    byte diadasemana = 4;
    byte diadomes = 9;
    byte mes = 1;
    byte ano = 15;
    Wire.beginTransmission(DS1307_ADDRESS);                                     
    Wire.write(zero);
    Wire.write(conversaobinario(segundos));                                     
    Wire.write(conversaobinario(minutos));
    Wire.write(conversaobinario(horas));
    Wire.write(conversaobinario(diadasemana));
    Wire.write(conversaobinario(diadomes));
    Wire.write(conversaobinario(mes));
    Wire.write(conversaobinario(ano));
    Wire.write(zero);                                                           
    Wire.endTransmission();                                                   
  }


Cumprimentos

Online jm_araujo

  • Mini Robot
  • *
  • Mensagens: 1.960
  • NERD!
Re: duvida programação rtc iniciantes
« Responder #1 em: 12 de Janeiro de 2015, 21:03 »
Essa conversão não é para binário, mas para BCD. Cada nibble de um byte em representa um digito decimal.

Tens muita informação sobre BCD na net.