Imprimindo nome da porta e valor na mesma linha de comando.

Olá pessoal, estou criando um projeto no qual o arduino envia o nome das portas e o valor de cada uma delas para um programa delphi, por exemplo se na porta analógica 0 estiver conectada a um medidor de temperatura o sinal enviado deverá ser mais ou menos esse:

A0 = 34.22 ]

A0 = 34.23 ]

A0 = 34.21 ]

E o programa se encarregará de salvar em um banco de dados, porém eu não sei como fazer o arduino enviar esses dados em uma única linha de comando, pois será enviado o valor de várias portas e o aplicativo deverá categorizar cada valor de cada porta, por exemplo:

A0 = 23.38

A1 = 45

A2 = 543

A3 = 0

13 = 1

O código que estou uzando no momento só possibilita a escrita com facilidade de uma porta, e é assim:

Serial.print("A0 =");

Serial.println(analogRead(A0));

eu preciso de algo de uma só linha, por favor me ajudem.

Exibições: 1533

Responder esta

Respostas a este tópico

Para escrever em apenas uma linha,substitua o "println" por "print"

Esses comandos seguem as mesmas regras do Pascal onde o write() escreve o dado de forma linear enquanto o writeln(),

escreve em uma linha.

então seu código ficaria assim:

Serial.print("A0 =");

Serial.print(analogRead(A0));   //sem o "LN"

No caso voce gostaria de receber uma linha só no formato "A0 = 23.38 A1 = 45 A2 = 543 A3 = 0 13 = 1" ? Nao compreendi bem sua pergunta.

Caso eu tenha compreendido corretamente, pra imprimir no formato

A0 = 23.38
A1 = 45
A2 = 543
A3 = 0
13 = 1

Basta seguir no código o mesmo principio do print seguido do println:

Serial.print("A0 =");
Serial.println(analogRead(A0));
Serial.print("A1 =");
Serial.println(analogRead(A1));
Serial.print("A2 =");
Serial.println(analogRead(A2));
Serial.print("A3 =");
Serial.println(analogRead(A3));
If(digitalRead(13)==HIGH){
d13=1; //nao esquecer de declarar a variavel "int d13"
}else{
d13=0;
}
Serial.print("13 =");
Serial.println(d13);

Na verdade eu estou recebendo em uma linha só, do jeito que eu quero porém quero saber se tem como no código criar uma linha de comando só, pra não colocar 2 linhas, um a pra imprimir a string e outra o valor inteiro da porrta, tentei assim: Serial.print("A0 =",analogRead(A0)); desse tipo que eu preciso, uma linha de comando que junte o texto e a variável e envie de uma vez só, porque o programa em delphi quando não receber um dado íntegro ou duvidoso ele vai requisitar novamente o valor e se no código do arduino pra dar certo vou ter que criar vários if else.

No caso dos pinos digitais (digitalRead(pin)) sempre vão retornar HIGH ou LOW, de alguma forma esses valores lógicos vão precisar ser transformados em inteiros. Sou completamente leigo em delphi, porém minha sugestão é que, se possível, faça no programa em delphi esse tratamento para nao precisar usar if e else no codigo arduino.

Caso não tenha obtido sucesso com: "Serial.print("A0 =",analogRead(A0));" sugiro que tente passar os dois comandos em uma só linha deixando com que o ; faça a funcão de separação na sintaxe do Arduino. Ex:
"Serial.print("A0 =");Serial.println(analogRead(A0));"

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço