Como enviar vários valores, de uma só vez, pela serial?

Pessoal,

Tenho um Arduino que faz a leitura de alguns sensores e preciso que depois da leitura ele envie pela serial, de uma só vez, todos os valores obtidos nas leituras, para que um aplicativo em PHP possa disponibilizar os valores na web. Alguem sabe como devo proceder?

No código do Arduino, pensei em criar um objeto string, e cada função de ler sensor eu concateno a string com o valor lido ou uso return para a função principal que tratá a string, mas não estou conseguindo fazer nehuma delas. :confused:

Espero que possam ajudar,
abraço.

Objecto String e um microcontrolador de 8 bits não é uma grande combinacão... é muito bom para aprender C++, mas pouco mais.

Então o ideal, se souberes o número máximo de caracteres que um valor vai ter é optar por uma solucão de vectores e itoa() e send/print.

int val1 = 0xCE;
int val2 = 0xAC;
char str[6]; //65537 + terminador.




loop() {

itoa(val1, str, 16); 
Serial.print(str); 
Serial.print(';');//separador de strings
itoa(val2, str, 16); 
Serial.print(str); 
Serial.print(';');//separador de strings

[...]
//and so on and so on... 
}

Olá bubulindo, obrigado por me responder.

Então eu crio uma string (array de caracteres). Ok, mas como posso alterar seu conteúdo a cada leitura feita?

Pelo que entendi do código que informou, ele envia (Serial.print) várias vezes a string, e eu preciso conseguir uma só string com todos os valores obtidos.

Abraço.

Se ajudar, segue meu código atual:

#define SENSOR1 0
#define SENSOR2 1
#define SENSOR3 2

void ler_sensor1() {...}
void ler_sensor2() {...}
void ler_sensor3(){...}

void setup() 
{
   Serial.begin(9600);
}

void loop() 
{
  if(Serial.available() > 0)
  {
    if(Serial.read() == '1')
    {
      // ler sensores
      ler_sensor1();
      ler_sensor2();
      ler_sensor3();
    }
  } 
}

Como pode ver, ainda não tratei o retorno que o Arduino dá após fazer as leituras dos sensores.

Abraço.

A cada leitura feita escreves por cima do valor da leitura anterior. Não há problema nisso.

Obrigado, estou fazendo conforme informou.

abraço.