Topic: Некорректно работает скетч!
Добрый день, не могу понять почему при добавлении настроек сервоприводов скетч перестает адекватно работать?
Плата arduino pro mini и bluetooth HM-10
Скетч для погрузчика на две сервы и два мотора
//////////////////////////////////////////////
// RemoteXY include library //
//////////////////////////////////////////////
// определение режима соединения и подключение библиотеки RemoteXY
#define REMOTEXY_MODE__SOFTSERIAL
#include <SoftwareSerial.h>
#include <Servo.h>
#include <RemoteXY.h>
// настройки соединения
#define REMOTEXY_SERIAL_RX 16
#define REMOTEXY_SERIAL_TX 3
#define REMOTEXY_SERIAL_SPEED 9600
// конфигурация интерфейса
#pragma pack(push, 1)
uint8_t RemoteXY_CONF[] =
{ 255,7,0,0,0,217,0,8,79,0,
5,32,52,13,47,47,2,26,19,4,
48,3,11,9,51,89,26,4,48,17,
11,9,51,89,26,2,0,31,31,19,
8,2,26,31,31,79,78,0,79,70,
70,0,2,0,31,16,19,8,2,26,
31,31,79,78,0,79,70,70,0,2,
0,31,47,19,8,2,26,31,31,79,
78,0,79,70,70,0,129,0,30,11,
20,4,1,208,147,208,176,208,177,208,
176,209,128,208,184,209,130,209,139,0,
129,0,31,25,19,4,1,208,144,208,
178,208,176,209,128,208,184,208,185,208,
186,208,176,0,129,0,28,41,25,4,
1,208,158,209,133,208,187,208,176,208,
182,208,180,208,181,208,189,208,184,208,
181,0,129,0,26,0,46,9,64,208,
159,208,190,208,179,209,128,209,131,208,
183,209,135,208,184,208,186,0,129,0,
2,9,11,3,36,208,161,209,130,209,
128,208,181,208,187,208,176,0,129,0,
15,9,8,3,36,208,154,208,190,208,
178,209,136,0 };
// структура определяет все переменные вашего интерфейса управления
struct {
// input variable
int8_t joystick_1_x; // =-100..100 координата x положения джойстика
int8_t joystick_1_y; // =-100..100 координата y положения джойстика
int8_t strela; // =-100..100 положение слайдера
int8_t kovsh; // =-100..100 положение слайдера
uint8_t avar; // =1 если переключатель включен и =0 если отключен
uint8_t gabariti; // =1 если переключатель включен и =0 если отключен
uint8_t cooler; // =1 если переключатель включен и =0 если отключен
// other variable
uint8_t connect_flag; // =1 if wire connected, else =0
} RemoteXY;
#pragma pack(pop)
/////////////////////////////////////////////
// END RemoteXY include //
/////////////////////////////////////////////
/* определяем пины управления правым мотором */
#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_AVAR A3
#define PIN_GABARITI 13
#define PIN_COOLER A5
Servo myservo;
/* определяем два массива с перечислением пинов для каждого мотора */
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 ();
myservo.attach(11);
RemoteXY.kovsh = 80;
/* инициализация пинов */
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_AVAR, OUTPUT);
pinMode (PIN_GABARITI, OUTPUT);
pinMode (PIN_COOLER, OUTPUT);
// TODO you setup code
}
void loop()
{
RemoteXY_Handler ();
digitalWrite(PIN_AVAR, (RemoteXY.avar==0)?LOW:HIGH);
digitalWrite(PIN_GABARITI, (RemoteXY.gabariti==0)?LOW:HIGH);
digitalWrite(PIN_COOLER, (RemoteXY.cooler==0)?LOW:HIGH);
/* управляем правым мотором */
Wheel (RightMotor, RemoteXY.joystick_1_y - RemoteXY.joystick_1_x);
/* управляем левым мотором */
Wheel (LeftMotor, RemoteXY.joystick_1_y + RemoteXY.joystick_1_x);
int ms = RemoteXY.kovsh;
ms = map(ms, 0, 100, 50, 100);
myservo.write(ms);
}