Boa noite,

Estou com uma pequena dificuldade no seguinte, desejo fornecer informações para um Arduíno MESTRE, ao passo, que estas informações posteriormente sejam armazenadas em um SD card que está instalado em um Arduino ESCRAVO.

Alguém que já tenha tido experiência similar em comunicação serial poderia me ajudar.

Obs:

Estou utilizando dois megas e uma SD Shield 3.0 , a comunicação serial está sendo realizada através de TX1 e RX1.

Exibições: 152

Responder esta

Respostas a este tópico

Olá. 

  Tente fazer uma parte e diga mais detalhadamente onde parou. Uma duvida pontual, técnica.

  A questão do Mestre e Escravo, no meu entendimento é uma "construção social". Se o TX de um está no RX do outro eles vão se comunicar. Digo: O que vc transmitir o outro recebe (salvo erro de transmissão). Seria uma comunicação ponto a ponto.

  De qualquer forma vc vai precisar de algo como:

http://labdegaragem.com/forum/topics/comunica-o-entre-2-arduinos-vi...

 (não é o melhor exemplo de post, mas já é um começo).

  E do lado que recebe vc vai precisar acumular. 

Ref:

http://www.ufrgs.br/e-psico/subjetivacao/tempo/juventude-contrucao-...

MESTRE

#define t 500
#define pino 7
#define n 4

int matriz[n][n]; // Matriz a ser enviada

void setup() {


      Serial.begin (9600);
      Serial1.begin (9600);
      pinMode(pino, INPUT_PULLUP);

}

void loop() {

     // CARREGA MATRIZ DIAGONAL

      for(int i=0; i<n; i++){
          for(int j=0; j<n; i++){
              if(i==j){
                 matriz[i][j]=1;
              }
              else{
                 matriz[i][j]=0;
             }
       }
  }

 // ENVIA MATRIZ DIAGONAL


  for(int i=0; i<n; i++){
      for(int j=0; j<n; j++){
          Serial1.write(matriz[i][j]);
          delay(t);
      }
  }

  while(digitalRead(pino)==0); // Mantém o programa parado

}

ESCRAVO

#define t 500
#define n 4

int matriz[n][n];

void setup(){
   Serial.begin (9600);
   Serial1.begin (9600);
}

void loop(){

  if(Serial1.available()>0){
        // Recebe a matriz
    for(int i=0; i<n; i++){
        for(int j=0; j<n; i++){
            matriz[i][j]=Serial1.read();
            delay(t);
        }
    }
 }
 else{

   for(int i=0; i<n; i++){
   for(int j=0; j<n; i++){
   Serial.print(matriz[i][j]);
   Serial.print("\t");
 }
 Serial.println();
}

}

}

Mas quando verifico no serial a saída não é

1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1

como esperado.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço