Bom dia pessoal, sou novo aqui no forum, mas tenho pesquisado algumas coisas por qui e conseguido resolver. Bom..mas estou com um problema e não consigo resolver, estou tentando enviar numeros double para o arduino usando socket em java mas nao estou conseguindo, a unica coisa que eu consigo e enviar um character .A conexao do socket esta ok. O Codigo que estou testando e esse:
void loop()
{
EthernetClient client = server.available();
if (client)
{
while (client.connected())
{
if(client.available())
{
double var = client.read();
client.print(var);
Serial.println(var);
client.stop();
delay(10);
}
}
}
delay(1);
client.stop();
}
O valor que esta sendo impresso e outro completamente diferente. Se alguem poder me ajudar eu agradeço. Obrigado.
Tags:
As respostas para este tópico estão encerradas.
Provavelmente o problema é pela diferença com que o double é representado nos dois ambientes. Explico: na realidade, em um ambiente digital, não existem números double "por definição", quer dizer, o processador lida sempre com números inteiros. Para representação de números ponto flutuante, recorre-se a artifícios, normalmente específicos para cada tipo de processador ou linguagem, daí a dificuldade de vc enviar esse tipo de dado de um ambiente pro outro.
Sugestões:
- Se o número for "pequeno" (até o máximo inteiro dos dos ambientes) e vc puder fixar o número de casas decimais, converta para inteiro (por ex: multiplicando por 100 e pegando a parte inteira, caso queira duas casas decimais) e mande, depois converta para real de novo no Arduino, dividindo por 100.
- Se assim não der, converta para string e mande, depois converta para float no Arduino.
Caro Mauro obrigado pelo ajuda consegui resolver valew.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por