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