Hi Evgeny
Near is text from sketch. I tested sketch. Working only with 3.7.5 version. It is problem upload to Google Play too old 3.7.5 version?
Please write me why my sketch not working with 3.8.3 version.
Thank you
Milan.
//////////////////////////////////////////////
// RemoteXY include library //
// use library version 2.1.3 or up //
// use ANDROID app version 3.4.1 or up //
//////////////////////////////////////////////
/* RemoteXY select connection mode and include library */
#define REMOTEXY_MODE__SOFTWARESERIAL /*nastavenie knižníc */
#include <SoftwareSerial.h>
#include <RemoteXY.h>
#define REMOTEXY_SERIAL Serial /* nastavenie komunikácie bluetoth a portov 2 a 3 kde bude bluetoth pripojene */
#define REMOTEXY_SERIAL_RX 2
#define REMOTEXY_SERIAL_TX 3
#define REMOTEXY_SERIAL_SPEED 9600
/* RemoteXY configurate */
#pragma pack(push, 1) /* toto je graficke rozhranie ktore sa vykresli na mobile resp na tablete */
uint8_t RemoteXY_CONF[] =
{ 8,0,244,0,6,5,0,5,35,36
,10,27,27,1,4,160,8,3,84,5
,2,4,160,6,56,84,5,2,4,32
,2,10,6,44,2,4,32,90,11,6
,44,2,4,160,21,47,56,5,2,1
,0,15,13,12,12,0,76,69,68,0
,130,0,32,10,37,30,12,130,0,10
,2,80,7,14,129,0,11,6,10,3
,0,83,101,114,118,111,32,49,0,130
,0,8,55,80,7,14,129,0,9,55
,10,3,0,83,101,114,118,111,32,50
,0,130,0,1,12,8,40,14,129,0
,6,49,10,3,0,83,101,114,118,111
,32,51,0,130,0,1,48,18,5,14
,130,0,89,13,8,40,14,130,0,79
,48,18,5,14,129,0,80,49,10,3
,0,83,101,114,118,111,32,52,0,129
,0,61,11,21,3,0,65,100,97,109
,32,197,160,117,106,97,110,115,107,195
,189,0,130,0,69,10,14,5,12,129
,0,70,16,17,4,8,65,77,65,86
,69,84,0,129,0,73,20,11,4,8
,54,56,54,32,66,0,130,0,21,45
,56,8,14,129,0,22,45,10,3,0
,83,101,114,118,111,32,53,0 };
/* this structure defines all the variables of your control interface */
struct {
/* input variable */
int8_t joystick_1_x; // =-100..100 x-coordinate joystick position /* vstupne hodnoty ktorymi sa bude ovladat podvozok a otocna zakladna a ramena a dioda */
int8_t joystick_1_y; // =-100..100 y-coordinate joystick position
int8_t slider_1; // =-100..100 slider position
int8_t slider_2; // =-100..100 slider position
int8_t slider_3; // =-100..100 slider position
int8_t slider_4; // =-100..100 slider position
int8_t slider_5; // =-100..100 slider position
uint8_t button_1; // =1 if button pressed, else =0
/* other variable */
uint8_t connect_flag; // =1 if wire connected, else =0
} RemoteXY;
#pragma pack(pop)
/////////////////////////////////////////////
// END RemoteXY include //
/////////////////////////////////////////////
#include <Servo.h> /* definovanie knižnice pre serva */
#define PIN_1_SERVO 4 /* definovanie pinov PWM pre jendotlive serva */
#define PIN_2_SERVO 5
#define PIN_3_SERVO 6
#define PIN_4_SERVO 7
#define PIN_5_SERVO 9
Servo prve_servo; /* definovanie serv */
Servo druhe_servo;
Servo tretie_servo;
Servo stvrte_servo;
Servo piate_servo;
/* defined the right motor control pins */
#define PIN_MOTOR_RIGHT_UP 15 /* definovanie pinov praveho motora podvozku */
#define PIN_MOTOR_RIGHT_DN 16
#define PIN_MOTOR_RIGHT_SPEED 17
/* defined the left motor control pins */
#define PIN_MOTOR_LEFT_UP 18 /* definovanie pinov laveho motora podvozku */
#define PIN_MOTOR_LEFT_DN 19
#define PIN_MOTOR_LEFT_SPEED 20
/* defined the LED pin */
#define PIN_BUTTON_1 13 /* definovanie pinu 13 ako pinu pre LED diodu */
/* defined two arrays with a list of pins for each motor */
unsigned char RightMotor[3] =
{PIN_MOTOR_RIGHT_UP, PIN_MOTOR_RIGHT_DN, PIN_MOTOR_RIGHT_SPEED}; /* definovanie motorov podvozku */
unsigned char LeftMotor[3] =
{PIN_MOTOR_LEFT_UP, PIN_MOTOR_LEFT_DN, PIN_MOTOR_LEFT_SPEED};
/*
speed control of the motor
motor - pointer to an array of pins
v - motor speed can be set from -100 to 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 ();
pinMode (PIN_BUTTON_1, OUTPUT); /* definovanie pinu pre led ako vystupneho */
/* initialization pins */
pinMode (PIN_MOTOR_RIGHT_UP, OUTPUT); /* definovanie pinov pre podvozok ako vystupne */
pinMode (PIN_MOTOR_RIGHT_DN, OUTPUT);
pinMode (PIN_MOTOR_LEFT_UP, OUTPUT);
pinMode (PIN_MOTOR_LEFT_DN, OUTPUT);
// TODO you setup code
prve_servo.attach(PIN_1_SERVO); /* priradenie pinov k jednotlivym servam */
druhe_servo.attach(PIN_2_SERVO);
tretie_servo.attach(PIN_3_SERVO);
stvrte_servo.attach(PIN_4_SERVO);
piate_servo.attach(PIN_5_SERVO);
RemoteXY.slider_1=50; /* nastavenie sliderov na hodnotu 50 */
RemoteXY.slider_2=50;
RemoteXY.slider_3=50;
RemoteXY.slider_4=50;
RemoteXY.slider_5=50;
}
void loop() /* od tohoto okamihu sa program neustale opakuje teda od prikazu LOOP */
{
RemoteXY_Handler ();
/* manage LED pin */
digitalWrite(PIN_BUTTON_1, (RemoteXY.button_1==0)?LOW:HIGH); /* ovladanie pinu pre LED */
/* manage the right motor */ /* ovladanie motorov podvozku */
Wheel (RightMotor, RemoteXY.joystick_1_y - RemoteXY.joystick_1_x);
/* manage the left motor */
Wheel (LeftMotor, RemoteXY.joystick_1_y + RemoteXY.joystick_1_x);
prve_servo.writeMicroseconds(RemoteXY.slider_1*10+1000); /* vypocet PWM signalu pre ovladanie serva pri hodnote 1500 je servo na 0 ked je hodnota 1000 je -90 stupnov a ked je maximalna hodnota zo slidera 100 to jest 100krat 10 plus 1000 tak je vysledok 2000 a vtedy je servo natocene +90 stupnov TAKZE hodnota pre servo motor sa meni podla hodnoty na slideri. Na slideri moze byt hodnota 0 až 100 a po výpočte je hodnota na servo 1000 až 2000 */
druhe_servo.writeMicroseconds(RemoteXY.slider_2*10+1000);
tretie_servo.writeMicroseconds(RemoteXY.slider_3*10+1000);
stvrte_servo.writeMicroseconds(RemoteXY.slider_4*10+1000);
piate_servo.writeMicroseconds(RemoteXY.slider_5*10+1000);
}