Огромное спасибо за ответ. Также прошу Вашей помощи в проверке моего скетча (заранее спасибо за проверку), правильно ли я все сделал и указал в нужном порядке библиотеки. Сразу оговорюсь, что я в программировании ардуино очень слаб.
Вот мой скетч
//////////////////////////////////////////////
// RemoteXY include library //
//////////////////////////////////////////////
// определение режима соединения и подключение библиотеки RemoteXY
#define REMOTEXY_MODE__ESP8266_HARDSERIAL_POINT
#include <RemoteXY.h>
// настройки соединения
#define REMOTEXY_SERIAL Serial
#define REMOTEXY_SERIAL_SPEED 115200
#define REMOTEXY_WIFI_SSID "RemoteXY"
#define REMOTEXY_WIFI_PASSWORD "12345678"
#define REMOTEXY_SERVER_PORT 6377
// конфигурация интерфейса
#pragma pack(push, 1)
uint8_t RemoteXY_CONF[] =
{ 255,5,0,0,0,33,0,6,0,0,
5,0,5,29,30,30,2,1,0,74,
24,21,21,2,88,0,4,32,52,15,
9,45,2,4,160,30,6,51,8,2 };
// структура определяет все переменные вашего интерфейса управления
struct {
// input variable
int8_t joystick_1_x; // =-100..100 координата x положения джойстика
int8_t joystick_1_y; // =-100..100 координата y положения джойстика
uint8_t button_3; // =1 если кнопка нажата, иначе =0
int8_t slider_x; // =0..100 положение слайдера
int8_t slider_y; // =0..100 положение слайдера
// other variable
uint8_t connect_flag; // =1 if wire connected, else =0
} RemoteXY;
#pragma pack(pop)
/////////////////////////////////////////////
// END RemoteXY include //
/////////////////////////////////////////////
#include <Servo.h>
#define PIN_X_SERVO 2
#define PIN_Y_SERVO 3
Servo x_servo;
Servo y_servo;
unsigned char led_state = 0;
unsigned long led_time=0;
unsigned long prev_time=0;
/* определяем пины управления правым мотором */
#define PIN_MOTOR_RIGHT_UP 7
#define PIN_MOTOR_RIGHT_DN 6
#define PIN_MOTOR_RIGHT_SPEED 10
/* определяем пины управления левым мотором */
#define PIN_MOTOR_LEFT_UP 5
#define PIN_MOTOR_LEFT_DN 4
#define PIN_MOTOR_LEFT_SPEED 9
/* определяем пин управления светодиодом */
#define PIN_MOTOR_SHOOT 8
/* определяем два массива с перечислением пинов для каждого мотора */
unsigned char RightMotor[3] =
{PIN_MOTOR_RIGHT_UP, PIN_MOTOR_RIGHT_DN, PIN_MOTOR_RIGHT_SPEED};
unsigned char LeftMotor[3] =
{PIN_MOTOR_LEFT_UP, PIN_MOTOR_LEFT_DN, PIN_MOTOR_LEFT_SPEED};
/*
управление скоростью мотора
motor - ссылка на массив пинов
v - скорость мотора, может принимать значения от -100 до 100
*/
void Wheel (unsigned char * motor, int v)
{
if (v>100) v=100;
if (v<-100) v=-100;
if (v>0) {
digitalWrite(motor[0], HIGH);
digitalWrite(motor[1], LOW);
analogWrite(motor[2], v*2.55);
}
else if (v<0) {
digitalWrite(motor[0], LOW);
digitalWrite(motor[1], HIGH);
analogWrite(motor[2], (-v)*2.55);
}
else {
digitalWrite(motor[0], LOW);
digitalWrite(motor[1], LOW);
analogWrite(motor[2], 0);
}
}
void setup()
{
RemoteXY_Init ();
// TODO you setup code
x_servo.attach(PIN_X_SERVO);
y_servo.attach(PIN_Y_SERVO);
RemoteXY.slider_x=50;
RemoteXY.slider_y=50;
/* инициализация пинов */
pinMode (PIN_MOTOR_RIGHT_UP, OUTPUT);
pinMode (PIN_MOTOR_RIGHT_DN, OUTPUT);
pinMode (PIN_MOTOR_LEFT_UP, OUTPUT);
pinMode (PIN_MOTOR_LEFT_DN, OUTPUT);
pinMode (PIN_MOTOR_SHOOT, OUTPUT);
/* инициализация модуля RemoteXY */
RemoteXY_Init ();
}
void loop()
{
RemoteXY_Handler ();
// TODO you loop code
// используйте структуру RemoteXY для передачи данных
/* обработчик событий модуля RemoteXY */
RemoteXY_Handler ();
/* управляем пином спускового механизма */
digitalWrite (PIN_MOTOR_SHOOT, (RemoteXY.button_3==0)?LOW:HIGH);
/* управляем правым мотором */
Wheel (RightMotor, RemoteXY.joystick_1_y - RemoteXY.joystick_1_x);
/* управляем левым мотором */
Wheel (LeftMotor, RemoteXY.joystick_1_y + RemoteXY.joystick_1_x);
/* Cервоприводы */
unsigned long time = millis();
unsigned long d_time = time - prev_time;
prev_time = time;
x_servo.writeMicroseconds(RemoteXY.slider_x*20+500);
y_servo.writeMicroseconds(2500-RemoteXY.slider_y*20);
}