Ajuda com atribuição de valores via comunicação serial

Galera, estou tentando setar alguns valores pelo serial monitor, mas não tá dando muito certo, meu objetivo é o seguinte, quero que o usuário seja capaz de entrar com um valor para uma variavel x1 em seguida uma variavel x2 e assim em diante, sendo que essa variavel é um float. Por favor ajudem :smiley: Desde já, Obrigado!

Obs.: minha tentativa tá no sketch

teste_comunicacao.ino (1.07 KB)

vais precisar da função strtof... ou podes fazer uma função de conversão por ti próprio.
Eu diria que o problema está na definição dum protocolo... mas não estou com pachorra para fazer download do ficheiro. Faz copy paste para aqui e alguém te ajudará mais depressa.

Obrigado @bubulindo.

Segue o código, segundo a sua sugestão.

float aneSlop = 0; float aneOffset = 0;
float aux = 0;
float aux2 = 0;
int razao = 3;

void setup()

{
Serial.begin(9600);
Serial2.begin(9600);
}

void loop()
{
if (Serial.available() > 0)
{
aux = Serial.read();
aux2 = aux - 48;
aneSlop = aux2 / razao;
Serial.write("Slope: ");
Serial.println (aneSlop, 4);

Serial.flush();

aux = 0;
aux2 = 0;
}

if (Serial2.available() > 0)
{
aux = Serial2.read();
aux2 = aux - 48;
aneOffset = aux2 / razao;
Serial2.write("Offset: ");
Serial2.println (aneOffset, 4);

Serial2.flush();
}

}

Segue o código, segundo a sua sugestão.

Faltou as tags [code ][ /code], para seu código aparecer assim:

Código

Para o seu problema, pode usar o parseFloat() da classe Serial.

No seu código, você usa o flush():

	...
	Serial.flush();
	...
	Serial2.flush();
	...

Explique qual seu objetivo ao usar este método.

Usando o parseFloat() e tirando o flush(), seu código ficaria assim:

float aneSlop = 0; 
float aneOffset = 0;

void setup()

{
  Serial.begin(9600);
  Serial2.begin(9600);
}

void loop()
{
  if (Serial.available() > 0)
  {
    aneSlop = Serial.parseFloat();
    Serial.write("Slope: ");
    Serial.println (aneSlop, 4);
  }

  if (Serial2.available() > 0)
  {
    aneOffset =  Serial2.parseFloat();
    Serial2.write("Offset: ");
    Serial2.println (aneOffset, 4);
  }

}

Meu Objetivo é que o usuário seja capaz de definir o valor de 10 variáveis distintas cada uma com resolução de 6 casas decimais. Cada variável é um dado de calibração de um sensor e só precisaria ser reconfigurado no caso de troca do sensor, o que ocorre bastante, por isso não posso deixar com o valor atribuído no escopo do programa.

A maior dificuldade até agora tem sido a inconsistência das leituras no serial monitor, por vezes ele exibe valores totalmente aleatórios.

Obrigado pela ajuda até aqui.