23 / 16 / 7
Регистрация: 17.10.2012
Сообщений: 74
1

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

10.07.2017, 23:01. Показов 3350. Ответов 2
Метки нет (Все метки)

Всем доброго времени суток!
Для передачи между Arduino Uno и Arduino Mega использую библиотеку Wire. Передать мне нужно 2 значения типа Integer.
На Arduino Mega объявляю Wire вот так
C++
1
Wire.begin();
На Arduino Uno так:
C++
1
2
3
4
5
6
7
8
9
10
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 и сразу же читаю данные, которые пришли:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
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 = ( receiveFloat2  << 8 ) | b;
Данные приходят нормально, правда иногда путаются местами переменные, вместе receiveInt1 я получаю receiveInt2 и наоборот, т.е. какой-то рассинхрон.
Хочу уточнить у знатоков, правильный ли это способ передачи двух чисел между Arudino ? И что вы можете посоветовать поадекватней ? smile

Добавлено через 11 минут
P.S. намудрил с названиями переменных. Вместо receiveFloat1 и receiveFloat2 - receiveInt1 и receiveInt2 соответственно.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.07.2017, 23:01
Ответы с готовыми решениями:

Arduino SIM900 передача данных
Здравствуйте. Есть Mega 2560, SIM900, сервер, принимающий get-запросы, но до него еще далеко....

Arduino и processing передача данных
Пытаюсь считать данные с ардуино в процесинг, ни как не могу понять что я делаю не так. Пока...

Передача данных с Arduino по запросу на WEB-сервер
Задача следующая. Есть веб-сервер, на котором работает веб-приложение, при работе с ним...

Arduino обмен данные между Arduino
Доброго времени суток, писал код обмен данных между двумя ардуинкой, отправляю из одной ардуинку...

2
Просто Лис
Эксперт Python
4406 / 2803 / 929
Регистрация: 17.05.2012
Сообщений: 8,190
Записей в блоге: 9
16.07.2017, 15:49 2
Я использовал символ-разделитель между данными:
C++
1
2
3
byte arr[5];
arr[0] = ' ';//<--
arr[1] = //...
На принимающей стороне читаем по одному байту, если принят не символ-разделитель, то отбрасываем данные и читаем дальше. Если он, то читаем "пакет данных", он фиксированной длины будет.
C++
1
2
3
while(Wire.read() != ' ');
byte a = Wire.read();
//...
0
23 / 16 / 7
Регистрация: 17.10.2012
Сообщений: 74
19.07.2017, 21:06  [ТС] 3
Спасибо за ответ!
Попробую как будет время
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.07.2017, 21:06

Передача ссылки в конструктор (передача данных между формами)
Из темы &quot;Ответы на 7 самых частых вопроса по WinForms&quot; Реализовал метод № 2.3 без проблем, а вот...

Передача данных между базами данных в пределах одного экземлпяра
Доброго времени суток! ПОДСКАЖИТЕ,пожалуйста, с помощью чего передавать данные из одной БД в...

Передача данных между формами
Простите меня за мою тупость, но в &quot;7 советов&quot; я мало что понял, а как следствие у меня ничего не...

Передача данных между формами
В общем у меня такая проблема: у меня есть две формы. На второй форме стоит компонент RadioButton,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.