Передача массива данных между Arduino
- Войдите на сайт для отправки комментариев
Вс, 09/07/2017 - 17:38
Всем доброго времени суток!
Для передачи между 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 ? И что вы можете посоветовать поадекватней ? :)