Código
- Carro robô com controle remoto via aplicativo móvel RemoteXY
Carro robô com controle remoto via aplicativo móvel RemoteXY C / C ++
Você pode baixar a biblioteca RemoteXY.h no link http://remotexy.com/en/library//////////////////////////// ////////////////////// // RemoteXY include library // /////////////////////////// ////////////////////////// / * RemoteXY seleciona o modo de conexão e inclui a biblioteca * / #define REMOTEXY_MODE__SOFTWARESERIAL #include #include / * RemoteXY connection settings * / #define REMOTEXY_SERIAL_RX 2 #define REMOTEXY_SERIAL_TX 3 #define REMOTEXY_SERIAL_SPEED 9600 / * RemoteXY configurate * / unsigned char RemoteXY_CONF [] ={3,0,23,0,1,5,5,15,41, 11, 43,43,1,2,0,6,5,27,11,5, 79,78,0,79,70,70,0}; / * esta estrutura define todas as variáveis de sua interface de controle * / struct {/ * variável de entrada * / assinado char joystick_1_x; / * =-100..100 posição do joystick de coordenada x * / assinado char joystick_1_y; / * =-100..100 posição do joystick da coordenada y * / unsigned char switch_1; / * =1 se switch ON e =0 se OFF * / / * outra variável * / unsigned char connect_flag; / * =1 se o fio estiver conectado, senão =0 * /} RemoteXY; ///////////////////////////////////////////////// // END RemoteXY incluir // ///////////////////////////////////////////// /* definiram os pinos de controle do motor direito * / #define PIN_MOTOR_RIGHT_UP 7 #define PIN_MOTOR_RIGHT_DN 6 #define PIN_MOTOR_RIGHT_SPEED 10 / * definiu os pinos de controle do motor esquerdo * / #define PIN_MOTOR_LEFT_UP 5 #define PIN_MOTOR_LEFT_DNFT 4 #define PIN_MOTOR_LEFT_DNFT 9 / * definiu os pinos de controle do motor esquerdo * / #define PIN_MOTOR_LEFT_UP 5 #define PIN_MOTOR_LEFT_DNFT 9 * definiu o PIN_LEFT / PIN_LEFT 9 define PIN_LED 13 / * definiu duas matrizes com uma lista de pinos para cada motor * / unsigned char RightMotor [3] ={PIN_MOTOR_RIGHT_UP, PIN_MOTOR_RIGHT_DN, PIN_MOTOR_RIGHT_SPEED}; caractere unsigned LeftMotor [3] ={PIN_MOTOR_LEFT_UP, PIN_MOTOR_LEFT_DN, PIN_MOTOR_LEFT_SPEED}; / * controle de velocidade do motor do motor - ponteiro para uma matriz de pinos v - velocidade do motor pode ser definida de -100 a 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], BAIXO); analogWrite (motor [2], v * 2,55); } else if (v <0) {digitalWrite (motor [0], LOW); digitalWrite (motor [1], ALTO); analogWrite (motor [2], (-v) * 2,55); } else {digitalWrite (motor [0], LOW); digitalWrite (motor [1], BAIXO); analogWrite (motor [2], 0); }} void setup () {/ * pinos de inicialização * / 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_LED, OUTPUT); / * módulo de inicialização RemoteXY * / RemoteXY_Init (); } void loop () {/ * módulo manipulador de eventos RemoteXY * / RemoteXY_Handler (); / * gerenciar pino de LED * / digitalWrite (PIN_LED, (RemoteXY.switch_1 ==0)? BAIXO:ALTO); / * gerenciar o motor certo * / Wheel (RightMotor, RemoteXY.joystick_1_y - RemoteXY.joystick_1_x); / * gerenciar o motor esquerdo * / Wheel (LeftMotor, RemoteXY.joystick_1_y + RemoteXY.joystick_1_x); }