Como faço para monitorar uma entrada analógica em percentual ou em °c no mobile usando o arduino, estou conseguindo monitorar com variação entre 0 e 1023, não consigo enviar um valor para tratar no arduino?
I/O analogica digital
Carlos,
Na versão atual não é possível fazer conversões nos valores lidos. Porém tive uma ideia de como podemos contornar tal problema.
Vou fazer alguns testes aqui e logo te retorno com uma solução.
Carlos,
Na biblioteca do Arduino disponibilizado pela Elipse (ElipseMobile.zip), edite o arquivo ElipseMobile.cpp que encontra-se na pasta:
…\Documents\Arduino\libraries\ElipseMobile
E substitua o método void AnalogReadCommand() por:
void AnalogReadCommand()
{
//Receives 1 characters and sends 2 characters
while(Serial.available() <= 0)
{
}
char port = Serial.read(); //-1 if no data is available
uint16_t readResult;
if (port == 5) // Porta Analógica A5
{
readResult = (5.0 * analogRead(port) * 100.0) / 1024; // Conversão para ºC
}
else
{
readResult = analogRead(port);
}
SendAnalogResponse(1, readResult);
}
Caso você deseje fazer uma escrita analógica com conversão é possível fazer a mesma modificação no método: void AnalogWriteCommand()
Qualquer dúvida estou a disposição.
Ok! Vou alterar o código, assim que eu testar te retorno, obrigado!
fiz mais alguns testes , alterei o código como me orientou, mas continuo com o mesmo problema consigo realizar a leitura da porta analógica apenas de 0 a 1023 esse valor me mostra na tela do celular. preciso algo do tipo ov corresponde a 0% e 5v corresponde a 100% , você possui o código completo que realizou testes, me envie o código zip.
Boa tarde Carlos,
O código que eu colei no post anterior é exatamente o mesmo que estou utilizando na minha biblioteca.
Só lembrando que a porta analógica escolhida no Elipse Mobile (Web) deve ser a mesma da linha abaixo:
...
if (port == 5) // Porta Analógica A5
...
Alem disso, para chegar a um valor percentual, onde 0 é 0% e 1023 é 100%, basta apenas fazer as modificações conforme o código abaixo:
...
if (port == 5) // Porta Analógica A5
{
readResult = (analogRead(port) * 100.0) / 1024; // Conversão para %
}
else
{
readResult = analogRead(port);
}
...
E para colocar o sufixo “%” é só preencher o campo Suffix
no controle escolhido (Display ou Setpoint).
Quaisquer dúvidas, estou a disposição no email:
enrique@elipse.com.br
Att,
Enrique Melgarejo