Хорошо. Давайте не будем изобретать велосипед и попробуем решить задачу с помощью библиотеки
Arduino-EasyTransfer. Библиотека предоставляет функции для организации обмена информацией между двумя ардуинами. Всю работу, связанную с формированием пакетов, отправкой и получением она берет на себя.
Для начала надо описать структуру данных, для передачи между МК:
- Code: [Выделить всё] [Expand/Collapse]
- struct SEND_DATA_STRUCTURE{
//Укажите здесь все переменные, которые вы хотите передавать
//Это описание должно совпадать с описанием на второй ардуине
int JoyX;
int JoyY;
};
- GeSHi © Codebox Plus
Затем следует объявить переменную с типом SEND_DATA_STRUCTURE:
- Code: [Выделить всё] [Expand/Collapse]
- SEND_DATA_STRUCTURE mydata;
- GeSHi © Codebox Plus
Такая же структура данных будет использоваться на приемнике для хранения полученных данных:
- Code: [Выделить всё] [Expand/Collapse]
- struct RECEIVE_DATA_STRUCTURE{
int JoyX;
int JoyY;
};
RECEIVE_DATA_STRUCTURE mydata;
- GeSHi © Codebox Plus
Далее рассмотрим код для платы-передачтика и платы-приемника:
На передатчике:- Code: [Выделить всё] [Expand/Collapse]
- #include <EasyTransfer.h>
EasyTransfer ET;
struct SEND_DATA_STRUCTURE{
int JoyX;
int JoyY;
};
SEND_DATA_STRUCTURE mydata;
void setup(){
Serial.begin(9600);
ET.begin(details(mydata), &Serial);
}
void loop(){
mydata.JoyX = analogRead(A0);
mydata.JoyY = analogRead(A1);
//Отправляем данные
ET.sendData();
delay(50);
} - GeSHi © Codebox Plus
На приемнике:- Code: [Выделить всё] [Expand/Collapse]
- #include <EasyTransfer.h>
EasyTransfer ET;
struct RECEIVE_DATA_STRUCTURE{
int JoyX;
int JoyY;
};
RECEIVE_DATA_STRUCTURE mydata;
int motor1PWM;
int motor2PWM;
void setup(){
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
Serial.begin(9600);
ET.begin(details(mydata), &Serial);
}
void loop(){
//Проверяем не поступили ли данные.
if(ET.receiveData()){
//Данные получены. Управляем моторами
motor1PWM = map(mydata.JoyX, 0, 1023, 0, 255);
motor2PWM = map(mydata.JoyY, 0, 1023, 0, 255);
analogWrite(5, motor1PWM);
analogWrite(6, motor2PWM);
}
//Задержка должна быть меньше чем в программе передатчика иначе данные могут быть потеряны.
delay(10);
} - GeSHi © Codebox Plus