Go Down

Topic: comunicazione seriale tra due arduino (Read 2 times) previous topic - next topic

izio90

Buongiorno a tutti è da un po che mi scervello su un piccolo problema di codice e volevo chiedere aiuto per capire dove fose il problema.....


master:
Code: [Select]
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3); // RX, TX
int x[6];
int a=0;
void setup() 
{pinMode(13, OUTPUT);
pinMode(8, INPUT);
pinMode(9, INPUT);
  Serial.begin(9600);
   while (!Serial) {
    ;
  }
  mySerial.begin(9600);
}

void loop()
{
if(digitalRead(8)==HIGH)//invia il dato in seriale
{
   for(a=0;a<6;a++){
      mySerial.write(a);
    ;}}

if(mySerial.available()>=6){ //leggo sempre la seriale
  for(a=0;a<6;a++){
   x[a]=mySerial.read();}}
   
if(digitalRead(9)==HIGH){//
    delay(200);
   
      for(a=0;a<6;a++){
      mySerial.write(x[a]);
      Serial.println(x[a]);
      }
   
}
}


slave:
Code: [Select]

#include <SoftwareSerial.h>

SoftwareSerial mySerial(2, 3); // RX, TX

void setup() 
{
  pinMode(13, OUTPUT);
  pinMode(9, INPUT);
  Serial.begin(9600);
  while (!Serial) {
    ;
  }
  mySerial.begin(9600);

}
int x[6];
int a=0;
void loop()
{
  if(digitalRead(9)==HIGH){
    delay(200);
      for(a=0;a<6;a++){
      mySerial.write(x[a]);
      Serial.println(x[a]);
    }
  }
  if(mySerial.available()>=6){
    for(a=0;a<6;a++){
      x[a]=mySerial.read();
    }
  }
  //}



  }


il problema è che lo slave riceve il dato in modo corretto invece quando lo slave risponde con il codice ricevuto sul master l'ordine di arrivo e memorizzazione sulla variabile non è nell'ordine correto  ricevo
master invia 012345
slave riceve 012345
slave riinvia 012345
master riceve 450123

cosa puo essere come errore??? grazie

mancio

ma i pin 8 e 9 a cosa sono collegati??

izio90

sono collegati a dei microswitch che premo io

mancio

prova a mettere un piccolo ritardo dopo ogni lettura da seriale..basta anche una delay(1) credo..io avevo lo stesso problema ed ho risolto cosi..

izio90

ho provato come mi hai detto ma ricevo sempre dati in ordine ma spostati....

Go Up