Pages: [1]   Go Down
Author Topic: Como receber bytes de outro micro pela serial do arduino?  (Read 506 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 17
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Portugal
Offline Offline
Edison Member
*
Karma: 27
Posts: 1414
Tomorrow I will know a BIT more than yesterday
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Debian,Mint,Ubuntu
Arduino Mega 2560
Arduino Nano
Arduino Duemilanove
MAC OS Montain Lion
Raspberry PI Model B


Aracaju, SE, Brasil
Offline Offline
Sr. Member
****
Karma: 4
Posts: 323
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
while (mySerial.available())
{
  Serial.println(mySerial.read(), HEX);
}

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

Code:
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
}
« Last Edit: November 06, 2013, 10:50:23 am by LegendBR » Logged

Portugal
Offline Offline
Edison Member
*
Karma: 27
Posts: 1414
Tomorrow I will know a BIT more than yesterday
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Debian,Mint,Ubuntu
Arduino Mega 2560
Arduino Nano
Arduino Duemilanove
MAC OS Montain Lion
Raspberry PI Model B


Aracaju, SE, Brasil
Offline Offline
Sr. Member
****
Karma: 4
Posts: 323
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Offline Offline
Newbie
*
Karma: 0
Posts: 17
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Pages: [1]   Go Up
Jump to: