Written by Usublog
Realizando la configuración del mando que luego sera controlado por bluetooth.
El mando controla la dirección del movimiento con el joystick, que puede realizar movimiento en dos ejes X, Y. Es complicado traspasar esto a los motores del robot, que son dos y hay que manejar en paralelo. Para aclarar nuestra forma de resolverlo, adjuntamos la siguiente hoja borrador:
En resumen, en esta hoja se plantea los valores de lectura del joystick y los valores que debe traducir para cada servo-motor. El programa que usamos para el mando es el siguiente:
// Proyecto SUMOBOT
// Programa de mando remoto para robot. Movimiento con joystick KY-023
// Lee dos valores del joystick y los envía por bluetooth HC-05 emparejado con otro en el receptor
// 3/5/2017 - Chen Ye / Rafael Caballos
//
// Basic Bluetooth sketch HC-05_03_AT_MODE_Controlled
// Connect the HC-05 module and communicate using the serial monitor
//
// The HC-05 defaults to communication mode when first powered on.
// The default baud rate for communication mode is 9600. Your module may have a different speed.
// This sketch allows the user to enter AT mode on the HC-05
//
// Pins
// D2 (RX) to HC-05 TX
// D3 (TX) to voltage divider and then HC-05 RX
// D4 to voltage divider and then to pin 34
// HC-05 vcc to 5v
// HC-05 GND to common GND
//
#include <SoftwareSerial.h>
SoftwareSerial BTserial(2, 3); // RX | TX
// Connect the HC-05 TX to Arduino pin 2 RX.
// Connect the HC-05 RX to Arduino pin 3 TX through a voltage divider.
// Patillas para las entradas X/Y del joystick
int joyX = A0;
int joyY = A1;
// Variables de posición del joystick
int leeX,joyvalX,antvalX;
int leeY,joyvalY,antvalY;
char c = ' ';
byte ATmodePin=4;
char cadena[10];
//////////// INICIALIZACIÓN //////////////
void setup()
{
// set up the pin used to turn on AT mode
pinMode(ATmodePin, OUTPUT);
digitalWrite(ATmodePin, LOW);
// Start the serial monitor
Serial.begin(9600);
Serial.println("Arduino is ready");
// HC-05 default serial speed for communication mode is 38400
BTserial.begin(38400);
Serial.println("BTserial started at 38400");
// Inicializa valores de variables
antvalX=antvalY=0;
}
//////////// PROGRAMA PRINCIPAL //////////////
void loop()
{
// Lee valor X del joystick y comprueba si ha cambiado
leeX = analogRead(joyX);
joyvalX = map(leeX, 0, 1023, -100, 100);
if (joyvalX!=antvalX)
{
// Envía por bluetooth el valor codificado
sprintf(cadena,"#X%d#",joyvalX);
BTserial.print(cadena);
// Serial.print(cadena);
antvalX=joyvalX;
}
// Lee valor Y del joystick y comprueba si ha cambiado
leeY = analogRead(joyY);
joyvalY = map(leeY, 0, 1023, -100, 100);
if (joyvalY!=antvalY)
{
// Envía por bluetooth el valor codificado
sprintf(cadena,"#Y%d#",joyvalY);
BTserial.print(cadena);
// Serial.print(cadena);
antvalY=joyvalY;
}
delay(100);
}
Deja una respuesta