Go Down

Topic: Como receber bytes de outro micro pela serial do arduino? (Read 706 times) previous topic - next topic

Vinicius1000

  Bom pessoal como eu nunca me comuniquei com o arduino com outro equipamento estou tendo dificuldades mais vamos lá espero a ajuda dos amigos com certeza é um problema simples.

   Um exemplo , este cod é para enviar o comando para o outro equipamento (micro) está apenas o cod de comando , ai o mesmo irá me responder com a mesma quantidade de bytes o que eu quero é receber esses bytes e escrever na serial , conseguindo isto vou montando o cod e fazendo comparações se a resposta do outro micro foi true ou false e mostra  em um display por exemplo e etc. 
Code: [Select]

byte enroll []= {0x40, 0x5, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x47, 0xA};    //comando

void escreve (byte testo[]) {    //função para escrever os comandos
  for (int x = 0; x <13; x++)
  {
    mySerial.write(testo[x]);
  }
  delay(30);
}
escreve(enroll);


Está parte está funcionando , só está faltando receber ok , fico aguardando algum amigo que possa me ajudar , agradeço desde já , valeu.

HugoPT

Quote
byte enroll []= {0x40, 0x5, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x47, 0xA};    //comando

void escreve (byte testo[]) {    //função para escrever os comandos
 for (int x = 0; x <13; x++)//
 {
   mySerial.write(testo
  • );
     }
     delay(30);
    }
    escreve(enroll);

O teu array tem 13 elementos mas isto ira correr 14 vezes.A posiçao 0 tambem conta!
Pelo que entendi queres enviar essa trama e o receptor verifica-la e devolver um ok é isso?
Debian,Mint,Ubuntu
Arduino Mega 2560
Arduino Nano
Arduino Duemilanove
MAC OS Montain Lion
Raspberry PI Model B

LegendBR

#2
Nov 06, 2013, 04:45 pm Last Edit: Nov 06, 2013, 04:50 pm by LegendBR Reason: 1

O teu array tem 13 elementos mas isto ira correr 14 vezes.A posiçao 0 tambem conta!


O código dele está certo, Hugo, o for vai até x = 12 (x < 13), portanto varre todos os elementos e não invade memória.

Você está certo de que o comando está sendo enviado para o outro micro e ele está recebendo? Para verificar se ele está recebendo resposta, use este código após o delay (que aliás, talvez precise ser diminuído, para você não acabar perdendo dados):

Code: [Select]

while (mySerial.available())
{
 Serial.println(mySerial.read(), HEX);
}


Se tiver recebendo a resposta, esta é uma forma de armazená-la:

Code: [Select]

byte answer[13];
uint_8 n = 0;

while (mySerial.available() && (n < 13)) // ler enquanto tiver dados em mySerial, até o limite de 13 dados
{
 answer[n] = mySerial.read();
 n++;
}

if (n == 13)
{
 // trata a resposta
}

HugoPT

Quote
O código dele está certo, Hugo, o for vai até x = 12 (x < 13), portanto varre todos os elementos e não invade memória.

Sim esta correcto.Com a pressa pareceu me <=  :smiley-red:
Debian,Mint,Ubuntu
Arduino Mega 2560
Arduino Nano
Arduino Duemilanove
MAC OS Montain Lion
Raspberry PI Model B

LegendBR


Quote
O código dele está certo, Hugo, o for vai até x = 12 (x < 13), portanto varre todos os elementos e não invade memória.

Sim esta correcto.Com a pressa pareceu me <=  :smiley-red:



hehehe, é o que mais acontece com programação (ver coisa que não existe e vice-versa xD).

Vinicius1000

     Obg amigos , eu vou testar e dou o retorno ok.

Go Up