Pages: [1]   Go Down
Author Topic: Como enviar vários valores, de uma só vez, pela serial?  (Read 1188 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 19
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3266
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
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...
}
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

0
Offline Offline
Newbie
*
Karma: 0
Posts: 19
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

0
Offline Offline
Newbie
*
Karma: 0
Posts: 19
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Se ajudar, segue meu código atual:

Code:
#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.
Logged

'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3266
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

0
Offline Offline
Newbie
*
Karma: 0
Posts: 19
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Obrigado, estou fazendo conforme informou.

abraço.
Logged

Pages: [1]   Go Up
Jump to: