Dzień dobry,
dodałem znak 'p' jako początek serii danych i przy odbiorze użyłem funkcji serial.find i odczyt serial.readBytes. Działa 😃, resetowałem Arduino master, potem slave, a i tak synchronizuje dane i trafiają w odpowiednie miejsce tabeli. Nie wiem czy to poprawnie programistycznie ale działa.
#include <SoftwareSerial.h>
SoftwareSerial BTmaster (10,11);
int tabela[6]={0,0,0,0,0,0};
char poczatek = 'p';
int osXpin=A1;
int osXpoz=0;
int osXpozmap;
void setup()
{
Serial.begin(9600);
BTmaster.begin(9600);
pinMode(osXpin, INPUT);
}
void loop()
{
osXpoz=analogRead(osXpin);
osXpozmap=map(osXpoz,0,1023,0,255);
tabela[2]=osXpozmap;
tabela[5]=osXpozmap;
BTmaster.write(poczatek);
for(int i=0;i<=5;i++)
{
BTmaster.write(tabela[i]);
Serial.print(i);
Serial.print("\t");
Serial.print(tabela[i]);
Serial.print("\n");
}
}
#include <SoftwareSerial.h>
SoftwareSerial BTslave (10,11);
byte tabela[6];
int i;
int x;
byte smiec=0;
void setup()
{
Serial.begin(9600);
BTslave.begin(9600);
}
void loop()
{
BTslave.begin(9600);
if (BTslave.available())
{
if(BTslave.find('p'))
{
//smiec=BTslave.read();
x=BTslave.readBytes(tabela,6);
}
}
else
{
for(i=0;i<=5;i++)
{
tabela[i]=0;
}
}
for(i=0;i<=5;i++)
{
Serial.print(i);
Serial.print("\t");
Serial.print(tabela[i]);
Serial.print("\n");
}
}
Pozdrawiam, Kamil