Como receber bytes de outro micro pela serial do arduino?

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.

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.

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);

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?

HugoPT:
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):

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

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

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
}

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 <= :blush:

HugoPT:

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 <= :blush:

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

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