Передача массива данных между Arduino

Нет ответов
frozzzen717
Offline
Зарегистрирован: 09.07.2017

Всем доброго времени суток!

Для передачи между Arduino Uno и Arduino Mega использую библиотеку Wire. Передать мне нужно 2 значения типа Integer.

На Arduino Mega объявляю Wire вот так 

Wire.begin();

На Arduino Uno так: 

Wire.begin(8);
Wire.onRequest(requestEvent);

void requestEvent() {
    byte myArray[4];
    MyArray[0] = (intToSend1 >> 8) & 0xFF;
    MyArray[1] = intToSend1 & 0xFF;
    MyArray[2] = (intToSend2 >> 8) & 0xFF;
    MyArray[3] = intToSend2 & 0xFF;
}

Для запроса данных с Arduino Mega вызываю requestFrom и сразу же читаю данные, которые пришли:

Wire.requestFrom(8,4);
byte a, b;
a = Wire.read();
b = Wire.read();
receiveInt1 = a;
receiveInt1 = ( receiveFloat1  << 8 ) | b;

a = Wire.read();
b = Wire.read();
receiveInt2 = a;
receiveInt2 = ( receiveFloat1  << 8 ) | b;

Данные приходят нормально, правда иногда путаются местами переменные, вместе  receiveInt1 я получаю  receiveInt2 и наоборот, т.е. какой-то рассинхрон.

Хочу уточнить у знатоков, правильный ли это способ передачи двух чисел между Arudino ? И что вы можете посоветовать поадекватней ? :)