marzo 13, 2017

SUMOBOT-Configurando el mando para controlar el robot

Written by

 

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:

Planteamiento de movimiento del robot con el mando

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);
}           

Category : ROBOT SUMO

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Proudly powered by WordPress and Sweet Tech Theme