Go Down

Topic: Como enviar vários valores, de uma só vez, pela serial? (Read 1 time) previous topic - next topic

hax0r3x

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. :/

Espero que possam ajudar,
abraço.

bubulindo

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.

Code: [Select]

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...
}
This... is a hobby.

hax0r3x

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.

hax0r3x

Se ajudar, segue meu código atual:

Code: [Select]

#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.

bubulindo

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

hax0r3x

Obrigado, estou fazendo conforme informou.

abraço.

Go Up