Boa noite pessoal,

Eu gostaria de saber, se consigo receber 9 bytes de uma só vez na serial. Eu já consigo ler os valores, mas um de cada:

Por exemplo:

5A

A5

60

0

01

11

11

Teria como recebe-los assim: 5AA5600011111?

Obrigado desde já!!!

Exibições: 635

Responder esta

Respostas a este tópico

declarando um char com x posições e depois ler posição por posição

tipo

void loop ()
{
char rx [13] ;  tem 13 posições
rx  = Serial.read();

if(rx[0] == '5'  && rx[1] == 'A' ){

faça o que quer

}

ai vc comparo o 5A de acordo com o que esta no seu post ai , dai vc faz o mesmo para os outros , bem é uma sujestão , faço isso nos microcontroladores PIC , não sei se irá ser aplicado ao arduino mas poderia tentar . 

Olá Ilgner, obrigado pela sugestão.

Eu coloquei a estrutura como você fez, mas recebo um erro:

char buffer[9];

buffer = Serial.read();

O IDE diz que "incompatible types in assignment of 'int' to 'char[9]'.

Tem alguma idéia sobre essa inconpatibilidade?

Encontrei o erro, eu tinha que declarar sempre buffer [9], em todos os lugares que precisava inserir este char.

Mas na leitura, ainda nao obtive sucesso

faz um switch case com o buffer

Cara, eu sou um pouco fraco (demais) em programação ainda. A estrutura seria mais ou menos isto:

switch  (buffer{

case ('5AA5600011111'):

       digitalWrite(led, HIGH);

break;

}

sim

Cara, pelo método via switch, nao funcionou.

Li aqui no LdG mesmo, que o Serial.read() tem este equeno 'problema'. Ele recebe um byte de vez, e no meu caso, não é interessante.

A solução pra isto seria o uso de Array (String). Mas não entendo e não obtive sucesso no teste que fiz, como o Arduino se comporta recebendo 9 bytes e colocando no Array.

Meu problema é receber os Bytes acima, de uma tela Touch, e a partir do código recebido, realizar alguma função no Arduino (e vice-versa).

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço