SlideShare una empresa de Scribd logo
1 de 60
Descargar para leer sin conexión
Materia: Rev: Página
1 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
Cuatrimestre: 9° Grupo: A Corte: 3 Fecha: 13 de diciembre
de 2019
Nombre de la practica: Manipulador articulado de 4 Grados de Libertad
Objetivo general:
Los alumnos deberán desarrollar la práctica en base a los conocimientos adquiridos en esta materia,
así como en la materia de cinemática de robots.
Los alumnos desarrollaran un brazo robótico tipo articulado de 4 grados de libertad en base.
Objetivos específicos:
• Diseño mecánico
• Diseño eléctrico
• Etapa de potencia
• Simulación en Software RoboDK
• Diseño matemático
• Denavit – Hartenberg
• Jacobiano
Integrantes: (En orden alfabético comenzando por apellido paterno, matricula)
Alfaro Náfate Héctor Avilio 161165
Ceiba Palacios Salvador Alejandro 171018
López López Lizandro Joaquín 163023
Morales Mandujano Edgar Alexis 163026
Salinas Villatoro Jorge Erik 163547
Materiales:
• 4 Servomotores SG-5010
• Keypad 4x4
• Diodo 1n4007
• Led 5mm
• Jumpers
• 1 Resistencia 220Ω
• 10 resistencias 10k Ω
• Protoboard
• Cable USB Serial Arduino
Instrumentos y equipo:
• Software GNU Octave
• Software Arduino IDE
• Software CAD SolidWorks
• Software Eagle
• Fuente DC 5V 30A
Materia: Rev: Página
2 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
• 18 Resistencias 1k Ω
• 6 Transistores tip122
• 6 pc817
• 6 DIP-4
• 2 Borneras-2
• Placa Fenólica
• 3 Piezas 3D
• 8 Tornillos
• Base de Madera
• 25 Arandelas
• 4 Roscas tipo nuez
Metodología:
INSERTAR LA INFORMACION EN ESTE ORDEN
• Teoría sobre cinemática del manipulador
• Teoría sobre dinámica del manipulador
• Diseños CAD y ensamble *FALTA PLANO DE ENSAMLE
• Diseño eléctrico
• Denavit - Hartenberg
• Jacobiano
• Programación
Desarrollo:
A continuación, se muestra el código utilizado para la manipulación del brazo robot en este proyecto.
//UNIERSIDAD POLITÉCNICA DE CHIAPAS
//INGENIERÍA MECATRÓNICA
//DINÁMICA DE ROBOTS
//DECLARACION DE LIBRERIAS
#define DEBUG(a) Serial.println(a); //
#include <Servo.h> //LIBRERIA PARA USAR LOS SERVOMOTORES
#include <Keypad.h> //LIRERIA PARA USAR EL KEYPAD
//DECLARACION DE CONSTANTES
int intervalo = 1; //MODIFICA EL INTERVALO DE MOVIMIENTO EN EL MODO MANUAL
const byte filas = 4; //DECLARACION DE LA CANTIDAD DE FILAS QUE TIENE EL KEYPAD
const byte columnas = 4; //DECLARACION DE LA CANTIDAD DE COLUMNAS QUE TIENE EL KEYPAD
byte PinesFilas[filas] = { 13, 12, 11, 10 }; //DECLARA LOS PINES USADOS PARA LAS FILAS DEL KEYPAD
Materia: Rev: Página
3 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
byte PinesColumnas[columnas] = { 9, 8, 7, 6 }; //DECLARA LOS PINES USADOS PARA LAS COLUMNAS DEL
KEYPAD
byte numeroDeDigitos = 0; //CANTIDAD DE DÍGITOS PARA INGRESAR
//DECLARACION DE VARIABLES
bool flag; //VARIALE BANDERA USADA EN LOS CICLOS WHILE
bool auxiliar; //VARIABLE BANDERA USADA EN LOS CICLOS WHILE
int vel = 100; //VARIABLE QUE MODIFICA EL DELAY EN LA RUTINA
int quantity;
char pulsacion; //GUARDA LAS PULSACIONES DEL KEYPAD
char key, option; //LEE LAS GUARDA LAS PULSACIONES DEL KEYPAD
String PIN_Tecleado = ""; //ALMACENA LOS DIGITOS PARA LAS POSICIONES
//DECLARACION DE JOTAS
int J1 = 0;
int J2 = 0;
int J3 = 0;
int J4 = 0;
//DELARACION DE MOTORES PARA MODO MANUAL
int J1P = 0;
int J1N = 0;
int J2P = 0;
int J2N = 0;
int J3P = 0;
int J3N = 0;
int J4P = 0;
int J4N = 0;
//VARIABLES USADAS PARA ALMACENAR LAS POSICIONES
int J11, J12, J13, J14;
int J21, J22, J23, J24;
int J31, J32, J33, J34;
int J41, J42, J43, J44;
int J51, J52, J53, J54;
int J61, J62, J63, J64;
//DECLARACION DE LA MATRIZ DEL KEYPAD
char keys[filas][columnas] = {
{ '1', '2', '3', 'A' },
{ '4', '5', '6', 'B' },
{ '7', '8', '9', 'C' },
{ '*', '0', '#', 'D' }
};
//DECLARACION DEL KEYPAD
Keypad keypad = Keypad(makeKeymap(keys), PinesFilas, PinesColumnas, filas, columnas);
//DECLARACIÓN DE SERVOS
Servo SJ1;
Servo SJ2;
Servo SJ3;
Servo SJ4;
void setup()
{
Serial.begin(9600);
Materia: Rev: Página
4 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
//ARREMDAMIENTO DE SERVOS
SJ1.attach(2);
SJ2.attach(3);
SJ3.attach(4);
SJ4.attach(5);
//PRESENTACION
Serial.println("ttttUNIVERSIDAD POLITECNICA DE CHIAPAS");
Serial.println("tttt INGENIERIA MECATRONICA");
Serial.println("tttttDINAMICA DE ROBOTS");
Serial.println("tttttt9° A");
Serial.println("============================================================================
======================");
//POSICIÓN HOME
SJ1.write(81);
SJ2.write(96);
SJ3.write(93);
SJ4.write(91);
}
void loop()
{
//POSICIÓN HOME
SJ1.write(81);
SJ2.write(96);
SJ3.write(93);
SJ4.write(91);
quantity = 0;
//MENÚ PRINCIPAL
Serial.println();
Serial.println("--------------------------------------------------------------------------------------------------");
Serial.println("tttt -- MODO DE OPERACION --");
Serial.println("ttttSeleccione un modo de operacion:");
Serial.println("tttttA = Modo Automatico");
Serial.println("tttttB = Modo Manual");
Serial.println("--------------------------------------------------------------------------------------------------");
flag = true;
while (flag)
{
key = keypad.getKey();
if (key)
{
switch (key)
{
case 'A': //MODO AUTOMÁTICO
Serial.println();
Serial.println("nttttMODO AUTOMATICO SELECCIONADOn");
Serial.println();
delay(500);
//MENÚ DEL MODO AUTOMÁTICO
Serial.println("tttt -- MODO AUTOMATICO --");
Serial.println("tttt Seleccione la opcion deseada");
Materia: Rev: Página
5 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
Serial.println("tttt A = Crear Rutina de Operacion");
Serial.println("tttt B = Ejecutar Rutina de Operacion");
Serial.println("tttt C = Menu Principal");
flag = true;
while (flag)
{
key = keypad.getKey();
if (key)
{
switch (key)
{
case 'A': //MENÚ PARA LA CREACIÓN DE LA RUTINA
Serial.println("n");
Serial.println("tttt-- CREAR RUTINA DE OPERACION --");
Serial.println("tttt Seleccione la opcion deseada");
Serial.println("ttttt1 = Posicion 1");
Serial.println("ttttt2 = Posicion 2");
Serial.println("ttttt3 = Posicion 3");
Serial.println("ttttt4 = Posicion 4");
Serial.println("ttttt5 = Posicion 5");
Serial.println("ttttt6 = Posicion 6");
Serial.println("ttttt0 = Tiempo de espera");
Serial.println();
Serial.println();
flag = true;
while (flag)
{
key = keypad.getKey();
if (key)
{
switch (key)
{
case '1': //EDITAR POSICION 1
Serial.println("tttt -- EDITAR POSICION 1 --");
Serial.println("tttt Ingrese la Posicion deseada");
Serial.println("tttt * = Insertar (-) ");
Serial.println("tttt # = Eliminar ultimo digito");
Serial.println("tttt C = Cancelar");
Serial.println("tttt D = Aceptar");
Serial.println();
Serial.print("ttttt Ingrese J1: ");
while (flag)
{
pulsacion = keypad.getKey();
if (pulsacion) //PREGUNTA SI SE HA PRESIONADO ALGUNA TECLA EN EL KEYPAD
{
if (pulsacion >= '0' && pulsacion <= '9' && numeroDeDigitos < 3) //LEE LOS DIGITOS
INGRESADOS CON UN MÁXIMO DE TRES DIGITOS
{
numeroDeDigitos ++;
PIN_Tecleado += pulsacion;
Serial.print(pulsacion);
}
Materia: Rev: Página
6 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
if (pulsacion == '*' && numeroDeDigitos == 0) //INGRESAR SIGNO NEGATIVO //INGRESAR
SIGNO NEGATIVO
{
numeroDeDigitos++;
pulsacion = '-';
PIN_Tecleado += pulsacion;
Serial.print(pulsacion);
}
if (pulsacion == '#' && numeroDeDigitos > 0) //BORRAR EL ÚLTIMO DÍGITO INGRESADO
{
numeroDeDigitos --;
PIN_Tecleado = PIN_Tecleado.substring(0, numeroDeDigitos);
Serial.println();
Serial.print("ttttt Ingrese J1: ");
Serial.print(PIN_Tecleado);
}
if (pulsacion == 'C') //BORRAR TODOS LOS DÍGITOS INGRESADOS
{
numeroDeDigitos = 0;
PIN_Tecleado = "";
Serial.println();
Serial.print("ttttt Ingrese J1: ");
}
if (pulsacion == 'D') //GUARDAR DÍGITOS INGRESADOS EN UNA VARIABLE
{
Serial.println();
String text = PIN_Tecleado;
long value;
value = text.toInt();
Serial.print("ttttt J1: ");
DEBUG(value);////imprime value
J11 = value;
PIN_Tecleado = "";
numeroDeDigitos = 0;
Serial.println();
Serial.print("ttttt Ingrese J2: ");
while (flag)
{
pulsacion = keypad.getKey();
if (pulsacion) //PREGUNTA SI SE HA PRESIONADO ALGUNA TECLA EN EL KEYPAD
{
if (pulsacion >= '0' && pulsacion <= '9' && numeroDeDigitos < 3) //LEE LOS DIGITOS
INGRESADOS CON UN MÁXIMO DE TRES DIGITOS
{
numeroDeDigitos ++;
PIN_Tecleado += pulsacion;
Serial.print(pulsacion);
}
if (pulsacion == '*' && numeroDeDigitos == 0) //INGRESAR SIGNO NEGATIVO
{
numeroDeDigitos++;
pulsacion = '-';
Materia: Rev: Página
7 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
PIN_Tecleado += pulsacion;
Serial.print(pulsacion);
}
if (pulsacion == '#' && numeroDeDigitos > 0)
{
numeroDeDigitos --;
PIN_Tecleado = PIN_Tecleado.substring(0, numeroDeDigitos);
Serial.println();
Serial.print("ttttt Ingrese J2: ");
Serial.print(PIN_Tecleado);
}
if (pulsacion == 'C')
{
numeroDeDigitos = 0;
PIN_Tecleado = "";
Serial.println();
Serial.print("ttttt Ingrese J2: ");
}
if (pulsacion == 'D')
{
Serial.println();
String text = PIN_Tecleado;
long value;
value = text.toInt();
Serial.print("ttttt J2: ");
DEBUG(value);////imprime value
J12 = value;
PIN_Tecleado = "";
numeroDeDigitos = 0;
Serial.println();
Serial.print("ttttt Ingrese J3: ");
while (flag)
{
pulsacion = keypad.getKey();
if (pulsacion) //PREGUNTA SI SE HA PRESIONADO ALGUNA TECLA EN EL KEYPAD
{
if (pulsacion >= '0' && pulsacion <= '9' && numeroDeDigitos < 3) //LEE LOS DIGITOS
INGRESADOS CON UN MÁXIMO DE TRES DIGITOS
{
numeroDeDigitos ++;
PIN_Tecleado += pulsacion;
Serial.print(pulsacion);
}
if (pulsacion == '*' && numeroDeDigitos == 0) //INGRESAR SIGNO NEGATIVO
{
numeroDeDigitos++;
pulsacion = '-';
PIN_Tecleado += pulsacion;
Serial.print(pulsacion);
}
Materia: Rev: Página
8 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
if (pulsacion == '#' && numeroDeDigitos > 0)
{
numeroDeDigitos --;
PIN_Tecleado = PIN_Tecleado.substring(0, numeroDeDigitos);
Serial.println();
Serial.print("ttttt Ingrese J3: ");
Serial.print(PIN_Tecleado);
}
if (pulsacion == 'C')
{
numeroDeDigitos = 0;
PIN_Tecleado = "";
Serial.println();
Serial.print("ttttt Ingrese J3: ");
}
if (pulsacion == 'D')
{
Serial.println();
String text = PIN_Tecleado;
long value;
value = text.toInt();
Serial.print("ttttt J3: ");
DEBUG(value);////imprime value
J13 = value;
PIN_Tecleado = "";
numeroDeDigitos = 0;
Serial.println();
Serial.print("ttttt Ingrese J4: ");
while (flag)
{
pulsacion = keypad.getKey();
if (pulsacion) //PREGUNTA SI SE HA PRESIONADO ALGUNA TECLA EN EL
KEYPAD
{
if (pulsacion >= '0' && pulsacion <= '9' && numeroDeDigitos < 3) //LEE LOS
DIGITOS INGRESADOS CON UN MÁXIMO DE TRES DIGITOS
{
numeroDeDigitos ++;
PIN_Tecleado += pulsacion;
Serial.print(pulsacion);
}
if (pulsacion == '*' && numeroDeDigitos == 0) //INGRESAR SIGNO NEGATIVO
{
numeroDeDigitos++;
pulsacion = '-';
PIN_Tecleado += pulsacion;
Serial.print(pulsacion);
}
if (pulsacion == '#' && numeroDeDigitos > 0)
{
numeroDeDigitos --;
Materia: Rev: Página
9 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
PIN_Tecleado = PIN_Tecleado.substring(0, numeroDeDigitos);
Serial.println();
Serial.print("ttttt Ingrese J4: ");
Serial.print(PIN_Tecleado);
}
if (pulsacion == 'C')
{
numeroDeDigitos = 0;
PIN_Tecleado = "";
Serial.println();
Serial.print("ttttt Ingrese J4: ");
}
if (pulsacion == 'D')
{
Serial.println();
String text = PIN_Tecleado;
long value;
value = text.toInt();
Serial.print("ttttt J4: ");
DEBUG(value);////imprime value
J14 = value;
PIN_Tecleado = "";
numeroDeDigitos = 0;
return; //VOLVER AL MENÚ PRINCIPAL
} ///pulsacionA4
}
}
} ///pulsacionA3
}
}
} ///pulsacionA2
}
}
}///pulsacionaA1
}
}
break;
case '2': //EDITAR POSICION 2
Serial.println("tttt -- EDITAR POSICION 2 --");
Serial.println("tttt Ingrese la Posicion deseada");
Serial.println("tttt * = Insertar (-) ");
Serial.println("tttt # = Eliminar ultimo digito");
Serial.println("tttt C = Cancelar");
Serial.println("tttt D = Aceptar");
Serial.println();
Serial.print("ttttt Ingrese J1: ");
while (flag)
{
pulsacion = keypad.getKey();
if (pulsacion) //PREGUNTA SI SE HA PRESIONADO ALGUNA TECLA EN EL KEYPAD
{
Materia: Rev: Página
10 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
if (pulsacion >= '0' && pulsacion <= '9' && numeroDeDigitos < 3) //LEE LOS DIGITOS
INGRESADOS CON UN MÁXIMO DE TRES DIGITOS
{
numeroDeDigitos ++;
PIN_Tecleado += pulsacion;
Serial.print(pulsacion);
}
if (pulsacion == '*' && numeroDeDigitos == 0) //INGRESAR SIGNO NEGATIVO
{
numeroDeDigitos++;
pulsacion = '-';
PIN_Tecleado += pulsacion;
Serial.print(pulsacion);
}
if (pulsacion == '#' && numeroDeDigitos > 0)
{
numeroDeDigitos --;
PIN_Tecleado = PIN_Tecleado.substring(0, numeroDeDigitos);
Serial.println();
Serial.print("ttttt Ingrese J1: ");
Serial.print(PIN_Tecleado);
}
if (pulsacion == 'C')
{
numeroDeDigitos = 0;
PIN_Tecleado = "";
Serial.println();
Serial.print("ttttt Ingrese J1: ");
}
if (pulsacion == 'D')
{
Serial.println();
String text = PIN_Tecleado;
long value;
value = text.toInt();
Serial.print("ttttt J1: ");
DEBUG(value);////imprime value
J21 = value;
PIN_Tecleado = "";
numeroDeDigitos = 0;
Serial.println();
Serial.print("ttttt Ingrese J2: ");
while (flag)
{
pulsacion = keypad.getKey();
if (pulsacion) //PREGUNTA SI SE HA PRESIONADO ALGUNA TECLA EN EL KEYPAD
{
if (pulsacion >= '0' && pulsacion <= '9' && numeroDeDigitos < 3) //LEE LOS DIGITOS
INGRESADOS CON UN MÁXIMO DE TRES DIGITOS
{
numeroDeDigitos ++;
Materia: Rev: Página
11 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
PIN_Tecleado += pulsacion;
Serial.print(pulsacion);
}
if (pulsacion == '*' && numeroDeDigitos == 0) //INGRESAR SIGNO NEGATIVO
{
numeroDeDigitos++;
pulsacion = '-';
PIN_Tecleado += pulsacion;
Serial.print(pulsacion);
}
if (pulsacion == '#' && numeroDeDigitos > 0)
{
numeroDeDigitos --;
PIN_Tecleado = PIN_Tecleado.substring(0, numeroDeDigitos);
Serial.println();
Serial.print("ttttt Ingrese J2: ");
Serial.print(PIN_Tecleado);
}
if (pulsacion == 'C')
{
numeroDeDigitos = 0;
PIN_Tecleado = "";
Serial.println();
Serial.print("ttttt Ingrese J2: ");
}
if (pulsacion == 'D')
{
Serial.println();
String text = PIN_Tecleado;
long value;
value = text.toInt();
Serial.print("ttttt J2: ");
DEBUG(value);////imprime value
J22 = value;
PIN_Tecleado = "";
numeroDeDigitos = 0;
Serial.println();
Serial.print("ttttt Ingrese J3: ");
while (flag)
{
pulsacion = keypad.getKey();
if (pulsacion) //PREGUNTA SI SE HA PRESIONADO ALGUNA TECLA EN EL KEYPAD
{
if (pulsacion >= '0' && pulsacion <= '9' && numeroDeDigitos < 3) //LEE LOS DIGITOS
INGRESADOS CON UN MÁXIMO DE TRES DIGITOS
{
numeroDeDigitos ++;
PIN_Tecleado += pulsacion;
Serial.print(pulsacion);
}
Materia: Rev: Página
12 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
if (pulsacion == '*' && numeroDeDigitos == 0) //INGRESAR SIGNO NEGATIVO
{
numeroDeDigitos++;
pulsacion = '-';
PIN_Tecleado += pulsacion;
Serial.print(pulsacion);
}
if (pulsacion == '#' && numeroDeDigitos > 0)
{
numeroDeDigitos --;
PIN_Tecleado = PIN_Tecleado.substring(0, numeroDeDigitos);
Serial.println();
Serial.print("ttttt Ingrese J3: ");
Serial.print(PIN_Tecleado);
}
if (pulsacion == 'C')
{
numeroDeDigitos = 0;
PIN_Tecleado = "";
Serial.println();
Serial.print("ttttt Ingrese J3: ");
}
if (pulsacion == 'D')
{
Serial.println();
String text = PIN_Tecleado;
long value;
value = text.toInt();
Serial.print("ttttt J3: ");
DEBUG(value);////imprime value
J23 = value;
PIN_Tecleado = "";
numeroDeDigitos = 0;
Serial.println();
Serial.print("ttttt Ingrese J4: ");
while (flag)
{
pulsacion = keypad.getKey();
if (pulsacion) //PREGUNTA SI SE HA PRESIONADO ALGUNA TECLA EN EL
KEYPAD
{
if (pulsacion >= '0' && pulsacion <= '9' && numeroDeDigitos < 3) //LEE LOS
DIGITOS INGRESADOS CON UN MÁXIMO DE TRES DIGITOS
{
numeroDeDigitos ++;
PIN_Tecleado += pulsacion;
Serial.print(pulsacion);
}
if (pulsacion == '*' && numeroDeDigitos == 0) //INGRESAR SIGNO NEGATIVO
{
numeroDeDigitos++;
pulsacion = '-';
Materia: Rev: Página
13 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
PIN_Tecleado += pulsacion;
Serial.print(pulsacion);
}
if (pulsacion == '#' && numeroDeDigitos > 0)
{
numeroDeDigitos --;
PIN_Tecleado = PIN_Tecleado.substring(0, numeroDeDigitos);
Serial.println();
Serial.print("ttttt Ingrese J4: ");
Serial.print(PIN_Tecleado);
}
if (pulsacion == 'C')
{
numeroDeDigitos = 0;
PIN_Tecleado = "";
Serial.println();
Serial.print("ttttt Ingrese J4: ");
}
if (pulsacion == 'D')
{
Serial.println();
String text = PIN_Tecleado;
long value;
value = text.toInt();
Serial.print("ttttt J4: ");
DEBUG(value);////imprime value
J24 = value;
PIN_Tecleado = "";
numeroDeDigitos = 0;
return; //VOLVER AL MENÚ PRINCIPAL
} ///pulsacionA4
}
}
} ///pulsacionA3
}
}
} ///pulsacionA2
}
}
}///pulsacionaA1
}
}
break;
case '3': //EDITAR POSICION 3
Serial.println("tttt -- EDITAR POSICION 3 --");
Serial.println("tttt Ingrese la Posicion deseada");
Serial.println("tttt * = Insertar (-) ");
Serial.println("tttt # = Eliminar ultimo digito");
Serial.println("tttt C = Cancelar");
Serial.println("tttt D = Aceptar");
Serial.println();
Serial.print("ttttt Ingrese J1: ");
while (flag)
Materia: Rev: Página
14 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
{
pulsacion = keypad.getKey();
if (pulsacion) //PREGUNTA SI SE HA PRESIONADO ALGUNA TECLA EN EL KEYPAD
{
if (pulsacion >= '0' && pulsacion <= '9' && numeroDeDigitos < 3) //LEE LOS DIGITOS
INGRESADOS CON UN MÁXIMO DE TRES DIGITOS
{
numeroDeDigitos ++;
PIN_Tecleado += pulsacion;
Serial.print(pulsacion);
}
if (pulsacion == '*' && numeroDeDigitos == 0) //INGRESAR SIGNO NEGATIVO
{
numeroDeDigitos++;
pulsacion = '-';
PIN_Tecleado += pulsacion;
Serial.print(pulsacion);
}
if (pulsacion == '#' && numeroDeDigitos > 0)
{
numeroDeDigitos --;
PIN_Tecleado = PIN_Tecleado.substring(0, numeroDeDigitos);
Serial.println();
Serial.print("ttttt Ingrese J1: ");
Serial.print(PIN_Tecleado);
}
if (pulsacion == 'C')
{
numeroDeDigitos = 0;
PIN_Tecleado = "";
Serial.println();
Serial.print("ttttt Ingrese J1: ");
}
if (pulsacion == 'D')
{
Serial.println();
String text = PIN_Tecleado;
long value;
value = text.toInt();
Serial.print("ttttt J1: ");
DEBUG(value);////imprime value
J31 = value;
PIN_Tecleado = "";
numeroDeDigitos = 0;
Serial.println();
Serial.print("ttttt Ingrese J2: ");
while (flag)
{
pulsacion = keypad.getKey();
if (pulsacion) //PREGUNTA SI SE HA PRESIONADO ALGUNA TECLA EN EL KEYPAD
Materia: Rev: Página
15 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
{
if (pulsacion >= '0' && pulsacion <= '9' && numeroDeDigitos < 3) //LEE LOS DIGITOS
INGRESADOS CON UN MÁXIMO DE TRES DIGITOS
{
numeroDeDigitos ++;
PIN_Tecleado += pulsacion;
Serial.print(pulsacion);
}
if (pulsacion == '*' && numeroDeDigitos == 0) //INGRESAR SIGNO NEGATIVO
{
numeroDeDigitos++;
pulsacion = '-';
PIN_Tecleado += pulsacion;
Serial.print(pulsacion);
}
if (pulsacion == '#' && numeroDeDigitos > 0)
{
numeroDeDigitos --;
PIN_Tecleado = PIN_Tecleado.substring(0, numeroDeDigitos);
Serial.println();
Serial.print("ttttt Ingrese J2: ");
Serial.print(PIN_Tecleado);
}
if (pulsacion == 'C')
{
numeroDeDigitos = 0;
PIN_Tecleado = "";
Serial.println();
Serial.print("ttttt Ingrese J2: ");
}
if (pulsacion == 'D')
{
Serial.println();
String text = PIN_Tecleado;
long value;
value = text.toInt();
Serial.print("ttttt J2: ");
DEBUG(value);////imprime value
J32 = value;
PIN_Tecleado = "";
numeroDeDigitos = 0;
Serial.println();
Serial.print("ttttt Ingrese J3: ");
while (flag)
{
pulsacion = keypad.getKey();
if (pulsacion) //PREGUNTA SI SE HA PRESIONADO ALGUNA TECLA EN EL KEYPAD
{
if (pulsacion >= '0' && pulsacion <= '9' && numeroDeDigitos < 3) //LEE LOS DIGITOS
INGRESADOS CON UN MÁXIMO DE TRES DIGITOS
Materia: Rev: Página
16 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
{
numeroDeDigitos ++;
PIN_Tecleado += pulsacion;
Serial.print(pulsacion);
}
if (pulsacion == '*' && numeroDeDigitos == 0) //INGRESAR SIGNO NEGATIVO
{
numeroDeDigitos++;
pulsacion = '-';
PIN_Tecleado += pulsacion;
Serial.print(pulsacion);
}
if (pulsacion == '#' && numeroDeDigitos > 0)
{
numeroDeDigitos --;
PIN_Tecleado = PIN_Tecleado.substring(0, numeroDeDigitos);
Serial.println();
Serial.print("ttttt Ingrese J3: ");
Serial.print(PIN_Tecleado);
}
if (pulsacion == 'C')
{
numeroDeDigitos = 0;
PIN_Tecleado = "";
Serial.println();
Serial.print("ttttt Ingrese J3: ");
}
if (pulsacion == 'D')
{
Serial.println();
String text = PIN_Tecleado;
long value;
value = text.toInt();
Serial.print("ttttt J3: ");
DEBUG(value);////imprime value
J33 = value;
PIN_Tecleado = "";
numeroDeDigitos = 0;
Serial.println();
Serial.print("ttttt Ingrese J4: ");
while (flag)
{
pulsacion = keypad.getKey();
if (pulsacion) //PREGUNTA SI SE HA PRESIONADO ALGUNA TECLA EN EL
KEYPAD
{
if (pulsacion >= '0' && pulsacion <= '9' && numeroDeDigitos < 3) //LEE LOS
DIGITOS INGRESADOS CON UN MÁXIMO DE TRES DIGITOS
{
numeroDeDigitos ++;
PIN_Tecleado += pulsacion;
Materia: Rev: Página
17 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
Serial.print(pulsacion);
}
if (pulsacion == '*' && numeroDeDigitos == 0) //INGRESAR SIGNO NEGATIVO
{
numeroDeDigitos++;
pulsacion = '-';
PIN_Tecleado += pulsacion;
Serial.print(pulsacion);
}
if (pulsacion == '#' && numeroDeDigitos > 0)
{
numeroDeDigitos --;
PIN_Tecleado = PIN_Tecleado.substring(0, numeroDeDigitos);
Serial.println();
Serial.print("ttttt Ingrese J4: ");
Serial.print(PIN_Tecleado);
}
if (pulsacion == 'C')
{
numeroDeDigitos = 0;
PIN_Tecleado = "";
Serial.println();
Serial.print("ttttt Ingrese J4: ");
}
if (pulsacion == 'D')
{
Serial.println();
String text = PIN_Tecleado;
long value;
value = text.toInt();
Serial.print("ttttt J4: ");
DEBUG(value);////imprime value
J34 = value;
PIN_Tecleado = "";
numeroDeDigitos = 0;
return; //VOLVER AL MENÚ PRINCIPAL
} ///pulsacionA4
}
}
} ///pulsacionA3
}
}
} ///pulsacionA2
}
}
}///pulsacionaA1
}
}
break;
case '4': //EDITAR POSICION 4
Serial.println("tttt -- EDITAR POSICION 4 --");
Serial.println("tttt Ingrese la Posicion deseada");
Serial.println("tttt * = Insertar (-) ");
Materia: Rev: Página
18 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
Serial.println("tttt # = Eliminar ultimo digito");
Serial.println("tttt C = Cancelar");
Serial.println("tttt D = Aceptar");
Serial.println();
Serial.print("ttttt Ingrese J1: ");
while (flag)
{
pulsacion = keypad.getKey();
if (pulsacion) //PREGUNTA SI SE HA PRESIONADO ALGUNA TECLA EN EL KEYPAD
{
if (pulsacion >= '0' && pulsacion <= '9' && numeroDeDigitos < 3) //LEE LOS DIGITOS
INGRESADOS CON UN MÁXIMO DE TRES DIGITOS
{
numeroDeDigitos ++;
PIN_Tecleado += pulsacion;
Serial.print(pulsacion);
}
if (pulsacion == '*' && numeroDeDigitos == 0) //INGRESAR SIGNO NEGATIVO
{
numeroDeDigitos++;
pulsacion = '-';
PIN_Tecleado += pulsacion;
Serial.print(pulsacion);
}
if (pulsacion == '#' && numeroDeDigitos > 0)
{
numeroDeDigitos --;
PIN_Tecleado = PIN_Tecleado.substring(0, numeroDeDigitos);
Serial.println();
Serial.print("ttttt Ingrese J1: ");
Serial.print(PIN_Tecleado);
}
if (pulsacion == 'C')
{
numeroDeDigitos = 0;
PIN_Tecleado = "";
Serial.println();
Serial.print("ttttt Ingrese J1: ");
}
if (pulsacion == 'D')
{
Serial.println();
String text = PIN_Tecleado;
long value;
value = text.toInt();
Serial.print("ttttt J1: ");
DEBUG(value);////imprime value
J41 = value;
PIN_Tecleado = "";
numeroDeDigitos = 0;
Materia: Rev: Página
19 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
Serial.println();
Serial.print("ttttt Ingrese J2: ");
while (flag)
{
pulsacion = keypad.getKey();
if (pulsacion) //PREGUNTA SI SE HA PRESIONADO ALGUNA TECLA EN EL KEYPAD
{
if (pulsacion >= '0' && pulsacion <= '9' && numeroDeDigitos < 3) //LEE LOS DIGITOS
INGRESADOS CON UN MÁXIMO DE TRES DIGITOS
{
numeroDeDigitos ++;
PIN_Tecleado += pulsacion;
Serial.print(pulsacion);
}
if (pulsacion == '*' && numeroDeDigitos == 0) //INGRESAR SIGNO NEGATIVO
{
numeroDeDigitos++;
pulsacion = '-';
PIN_Tecleado += pulsacion;
Serial.print(pulsacion);
}
if (pulsacion == '#' && numeroDeDigitos > 0)
{
numeroDeDigitos --;
PIN_Tecleado = PIN_Tecleado.substring(0, numeroDeDigitos);
Serial.println();
Serial.print("ttttt Ingrese J2: ");
Serial.print(PIN_Tecleado);
}
if (pulsacion == 'C')
{
numeroDeDigitos = 0;
PIN_Tecleado = "";
Serial.println();
Serial.print("ttttt Ingrese J2: ");
}
if (pulsacion == 'D')
{
Serial.println();
String text = PIN_Tecleado;
long value;
value = text.toInt();
Serial.print("ttttt J2: ");
DEBUG(value);////imprime value
J42 = value;
PIN_Tecleado = "";
numeroDeDigitos = 0;
Serial.println();
Serial.print("ttttt Ingrese J3: ");
while (flag)
{
Materia: Rev: Página
20 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
pulsacion = keypad.getKey();
if (pulsacion) //PREGUNTA SI SE HA PRESIONADO ALGUNA TECLA EN EL KEYPAD
{
if (pulsacion >= '0' && pulsacion <= '9' && numeroDeDigitos < 3) //LEE LOS DIGITOS
INGRESADOS CON UN MÁXIMO DE TRES DIGITOS
{
numeroDeDigitos ++;
PIN_Tecleado += pulsacion;
Serial.print(pulsacion);
}
if (pulsacion == '*' && numeroDeDigitos == 0) //INGRESAR SIGNO NEGATIVO
{
numeroDeDigitos++;
pulsacion = '-';
PIN_Tecleado += pulsacion;
Serial.print(pulsacion);
}
if (pulsacion == '#' && numeroDeDigitos > 0)
{
numeroDeDigitos --;
PIN_Tecleado = PIN_Tecleado.substring(0, numeroDeDigitos);
Serial.println();
Serial.print("ttttt Ingrese J3: ");
Serial.print(PIN_Tecleado);
}
if (pulsacion == 'C')
{
numeroDeDigitos = 0;
PIN_Tecleado = "";
Serial.println();
Serial.print("ttttt Ingrese J3: ");
}
if (pulsacion == 'D')
{
Serial.println();
String text = PIN_Tecleado;
long value;
value = text.toInt();
Serial.print("ttttt J3: ");
DEBUG(value);////imprime value
J43 = value;
PIN_Tecleado = "";
numeroDeDigitos = 0;
Serial.println();
Serial.print("ttttt Ingrese J4: ");
while (flag)
{
pulsacion = keypad.getKey();
if (pulsacion) //PREGUNTA SI SE HA PRESIONADO ALGUNA TECLA EN EL
KEYPAD
Materia: Rev: Página
21 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
{
if (pulsacion >= '0' && pulsacion <= '9' && numeroDeDigitos < 3) //LEE LOS
DIGITOS INGRESADOS CON UN MÁXIMO DE TRES DIGITOS
{
numeroDeDigitos ++;
PIN_Tecleado += pulsacion;
Serial.print(pulsacion);
}
if (pulsacion == '*' && numeroDeDigitos == 0) //INGRESAR SIGNO NEGATIVO
{
numeroDeDigitos++;
pulsacion = '-';
PIN_Tecleado += pulsacion;
Serial.print(pulsacion);
}
if (pulsacion == '#' && numeroDeDigitos > 0)
{
numeroDeDigitos --;
PIN_Tecleado = PIN_Tecleado.substring(0, numeroDeDigitos);
Serial.println();
Serial.print("ttttt Ingrese J4: ");
Serial.print(PIN_Tecleado);
}
if (pulsacion == 'C')
{
numeroDeDigitos = 0;
PIN_Tecleado = "";
Serial.println();
Serial.print("ttttt Ingrese J4: ");
}
if (pulsacion == 'D')
{
Serial.println();
String text = PIN_Tecleado;
long value;
value = text.toInt();
Serial.print("ttttt J4: ");
DEBUG(value);////imprime value
J44 = value;
PIN_Tecleado = "";
numeroDeDigitos = 0;
return; //VOLVER AL MENÚ PRINCIPAL
} ///pulsacionA4
}
}
} ///pulsacionA3
}
}
} ///pulsacionA2
}
}
}///pulsacionaA1
}
Materia: Rev: Página
22 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
}
break;
case '5': //EDITAR POSICION 5
Serial.println("tttt -- EDITAR POSICION 5 --");
Serial.println("tttt Ingrese la Posicion deseada");
Serial.println("tttt * = Insertar (-) ");
Serial.println("tttt # = Eliminar ultimo digito");
Serial.println("tttt C = Cancelar");
Serial.println("tttt D = Aceptar");
Serial.println();
Serial.print("ttttt Ingrese J1: ");
while (flag)
{
pulsacion = keypad.getKey();
if (pulsacion) //PREGUNTA SI SE HA PRESIONADO ALGUNA TECLA EN EL KEYPAD
{
if (pulsacion >= '0' && pulsacion <= '9' && numeroDeDigitos < 3) //LEE LOS DIGITOS
INGRESADOS CON UN MÁXIMO DE TRES DIGITOS
{
numeroDeDigitos ++;
PIN_Tecleado += pulsacion;
Serial.print(pulsacion);
}
if (pulsacion == '*' && numeroDeDigitos == 0) //INGRESAR SIGNO NEGATIVO
{
numeroDeDigitos++;
pulsacion = '-';
PIN_Tecleado += pulsacion;
Serial.print(pulsacion);
}
if (pulsacion == '#' && numeroDeDigitos > 0)
{
numeroDeDigitos --;
PIN_Tecleado = PIN_Tecleado.substring(0, numeroDeDigitos);
Serial.println();
Serial.print("ttttt Ingrese J1: ");
Serial.print(PIN_Tecleado);
}
if (pulsacion == 'C')
{
numeroDeDigitos = 0;
PIN_Tecleado = "";
Serial.println();
Serial.print("ttttt Ingrese J1: ");
}
if (pulsacion == 'D')
{
Serial.println();
String text = PIN_Tecleado;
long value;
value = text.toInt();
Materia: Rev: Página
23 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
Serial.print("ttttt J1: ");
DEBUG(value);////imprime value
J51 = value;
PIN_Tecleado = "";
numeroDeDigitos = 0;
Serial.println();
Serial.print("ttttt Ingrese J2: ");
while (flag)
{
pulsacion = keypad.getKey();
if (pulsacion) //PREGUNTA SI SE HA PRESIONADO ALGUNA TECLA EN EL KEYPAD
{
if (pulsacion >= '0' && pulsacion <= '9' && numeroDeDigitos < 3) //LEE LOS DIGITOS
INGRESADOS CON UN MÁXIMO DE TRES DIGITOS
{
numeroDeDigitos ++;
PIN_Tecleado += pulsacion;
Serial.print(pulsacion);
}
if (pulsacion == '*' && numeroDeDigitos == 0) //INGRESAR SIGNO NEGATIVO
{
numeroDeDigitos++;
pulsacion = '-';
PIN_Tecleado += pulsacion;
Serial.print(pulsacion);
}
if (pulsacion == '#' && numeroDeDigitos > 0)
{
numeroDeDigitos --;
PIN_Tecleado = PIN_Tecleado.substring(0, numeroDeDigitos);
Serial.println();
Serial.print("ttttt Ingrese J2: ");
Serial.print(PIN_Tecleado);
}
if (pulsacion == 'C')
{
numeroDeDigitos = 0;
PIN_Tecleado = "";
Serial.println();
Serial.print("ttttt Ingrese J2: ");
}
if (pulsacion == 'D')
{
Serial.println();
String text = PIN_Tecleado;
long value;
value = text.toInt();
Serial.print("ttttt J2: ");
DEBUG(value);////imprime value
J52 = value;
PIN_Tecleado = "";
Materia: Rev: Página
24 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
numeroDeDigitos = 0;
Serial.println();
Serial.print("ttttt Ingrese J3: ");
while (flag)
{
pulsacion = keypad.getKey();
if (pulsacion) //PREGUNTA SI SE HA PRESIONADO ALGUNA TECLA EN EL KEYPAD
{
if (pulsacion >= '0' && pulsacion <= '9' && numeroDeDigitos < 3) //LEE LOS DIGITOS
INGRESADOS CON UN MÁXIMO DE TRES DIGITOS
{
numeroDeDigitos ++;
PIN_Tecleado += pulsacion;
Serial.print(pulsacion);
}
if (pulsacion == '*' && numeroDeDigitos == 0) //INGRESAR SIGNO NEGATIVO
{
numeroDeDigitos++;
pulsacion = '-';
PIN_Tecleado += pulsacion;
Serial.print(pulsacion);
}
if (pulsacion == '#' && numeroDeDigitos > 0)
{
numeroDeDigitos --;
PIN_Tecleado = PIN_Tecleado.substring(0, numeroDeDigitos);
Serial.println();
Serial.print("ttttt Ingrese J3: ");
Serial.print(PIN_Tecleado);
}
if (pulsacion == 'C')
{
numeroDeDigitos = 0;
PIN_Tecleado = "";
Serial.println();
Serial.print("ttttt Ingrese J3: ");
}
if (pulsacion == 'D')
{
Serial.println();
String text = PIN_Tecleado;
long value;
value = text.toInt();
Serial.print("ttttt J3: ");
DEBUG(value);////imprime value
J53 = value;
PIN_Tecleado = "";
numeroDeDigitos = 0;
Serial.println();
Serial.print("ttttt Ingrese J4: ");
Materia: Rev: Página
25 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
while (flag)
{
pulsacion = keypad.getKey();
if (pulsacion) //PREGUNTA SI SE HA PRESIONADO ALGUNA TECLA EN EL
KEYPAD
{
if (pulsacion >= '0' && pulsacion <= '9' && numeroDeDigitos < 3) //LEE LOS
DIGITOS INGRESADOS CON UN MÁXIMO DE TRES DIGITOS
{
numeroDeDigitos ++;
PIN_Tecleado += pulsacion;
Serial.print(pulsacion);
}
if (pulsacion == '*' && numeroDeDigitos == 0) //INGRESAR SIGNO NEGATIVO
{
numeroDeDigitos++;
pulsacion = '-';
PIN_Tecleado += pulsacion;
Serial.print(pulsacion);
}
if (pulsacion == '#' && numeroDeDigitos > 0)
{
numeroDeDigitos --;
PIN_Tecleado = PIN_Tecleado.substring(0, numeroDeDigitos);
Serial.println();
Serial.print("ttttt Ingrese J4: ");
Serial.print(PIN_Tecleado);
}
if (pulsacion == 'C')
{
numeroDeDigitos = 0;
PIN_Tecleado = "";
Serial.println();
Serial.print("ttttt Ingrese J4: ");
}
if (pulsacion == 'D')
{
Serial.println();
String text = PIN_Tecleado;
long value;
value = text.toInt();
Serial.print("ttttt J4: ");
DEBUG(value);////imprime value
J54 = value;
PIN_Tecleado = "";
numeroDeDigitos = 0;
return; //VOLVER AL MENÚ PRINCIPAL
} ///pulsacionA4
}
}
} ///pulsacionA3
}
Materia: Rev: Página
26 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
}
} ///pulsacionA2
}
}
}///pulsacionaA1
}
}
break;
case '6': //EDITAR POSICION 6
Serial.println("tttt -- EDITAR POSICION 6 --");
Serial.println("tttt Ingrese la Posicion deseada");
Serial.println("tttt * = Insertar (-) ");
Serial.println("tttt # = Eliminar ultimo digito");
Serial.println("tttt C = Cancelar");
Serial.println("tttt D = Aceptar");
Serial.println();
Serial.print("ttttt Ingrese J1: ");
while (flag)
{
pulsacion = keypad.getKey();
if (pulsacion) //PREGUNTA SI SE HA PRESIONADO ALGUNA TECLA EN EL KEYPAD
{
if (pulsacion >= '0' && pulsacion <= '9' && numeroDeDigitos < 3) //LEE LOS DIGITOS
INGRESADOS CON UN MÁXIMO DE TRES DIGITOS
{
numeroDeDigitos ++;
PIN_Tecleado += pulsacion;
Serial.print(pulsacion);
}
if (pulsacion == '*' && numeroDeDigitos == 0) //INGRESAR SIGNO NEGATIVO
{
numeroDeDigitos++;
pulsacion = '-';
PIN_Tecleado += pulsacion;
Serial.print(pulsacion);
}
if (pulsacion == '#' && numeroDeDigitos > 0)
{
numeroDeDigitos --;
PIN_Tecleado = PIN_Tecleado.substring(0, numeroDeDigitos);
Serial.println();
Serial.print("ttttt Ingrese J1: ");
Serial.print(PIN_Tecleado);
}
if (pulsacion == 'C')
{
numeroDeDigitos = 0;
PIN_Tecleado = "";
Serial.println();
Serial.print("ttttt Ingrese J1: ");
}
Materia: Rev: Página
27 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
if (pulsacion == 'D')
{
Serial.println();
String text = PIN_Tecleado;
long value;
value = text.toInt();
Serial.print("ttttt J1: ");
DEBUG(value);////imprime value
J61 = value;
PIN_Tecleado = "";
numeroDeDigitos = 0;
Serial.println();
Serial.print("ttttt Ingrese J2: ");
while (flag)
{
pulsacion = keypad.getKey();
if (pulsacion) //PREGUNTA SI SE HA PRESIONADO ALGUNA TECLA EN EL KEYPAD
{
if (pulsacion >= '0' && pulsacion <= '9' && numeroDeDigitos < 3) //LEE LOS DIGITOS
INGRESADOS CON UN MÁXIMO DE TRES DIGITOS
{
numeroDeDigitos ++;
PIN_Tecleado += pulsacion;
Serial.print(pulsacion);
}
if (pulsacion == '*' && numeroDeDigitos == 0) //INGRESAR SIGNO NEGATIVO
{
numeroDeDigitos++;
pulsacion = '-';
PIN_Tecleado += pulsacion;
Serial.print(pulsacion);
}
if (pulsacion == '#' && numeroDeDigitos > 0)
{
numeroDeDigitos --;
PIN_Tecleado = PIN_Tecleado.substring(0, numeroDeDigitos);
Serial.println();
Serial.print("ttttt Ingrese J2: ");
Serial.print(PIN_Tecleado);
}
if (pulsacion == 'C')
{
numeroDeDigitos = 0;
PIN_Tecleado = "";
Serial.println();
Serial.print("ttttt Ingrese J2: ");
}
if (pulsacion == 'D')
{
Serial.println();
Materia: Rev: Página
28 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
String text = PIN_Tecleado;
long value;
value = text.toInt();
Serial.print("ttttt J2: ");
DEBUG(value);////imprime value
J62 = value;
PIN_Tecleado = "";
numeroDeDigitos = 0;
Serial.println();
Serial.print("ttttt Ingrese J3: ");
while (flag)
{
pulsacion = keypad.getKey();
if (pulsacion) //PREGUNTA SI SE HA PRESIONADO ALGUNA TECLA EN EL KEYPAD
{
if (pulsacion >= '0' && pulsacion <= '9' && numeroDeDigitos < 3) //LEE LOS DIGITOS
INGRESADOS CON UN MÁXIMO DE TRES DIGITOS
{
numeroDeDigitos ++;
PIN_Tecleado += pulsacion;
Serial.print(pulsacion);
}
if (pulsacion == '*' && numeroDeDigitos == 0) //INGRESAR SIGNO NEGATIVO
{
numeroDeDigitos++;
pulsacion = '-';
PIN_Tecleado += pulsacion;
Serial.print(pulsacion);
}
if (pulsacion == '#' && numeroDeDigitos > 0)
{
numeroDeDigitos --;
PIN_Tecleado = PIN_Tecleado.substring(0, numeroDeDigitos);
Serial.println();
Serial.print("ttttt Ingrese J3: ");
Serial.print(PIN_Tecleado);
}
if (pulsacion == 'C')
{
numeroDeDigitos = 0;
PIN_Tecleado = "";
Serial.println();
Serial.print("ttttt Ingrese J3: ");
}
if (pulsacion == 'D')
{
Serial.println();
String text = PIN_Tecleado;
long value;
value = text.toInt();
Serial.print("ttttt J3: ");
Materia: Rev: Página
29 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
DEBUG(value);////imprime value
J63 = value;
PIN_Tecleado = "";
numeroDeDigitos = 0;
Serial.println();
Serial.print("ttttt Ingrese J4: ");
while (flag)
{
pulsacion = keypad.getKey();
if (pulsacion) //PREGUNTA SI SE HA PRESIONADO ALGUNA TECLA EN EL
KEYPAD
{
if (pulsacion >= '0' && pulsacion <= '9' && numeroDeDigitos < 3) //LEE LOS
DIGITOS INGRESADOS CON UN MÁXIMO DE TRES DIGITOS
{
numeroDeDigitos ++;
PIN_Tecleado += pulsacion;
Serial.print(pulsacion);
}
if (pulsacion == '*' && numeroDeDigitos == 0) //INGRESAR SIGNO NEGATIVO
{
numeroDeDigitos++;
pulsacion = '-';
PIN_Tecleado += pulsacion;
Serial.print(pulsacion);
}
if (pulsacion == '#' && numeroDeDigitos > 0)
{
numeroDeDigitos --;
PIN_Tecleado = PIN_Tecleado.substring(0, numeroDeDigitos);
Serial.println();
Serial.print("ttttt Ingrese J4: ");
Serial.print(PIN_Tecleado);
}
if (pulsacion == 'C')
{
numeroDeDigitos = 0;
PIN_Tecleado = "";
Serial.println();
Serial.print("ttttt Ingrese J4: ");
}
if (pulsacion == 'D')
{
Serial.println();
String text = PIN_Tecleado;
long value;
value = text.toInt();
Serial.print("ttttt J4: ");
DEBUG(value);////imprime value
J64 = value;
PIN_Tecleado = "";
Materia: Rev: Página
30 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
numeroDeDigitos = 0;
return; //VOLVER AL MENÚ PRINCIPAL
} ///pulsacionA4
}
}
} ///pulsacionA3
}
}
} ///pulsacionA2
}
}
}///pulsacionaA1
}
}
break;
case '0': //EDITAR VARIABLE "VEL" (tiempo para delay) - 4 digitos max
Serial.println("ttttt-- EDITAR DELAY --");
Serial.println("tttt Ingrese el tiempo deseado");
Serial.println("tttt # = Eliminar ultimo digito");
Serial.println("tttt C = Cancelar");
Serial.println("tttt D = Aceptar");
Serial.println();
Serial.print("tttt Ingrese Delay: ");
while (flag)
{
pulsacion = keypad.getKey();
if (pulsacion) //PREGUNTA SI SE HA PRESIONADO ALGUNA TECLA EN EL KEYPAD
{
if (pulsacion >= '0' && pulsacion <= '9' && numeroDeDigitos < 4)
{
numeroDeDigitos ++;
PIN_Tecleado += pulsacion;
Serial.print(pulsacion);
}
if (pulsacion == '#' && numeroDeDigitos > 0)
{
numeroDeDigitos --;
PIN_Tecleado = PIN_Tecleado.substring(0, numeroDeDigitos);
Serial.println();
Serial.print("tttt Ingrese Delay: ");
Serial.print(PIN_Tecleado);
}
if (pulsacion == 'C')
{
numeroDeDigitos = 0;
PIN_Tecleado = "";
Serial.println();
Serial.print("tttt Ingrese Delay: ");
}
if (pulsacion == 'D')
{
Serial.println();
Materia: Rev: Página
31 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
String text = PIN_Tecleado;
long value;
value = text.toInt();
Serial.print("tttt Delay: ");
DEBUG(value);////imprime value
vel = value;
PIN_Tecleado = "";
numeroDeDigitos = 0;
Serial.println();
return; //VOLVER AL MENÚ PRINCIPAL
}
}
}
break;
Serial.print(key);
quantity = quantity * 10 + key - '0';
break;
case 'C':
Serial.println();
flag = false;
break;
default:
break;
}
}
}
break;
case 'B': //EJECUCION DE RUTINA - se ejecuta indefinidamente hasta presionar tecla 'C' para salir al
menu anterior
Serial.println("nntttt EJECUTANDO RUTINAn");
delay(2000);
auxiliar = true;
if (auxiliar)
{
while (auxiliar)
{
key = keypad.getKey();
if (key == 'C')
{
return; //VOLVER AL MENÚ PRINCIPAL
}
//POSICION 1:
Serial.println("ntttt ---- POSICION 1 ----");
SJ1.write(J11);
SJ2.write(J12);
SJ3.write(J13);
SJ4.write(J14);
Serial.print("ttttt J1: "); //IMPRIME J1 EN MONITOR SERIAL
Serial.println(J11);
Serial.print("ttttt J2: "); //IMPRIME J2 EN MONITOR SERIAL
Serial.println(J12);
Serial.print("ttttt J3: "); //IMPRIME J3 EN MONITOR SERIAL
Serial.println(J13);
Serial.print("ttttt J4: "); //IMPRIME J4 EN MONITOR SERIAL
Materia: Rev: Página
32 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
Serial.println(J14);
delay(vel);
key = keypad.getKey();
if (key == 'C')
{
return; //VOLVER AL MENÚ PRINCIPAL
}
//POSICION 2:
Serial.println("ntttt ---- POSICION 2 ----");
SJ1.write(J21);
SJ2.write(J22);
SJ3.write(J23);
SJ4.write(J24);
Serial.print("ttttt J1: "); //IMPRIME J1 EN MONITOR SERIAL
Serial.println(J21);
Serial.print("ttttt J2: "); //IMPRIME J2 EN MONITOR SERIAL
Serial.println(J22);
Serial.print("ttttt J3: "); //IMPRIME J3 EN MONITOR SERIAL
Serial.println(J23);
Serial.print("ttttt J4: "); //IMPRIME J4 EN MONITOR SERIAL
Serial.println(J24);
delay(vel);
key = keypad.getKey();
if (key == 'C')
{
return; //VOLVER AL MENÚ PRINCIPAL
}
//POSICION 3:
Serial.println("ntttt ---- POSICION 3 ----");
SJ1.write(J31);
SJ2.write(J32);
SJ3.write(J33);
SJ4.write(J34);
Serial.print("ttttt J1: "); //IMPRIME J1 EN MONITOR SERIAL
Serial.println(J31);
Serial.print("ttttt J2: "); //IMPRIME J2 EN MONITOR SERIAL
Serial.println(J32);
Serial.print("ttttt J3: "); //IMPRIME J3 EN MONITOR SERIAL
Serial.println(J33);
Serial.print("ttttt J4: "); //IMPRIME J4 EN MONITOR SERIAL
Serial.println(J34);
delay(vel);
key = keypad.getKey();
if (key == 'C')
{
return; //VOLVER AL MENÚ PRINCIPAL
}
//POSICION 4:
Serial.println("ntttt ---- POSICION 4 ----");
SJ1.write(J41);
SJ2.write(J42);
SJ3.write(J43);
SJ4.write(J44);
Materia: Rev: Página
33 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
Serial.print("ttttt J1: "); //IMPRIME J1 EN MONITOR SERIAL
Serial.println(J41);
Serial.print("ttttt J2: "); //IMPRIME J2 EN MONITOR SERIAL
Serial.println(J42);
Serial.print("ttttt J3: "); //IMPRIME J3 EN MONITOR SERIAL
Serial.println(J43);
Serial.print("ttttt J4: "); //IMPRIME J4 EN MONITOR SERIAL
Serial.println(J44);
delay(vel);
key = keypad.getKey();
if (key == 'C')
{
return; //VOLVER AL MENÚ PRINCIPAL
}
//POSICION 5:
Serial.println("ntttt ---- POSICION 5 ----");
SJ1.write(J51);
SJ2.write(J52);
SJ3.write(J53);
SJ4.write(J54);
Serial.print("ttttt J1: "); //IMPRIME J1 EN MONITOR SERIAL
Serial.println(J51);
Serial.print("ttttt J2: "); //IMPRIME J2 EN MONITOR SERIAL
Serial.println(J52);
Serial.print("ttttt J3: "); //IMPRIME J3 EN MONITOR SERIAL
Serial.println(J53);
Serial.print("ttttt J4: "); //IMPRIME J4 EN MONITOR SERIAL
Serial.println(J54);
delay(vel);
key = keypad.getKey();
if (key == 'C')
{
return; //VOLVER AL MENÚ PRINCIPAL
}
//POSICION 6:
Serial.println("ntttt ---- POSICION 6 ----");
SJ1.write(J61);
SJ2.write(J62);
SJ3.write(J63);
SJ4.write(J64);
Serial.print("ttttt J1: "); //IMPRIME J1 EN MONITOR SERIAL
Serial.println(J61);
Serial.print("ttttt J2: "); //IMPRIME J2 EN MONITOR SERIAL
Serial.println(J62);
Serial.print("ttttt J3: "); //IMPRIME J3 EN MONITOR SERIAL
Serial.println(J63);
Serial.print("ttttt J4: "); //IMPRIME J4 EN MONITOR SERIAL
Serial.println(J64);
delay(vel);
key = keypad.getKey();
if (key == 'C')
{
return; //VOLVER AL MENÚ PRINCIPAL
}
}
Materia: Rev: Página
34 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
}
break;
Serial.print(key);
quantity = quantity * 10 + key - '0';
break;
case 'C':
Serial.println();
flag = false;
default:
break;
}
}
}
break;
case 'B': //MODO DE OPERACION MANUAL
Serial.println("nntttt MODO MANUAL SELECCIONADOnn");
Serial.println("tttt seleccione la J deseada");
Serial.println("ttttt1 = J1-");
Serial.println("ttttt3 = J1+");
Serial.println("ttttt4 = J2-");
Serial.println("ttttt6 = J2+");
Serial.println("ttttt7 = J3-");
Serial.println("ttttt9 = J3+");
Serial.println("ttttt* = J4-");
Serial.println("ttttt# = J4+nn");
flag = true;
while (flag)
{
key = keypad.getKey();
if (key)
{
switch (key)
{
case 'A': //DISMINUIR MOV
if (intervalo < 5)
{
intervalo = 1;
}
else
{
intervalo = intervalo - 5;
if (intervalo < 5)
{
intervalo = 1;
}
}
break;
case 'B': //AUMENTAR MOV
if (intervalo >= 30)
{
intervalo = 30;
}
Materia: Rev: Página
35 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
else
{
intervalo = intervalo + 5;
if (intervalo == 6)
{
intervalo = 5;
}
}
break;
case '1': //MOVER A J1 EN NEGATIVO
J1N = SJ1.read();
if ( J1N <= 0)
{
SJ1.write(0);
}
else
{
J1N = J1N - intervalo;
SJ1.write(J1N);
}
Serial.print("ttttt J1: ");
Serial.println(J1N);
break;
case '3': //MOVER A J1 EN POSITIVO
J1P = SJ1.read();
if ( J1N >= 160)
{
SJ1.write(160);
}
else
{
J1P = J1P + intervalo;
SJ1.write(J1P);
}
Serial.print("ttttt J1: ");
if (J1P >= 160)
{
Serial.println(90);
}
else
{
Serial.println(J1P);
}
break;
case '4': //MOVER A J2 EN NEGATIVO
J2N = SJ2.read();
if ( J2N <= 0)
{
SJ2.write(0);
}
else
{
J2N = J2N - intervalo;
SJ2.write(J2N);
Materia: Rev: Página
36 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
}
Serial.print("ttttt J2: ");
Serial.println(J2N);
break;
case '6': //MOVER A J2 EN POSITIVO
J2P = SJ2.read();
if ( J2N >= 180)
{
SJ2.write(180);
}
else
{
J2P = J2P + intervalo;
SJ2.write(J2P);
}
Serial.print("ttttt J2: ");
if (J2P >= 180)
{
Serial.println(180);
}
else
{
Serial.println(J2P);
}
break;
case '7': //MOVER A J3 EN NEGATIVO
J3N = SJ3.read();
if ( J3N <= 0)
{
SJ3.write(0);
}
else
{
J3N = J3N - intervalo;
SJ3.write(J3N);
}
Serial.print("ttttt J3: ");
Serial.println(J3N);
break;
case '9': //MOVER A J3 EN POSITIVO
J3P = SJ3.read();
if ( J3N >= 180)
{
SJ3.write(180);
}
else
{
J3P = J3P + intervalo;
SJ3.write(J3P);
}
Serial.print("ttttt J3: ");
if (J3P >= 180)
{
Serial.println(180);
}
Materia: Rev: Página
37 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
else
{
Serial.println(J3P);
}
break;
case '*': //MOVER A J4 EN NEGATIVO
J4N = SJ4.read();
if ( J4N <= 0)
{
SJ4.write(0);
}
else
{
J4N = J4N - intervalo;
SJ4.write(J4N);
}
Serial.print("ttttt J4: ");
Serial.println(J4N);
break;
case '#': //MOVER A J4 EN POSITIVO
J4P = SJ4.read();
if ( J4N >= 180)
{
SJ4.write(180);
}
else
{
J4P = J4P + intervalo;
SJ4.write(J4P);
}
Serial.print("ttttt J4: ");
if (J4P >= 180)
{
Serial.println(180);
}
else
{
Serial.println(J4P);
}
break;
Serial.print(key);
quantity = quantity * 10 + key - '0';
break;
case 'C':
Serial.println();
flag = false;
default:
break;
}
}
}
break;
Materia: Rev: Página
38 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
Serial.println(key);
option = key;
flag = false;
break;
default:
break;
}
}
}
}
Materia: Rev: Página
39 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
Diagramas:
A continuación, se muestran los planos correspondientes a cada una de las piezas utilizadas en el brazo
robot.
Materia: Rev: Página
40 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
Materia: Rev: Página
41 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
Materia: Rev: Página
42 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
Materia: Rev: Página
43 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
Materia: Rev: Página
44 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
Materia: Rev: Página
45 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
Materia: Rev: Página
46 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
Materia: Rev: Página
47 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
Materia: Rev: Página
48 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
A continuación, se muestra el diagrama eléctrico utilizado en este proyecto, así como el diseño de la
placa pcb utilizada.
Materia: Rev: Página
49 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
A continuación, se muestra el diagrama de flujo correspondiente a la programación utilizada.
Materia: Rev: Página
50 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
Materia: Rev: Página
51 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
Simulación en Robo DK:
Observaciones:
Un punto importante a remarcar es el de los sistemas de referencia del prototipo del brazo robot ya que
a partir de que se les asigne una orientación específica va a tomar su referencia, esto hay que
realizarlo con el algoritmo de Dennavit Hartenberg. También es muy importante tanto el diseño
mecánico, como el electrónico ya que a partir de estos se darán las limitantes para el brazo,
Materia: Rev: Página
52 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
Modelo matemático:
106
94.29
38.29
Materia: Rev: Página
53 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
Dennavit-Hartenberg:
Matriz final:
Para obtener las posiciones en x, y y z, son mediante las siguientes expresiones:
Posición en x:
d4*(cos(a3)*(cos(a2)*sin(a1)*sin(t1) + sin(a2)*cos(t1)*sin(t2) + cos(a1)*sin(a2)*cos(t2)*sin(t1)) +
sin(a3)*sin(t3)*(cos(t1)*cos(t2) - cos(a1)*sin(t1)*sin(t2)) + sin(a3)*cos(t3)*(cos(a2)*cos(t1)*sin(t2) -
sin(a1)*sin(a2)*sin(t1) + cos(a1)*cos(a2)*cos(t2)*sin(t1))) + l1*cos(t1) + d3*(cos(a2)*sin(a1)*sin(t1) +
sin(a2)*cos(t1)*sin(t2) + cos(a1)*sin(a2)*cos(t2)*sin(t1)) + l3*cos(t3)*(cos(t1)*cos(t2) -
cos(a1)*sin(t1)*sin(t2)) - l4*sin(t4)*(cos(a3)*sin(t3)*(cos(t1)*cos(t2) - cos(a1)*sin(t1)*sin(t2)) -
sin(a3)*(cos(a2)*sin(a1)*sin(t1) + sin(a2)*cos(t1)*sin(t2) + cos(a1)*sin(a2)*cos(t2)*sin(t1)) +
cos(a3)*cos(t3)*(cos(a2)*cos(t1)*sin(t2) - sin(a1)*sin(a2)*sin(t1) + cos(a1)*cos(a2)*cos(t2)*sin(t1))) +
l2*cos(t1)*cos(t2) + d2*sin(a1)*sin(t1) - l3*sin(t3)*(cos(a2)*cos(t1)*sin(t2) - sin(a1)*sin(a2)*sin(t1) +
cos(a1)*cos(a2)*cos(t2)*sin(t1)) - l4*cos(t4)*(sin(t3)*(cos(a2)*cos(t1)*sin(t2) - sin(a1)*sin(a2)*sin(t1) +
cos(a1)*cos(a2)*cos(t2)*sin(t1)) - cos(t3)*(cos(t1)*cos(t2) - cos(a1)*sin(t1)*sin(t2))) -
l2*cos(a1)*sin(t1)*sin(t2)
Posición en y:
d4*(sin(a3)*sin(t3)*(cos(t2)*sin(t1) + cos(a1)*cos(t1)*sin(t2)) - cos(a3)*(cos(a2)*sin(a1)*cos(t1) -
sin(a2)*sin(t1)*sin(t2) + cos(a1)*sin(a2)*cos(t1)*cos(t2)) + sin(a3)*cos(t3)*(sin(a1)*sin(a2)*cos(t1) +
cos(a2)*sin(t1)*sin(t2) - cos(a1)*cos(a2)*cos(t1)*cos(t2))) - d3*(cos(a2)*sin(a1)*cos(t1) -
sin(a2)*sin(t1)*sin(t2) + cos(a1)*sin(a2)*cos(t1)*cos(t2)) + l1*sin(t1) + l3*cos(t3)*(cos(t2)*sin(t1) +
cos(a1)*cos(t1)*sin(t2)) - l4*sin(t4)*(sin(a3)*(cos(a2)*sin(a1)*cos(t1) - sin(a2)*sin(t1)*sin(t2) +
cos(a1)*sin(a2)*cos(t1)*cos(t2)) + cos(a3)*sin(t3)*(cos(t2)*sin(t1) + cos(a1)*cos(t1)*sin(t2)) +
cos(a3)*cos(t3)*(sin(a1)*sin(a2)*cos(t1) + cos(a2)*sin(t1)*sin(t2) - cos(a1)*cos(a2)*cos(t1)*cos(t2))) -
d2*sin(a1)*cos(t1) - l3*sin(t3)*(sin(a1)*sin(a2)*cos(t1) + cos(a2)*sin(t1)*sin(t2) -
Materia: Rev: Página
54 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
cos(a1)*cos(a2)*cos(t1)*cos(t2)) + l2*cos(t2)*sin(t1) - l4*cos(t4)*(sin(t3)*(sin(a1)*sin(a2)*cos(t1) +
cos(a2)*sin(t1)*sin(t2) - cos(a1)*cos(a2)*cos(t1)*cos(t2)) - cos(t3)*(cos(t2)*sin(t1) +
cos(a1)*cos(t1)*sin(t2))) + l2*cos(a1)*cos(t1)*sin(t2)
Posición en z:
d1 + d4*(cos(a3)*(cos(a1)*cos(a2) - sin(a1)*sin(a2)*cos(t2)) - sin(a3)*cos(t3)*(cos(a1)*sin(a2) +
cos(a2)*sin(a1)*cos(t2)) + sin(a1)*sin(a3)*sin(t2)*sin(t3)) + d2*cos(a1) + d3*(cos(a1)*cos(a2) -
sin(a1)*sin(a2)*cos(t2)) + l4*sin(t4)*(sin(a3)*(cos(a1)*cos(a2) - sin(a1)*sin(a2)*cos(t2)) +
cos(a3)*cos(t3)*(cos(a1)*sin(a2) + cos(a2)*sin(a1)*cos(t2)) - cos(a3)*sin(a1)*sin(t2)*sin(t3)) +
l4*cos(t4)*(sin(t3)*(cos(a1)*sin(a2) + cos(a2)*sin(a1)*cos(t2)) + sin(a1)*cos(t3)*sin(t2)) +
l2*sin(a1)*sin(t2) + l3*sin(t3)*(cos(a1)*sin(a2) + cos(a2)*sin(a1)*cos(t2)) + l3*sin(a1)*cos(t3)*sin(t2)
Jacobiano:
Para esto debemos de derivar parcialmente las expresiones anteriores con respecto a sus ángulos t1,
2, t3 y t4:
Velocidad angular en x:
d4*(sin(a3)*cos(t3)*(cos(t1)*cos(t2) - cos(a1)*sin(t1)*sin(t2)) - sin(a3)*sin(t3)*(cos(a2)*cos(t1)*sin(t2)
- sin(a1)*sin(a2)*sin(t1) + cos(a1)*cos(a2)*cos(t2)*sin(t1))) - d4*(sin(a3)*sin(t3)*(cos(t2)*sin(t1) +
cos(a1)*cos(t1)*sin(t2)) - cos(a3)*(cos(a2)*sin(a1)*cos(t1) - sin(a2)*sin(t1)*sin(t2) +
cos(a1)*sin(a2)*cos(t1)*cos(t2)) + sin(a3)*cos(t3)*(sin(a1)*sin(a2)*cos(t1) + cos(a2)*sin(t1)*sin(t2) -
cos(a1)*cos(a2)*cos(t1)*cos(t2))) + d3*(cos(a2)*sin(a1)*cos(t1) - sin(a2)*sin(t1)*sin(t2) +
cos(a1)*sin(a2)*cos(t1)*cos(t2)) - l1*sin(t1) + d4*(cos(a3)*(sin(a2)*cos(t1)*cos(t2) -
cos(a1)*sin(a2)*sin(t1)*sin(t2)) - sin(a3)*sin(t3)*(cos(t1)*sin(t2) + cos(a1)*cos(t2)*sin(t1)) +
sin(a3)*cos(t3)*(cos(a2)*cos(t1)*cos(t2) - cos(a1)*cos(a2)*sin(t1)*sin(t2))) +
d3*(sin(a2)*cos(t1)*cos(t2) - cos(a1)*sin(a2)*sin(t1)*sin(t2)) - l3*cos(t3)*(cos(t1)*sin(t2) +
cos(a1)*cos(t2)*sin(t1)) - l3*cos(t3)*(cos(t2)*sin(t1) + cos(a1)*cos(t1)*sin(t2)) -
l3*sin(t3)*(cos(t1)*cos(t2) - cos(a1)*sin(t1)*sin(t2)) + l4*sin(t4)*(sin(a3)*(cos(a2)*sin(a1)*cos(t1) -
sin(a2)*sin(t1)*sin(t2) + cos(a1)*sin(a2)*cos(t1)*cos(t2)) + cos(a3)*sin(t3)*(cos(t2)*sin(t1) +
cos(a1)*cos(t1)*sin(t2)) + cos(a3)*cos(t3)*(sin(a1)*sin(a2)*cos(t1) + cos(a2)*sin(t1)*sin(t2) -
cos(a1)*cos(a2)*cos(t1)*cos(t2))) - l4*sin(t4)*(cos(a3)*cos(t3)*(cos(t1)*cos(t2) -
cos(a1)*sin(t1)*sin(t2)) - cos(a3)*sin(t3)*(cos(a2)*cos(t1)*sin(t2) - sin(a1)*sin(a2)*sin(t1) +
cos(a1)*cos(a2)*cos(t2)*sin(t1))) - l4*cos(t4)*(cos(a3)*sin(t3)*(cos(t1)*cos(t2) -
cos(a1)*sin(t1)*sin(t2)) - sin(a3)*(cos(a2)*sin(a1)*sin(t1) + sin(a2)*cos(t1)*sin(t2) +
cos(a1)*sin(a2)*cos(t2)*sin(t1)) + cos(a3)*cos(t3)*(cos(a2)*cos(t1)*sin(t2) - sin(a1)*sin(a2)*sin(t1) +
cos(a1)*cos(a2)*cos(t2)*sin(t1))) + d2*sin(a1)*cos(t1) - l3*cos(t3)*(cos(a2)*cos(t1)*sin(t2) -
sin(a1)*sin(a2)*sin(t1) + cos(a1)*cos(a2)*cos(t2)*sin(t1)) + l3*sin(t3)*(sin(a1)*sin(a2)*cos(t1) +
cos(a2)*sin(t1)*sin(t2) - cos(a1)*cos(a2)*cos(t1)*cos(t2)) - l2*cos(t1)*sin(t2) - l2*cos(t2)*sin(t1) -
Materia: Rev: Página
55 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
l3*sin(t3)*(cos(a2)*cos(t1)*cos(t2) - cos(a1)*cos(a2)*sin(t1)*sin(t2)) +
l4*sin(t4)*(sin(a3)*(sin(a2)*cos(t1)*cos(t2) - cos(a1)*sin(a2)*sin(t1)*sin(t2)) +
cos(a3)*sin(t3)*(cos(t1)*sin(t2) + cos(a1)*cos(t2)*sin(t1)) - cos(a3)*cos(t3)*(cos(a2)*cos(t1)*cos(t2) -
cos(a1)*cos(a2)*sin(t1)*sin(t2))) + l4*cos(t4)*(sin(t3)*(sin(a1)*sin(a2)*cos(t1) + cos(a2)*sin(t1)*sin(t2)
- cos(a1)*cos(a2)*cos(t1)*cos(t2)) - cos(t3)*(cos(t2)*sin(t1) + cos(a1)*cos(t1)*sin(t2))) -
l4*cos(t4)*(cos(t3)*(cos(a2)*cos(t1)*sin(t2) - sin(a1)*sin(a2)*sin(t1) + cos(a1)*cos(a2)*cos(t2)*sin(t1))
+ sin(t3)*(cos(t1)*cos(t2) - cos(a1)*sin(t1)*sin(t2))) + l4*sin(t4)*(sin(t3)*(cos(a2)*cos(t1)*sin(t2) -
sin(a1)*sin(a2)*sin(t1) + cos(a1)*cos(a2)*cos(t2)*sin(t1)) - cos(t3)*(cos(t1)*cos(t2) -
cos(a1)*sin(t1)*sin(t2))) - l4*cos(t4)*(sin(t3)*(cos(a2)*cos(t1)*cos(t2) - cos(a1)*cos(a2)*sin(t1)*sin(t2))
+ cos(t3)*(cos(t1)*sin(t2) + cos(a1)*cos(t2)*sin(t1))) - l2*cos(a1)*cos(t1)*sin(t2) -
l2*cos(a1)*cos(t2)*sin(t1)
Velocidad angular en y:
d4*(sin(a3)*cos(t3)*(cos(t2)*sin(t1) + cos(a1)*cos(t1)*sin(t2)) - sin(a3)*sin(t3)*(sin(a1)*sin(a2)*cos(t1)
+ cos(a2)*sin(t1)*sin(t2) - cos(a1)*cos(a2)*cos(t1)*cos(t2))) + d4*(cos(a3)*(cos(a2)*sin(a1)*sin(t1) +
sin(a2)*cos(t1)*sin(t2) + cos(a1)*sin(a2)*cos(t2)*sin(t1)) + sin(a3)*sin(t3)*(cos(t1)*cos(t2) -
cos(a1)*sin(t1)*sin(t2)) + sin(a3)*cos(t3)*(cos(a2)*cos(t1)*sin(t2) - sin(a1)*sin(a2)*sin(t1) +
cos(a1)*cos(a2)*cos(t2)*sin(t1))) + l1*cos(t1) + d3*(cos(a2)*sin(a1)*sin(t1) + sin(a2)*cos(t1)*sin(t2) +
cos(a1)*sin(a2)*cos(t2)*sin(t1)) + d4*(cos(a3)*(sin(a2)*cos(t2)*sin(t1) +
cos(a1)*sin(a2)*cos(t1)*sin(t2)) - sin(a3)*sin(t3)*(sin(t1)*sin(t2) - cos(a1)*cos(t1)*cos(t2)) +
sin(a3)*cos(t3)*(cos(a2)*cos(t2)*sin(t1) + cos(a1)*cos(a2)*cos(t1)*sin(t2))) +
d3*(sin(a2)*cos(t2)*sin(t1) + cos(a1)*sin(a2)*cos(t1)*sin(t2)) + l3*cos(t3)*(cos(t1)*cos(t2) -
cos(a1)*sin(t1)*sin(t2)) - l3*cos(t3)*(sin(t1)*sin(t2) - cos(a1)*cos(t1)*cos(t2)) -
l3*sin(t3)*(cos(t2)*sin(t1) + cos(a1)*cos(t1)*sin(t2)) - l4*cos(t4)*(sin(a3)*(cos(a2)*sin(a1)*cos(t1) -
sin(a2)*sin(t1)*sin(t2) + cos(a1)*sin(a2)*cos(t1)*cos(t2)) + cos(a3)*sin(t3)*(cos(t2)*sin(t1) +
cos(a1)*cos(t1)*sin(t2)) + cos(a3)*cos(t3)*(sin(a1)*sin(a2)*cos(t1) + cos(a2)*sin(t1)*sin(t2) -
cos(a1)*cos(a2)*cos(t1)*cos(t2))) - l4*sin(t4)*(cos(a3)*cos(t3)*(cos(t2)*sin(t1) +
cos(a1)*cos(t1)*sin(t2)) - cos(a3)*sin(t3)*(sin(a1)*sin(a2)*cos(t1) + cos(a2)*sin(t1)*sin(t2) -
cos(a1)*cos(a2)*cos(t1)*cos(t2))) - l3*cos(t3)*(sin(a1)*sin(a2)*cos(t1) + cos(a2)*sin(t1)*sin(t2) -
cos(a1)*cos(a2)*cos(t1)*cos(t2)) - l4*sin(t4)*(cos(a3)*sin(t3)*(cos(t1)*cos(t2) - cos(a1)*sin(t1)*sin(t2))
- sin(a3)*(cos(a2)*sin(a1)*sin(t1) + sin(a2)*cos(t1)*sin(t2) + cos(a1)*sin(a2)*cos(t2)*sin(t1)) +
cos(a3)*cos(t3)*(cos(a2)*cos(t1)*sin(t2) - sin(a1)*sin(a2)*sin(t1) + cos(a1)*cos(a2)*cos(t2)*sin(t1))) +
l2*cos(t1)*cos(t2) + d2*sin(a1)*sin(t1) - l3*sin(t3)*(cos(a2)*cos(t1)*sin(t2) - sin(a1)*sin(a2)*sin(t1) +
cos(a1)*cos(a2)*cos(t2)*sin(t1)) - l2*sin(t1)*sin(t2) - l3*sin(t3)*(cos(a2)*cos(t2)*sin(t1) +
cos(a1)*cos(a2)*cos(t1)*sin(t2)) + l4*sin(t4)*(sin(a3)*(sin(a2)*cos(t2)*sin(t1) +
cos(a1)*sin(a2)*cos(t1)*sin(t2)) + cos(a3)*sin(t3)*(sin(t1)*sin(t2) - cos(a1)*cos(t1)*cos(t2)) -
Materia: Rev: Página
56 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
cos(a3)*cos(t3)*(cos(a2)*cos(t2)*sin(t1) + cos(a1)*cos(a2)*cos(t1)*sin(t2))) -
l4*cos(t4)*(sin(t3)*(cos(t2)*sin(t1) + cos(a1)*cos(t1)*sin(t2)) + cos(t3)*(sin(a1)*sin(a2)*cos(t1) +
cos(a2)*sin(t1)*sin(t2) - cos(a1)*cos(a2)*cos(t1)*cos(t2))) + l4*sin(t4)*(sin(t3)*(sin(a1)*sin(a2)*cos(t1)
+ cos(a2)*sin(t1)*sin(t2) - cos(a1)*cos(a2)*cos(t1)*cos(t2)) - cos(t3)*(cos(t2)*sin(t1) +
cos(a1)*cos(t1)*sin(t2))) - l4*cos(t4)*(sin(t3)*(cos(a2)*cos(t1)*sin(t2) - sin(a1)*sin(a2)*sin(t1) +
cos(a1)*cos(a2)*cos(t2)*sin(t1)) - cos(t3)*(cos(t1)*cos(t2) - cos(a1)*sin(t1)*sin(t2))) -
l4*cos(t4)*(sin(t3)*(cos(a2)*cos(t2)*sin(t1) + cos(a1)*cos(a2)*cos(t1)*sin(t2)) + cos(t3)*(sin(t1)*sin(t2)
- cos(a1)*cos(t1)*cos(t2))) + l2*cos(a1)*cos(t1)*cos(t2) - l2*cos(a1)*sin(t1)*sin(t2)
Velocidad angular en Z:
d4*(cos(a3)*sin(a1)*sin(a2)*sin(t2) + sin(a1)*sin(a3)*cos(t2)*sin(t3) +
cos(a2)*sin(a1)*sin(a3)*cos(t3)*sin(t2)) + d4*(sin(a3)*sin(t3)*(cos(a1)*sin(a2) +
cos(a2)*sin(a1)*cos(t2)) + sin(a1)*sin(a3)*cos(t3)*sin(t2)) - l4*sin(t4)*(cos(a3)*sin(a1)*cos(t2)*sin(t3) -
sin(a1)*sin(a2)*sin(a3)*sin(t2) + cos(a2)*cos(a3)*sin(a1)*cos(t3)*sin(t2)) +
l4*cos(t4)*(sin(a3)*(cos(a1)*cos(a2) - sin(a1)*sin(a2)*cos(t2)) + cos(a3)*cos(t3)*(cos(a1)*sin(a2) +
cos(a2)*sin(a1)*cos(t2)) - cos(a3)*sin(a1)*sin(t2)*sin(t3)) + l4*cos(t4)*(cos(t3)*(cos(a1)*sin(a2) +
cos(a2)*sin(a1)*cos(t2)) - sin(a1)*sin(t2)*sin(t3)) - l4*sin(t4)*(sin(t3)*(cos(a1)*sin(a2) +
cos(a2)*sin(a1)*cos(t2)) + sin(a1)*cos(t3)*sin(t2)) + l2*sin(a1)*cos(t2) +
l4*cos(t4)*(sin(a1)*cos(t2)*cos(t3) - cos(a2)*sin(a1)*sin(t2)*sin(t3)) + l3*cos(t3)*(cos(a1)*sin(a2) +
cos(a2)*sin(a1)*cos(t2)) - l4*sin(t4)*(cos(a3)*sin(t3)*(cos(a1)*sin(a2) + cos(a2)*sin(a1)*cos(t2)) +
cos(a3)*sin(a1)*cos(t3)*sin(t2)) + l3*sin(a1)*cos(t2)*cos(t3) + d3*sin(a1)*sin(a2)*sin(t2) -
l3*sin(a1)*sin(t2)*sin(t3) - l3*cos(a2)*sin(a1)*sin(t2)*sin(t3)
Ahora a estos valores la aplicamos producto cruz con el vector normal [0,0,1]:
Velocidad lineal en x:
d4*(sin(a3)*cos(t3)*(cos(t2)*sin(t1) + cos(a1)*cos(t1)*sin(t2)) - sin(a3)*sin(t3)*(sin(a1)*sin(a2)*cos(t1)
+ cos(a2)*sin(t1)*sin(t2) - cos(a1)*cos(a2)*cos(t1)*cos(t2))) + d4*(cos(a3)*(cos(a2)*sin(a1)*sin(t1) +
sin(a2)*cos(t1)*sin(t2) + cos(a1)*sin(a2)*cos(t2)*sin(t1)) + sin(a3)*sin(t3)*(cos(t1)*cos(t2) -
cos(a1)*sin(t1)*sin(t2)) + sin(a3)*cos(t3)*(cos(a2)*cos(t1)*sin(t2) - sin(a1)*sin(a2)*sin(t1) +
cos(a1)*cos(a2)*cos(t2)*sin(t1))) + l1*cos(t1) + d3*(cos(a2)*sin(a1)*sin(t1) + sin(a2)*cos(t1)*sin(t2) +
cos(a1)*sin(a2)*cos(t2)*sin(t1)) + d4*(cos(a3)*(sin(a2)*cos(t2)*sin(t1) +
cos(a1)*sin(a2)*cos(t1)*sin(t2)) - sin(a3)*sin(t3)*(sin(t1)*sin(t2) - cos(a1)*cos(t1)*cos(t2)) +
sin(a3)*cos(t3)*(cos(a2)*cos(t2)*sin(t1) + cos(a1)*cos(a2)*cos(t1)*sin(t2))) +
d3*(sin(a2)*cos(t2)*sin(t1) + cos(a1)*sin(a2)*cos(t1)*sin(t2)) + l3*cos(t3)*(cos(t1)*cos(t2) -
cos(a1)*sin(t1)*sin(t2)) - l3*cos(t3)*(sin(t1)*sin(t2) - cos(a1)*cos(t1)*cos(t2)) -
l3*sin(t3)*(cos(t2)*sin(t1) + cos(a1)*cos(t1)*sin(t2)) - l4*cos(t4)*(sin(a3)*(cos(a2)*sin(a1)*cos(t1) -
Materia: Rev: Página
57 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
sin(a2)*sin(t1)*sin(t2) + cos(a1)*sin(a2)*cos(t1)*cos(t2)) + cos(a3)*sin(t3)*(cos(t2)*sin(t1) +
cos(a1)*cos(t1)*sin(t2)) + cos(a3)*cos(t3)*(sin(a1)*sin(a2)*cos(t1) + cos(a2)*sin(t1)*sin(t2) -
cos(a1)*cos(a2)*cos(t1)*cos(t2))) - l4*sin(t4)*(cos(a3)*cos(t3)*(cos(t2)*sin(t1) +
cos(a1)*cos(t1)*sin(t2)) - cos(a3)*sin(t3)*(sin(a1)*sin(a2)*cos(t1) + cos(a2)*sin(t1)*sin(t2) -
cos(a1)*cos(a2)*cos(t1)*cos(t2))) - l3*cos(t3)*(sin(a1)*sin(a2)*cos(t1) + cos(a2)*sin(t1)*sin(t2) -
cos(a1)*cos(a2)*cos(t1)*cos(t2)) - l4*sin(t4)*(cos(a3)*sin(t3)*(cos(t1)*cos(t2) - cos(a1)*sin(t1)*sin(t2))
- sin(a3)*(cos(a2)*sin(a1)*sin(t1) + sin(a2)*cos(t1)*sin(t2) + cos(a1)*sin(a2)*cos(t2)*sin(t1)) +
cos(a3)*cos(t3)*(cos(a2)*cos(t1)*sin(t2) - sin(a1)*sin(a2)*sin(t1) + cos(a1)*cos(a2)*cos(t2)*sin(t1))) +
l2*cos(t1)*cos(t2) + d2*sin(a1)*sin(t1) - l3*sin(t3)*(cos(a2)*cos(t1)*sin(t2) - sin(a1)*sin(a2)*sin(t1) +
cos(a1)*cos(a2)*cos(t2)*sin(t1)) - l2*sin(t1)*sin(t2) - l3*sin(t3)*(cos(a2)*cos(t2)*sin(t1) +
cos(a1)*cos(a2)*cos(t1)*sin(t2)) + l4*sin(t4)*(sin(a3)*(sin(a2)*cos(t2)*sin(t1) +
cos(a1)*sin(a2)*cos(t1)*sin(t2)) + cos(a3)*sin(t3)*(sin(t1)*sin(t2) - cos(a1)*cos(t1)*cos(t2)) -
cos(a3)*cos(t3)*(cos(a2)*cos(t2)*sin(t1) + cos(a1)*cos(a2)*cos(t1)*sin(t2))) -
l4*cos(t4)*(sin(t3)*(cos(t2)*sin(t1) + cos(a1)*cos(t1)*sin(t2)) + cos(t3)*(sin(a1)*sin(a2)*cos(t1) +
cos(a2)*sin(t1)*sin(t2) - cos(a1)*cos(a2)*cos(t1)*cos(t2))) + l4*sin(t4)*(sin(t3)*(sin(a1)*sin(a2)*cos(t1)
+ cos(a2)*sin(t1)*sin(t2) - cos(a1)*cos(a2)*cos(t1)*cos(t2)) - cos(t3)*(cos(t2)*sin(t1) +
cos(a1)*cos(t1)*sin(t2))) - l4*cos(t4)*(sin(t3)*(cos(a2)*cos(t1)*sin(t2) - sin(a1)*sin(a2)*sin(t1) +
cos(a1)*cos(a2)*cos(t2)*sin(t1)) - cos(t3)*(cos(t1)*cos(t2) - cos(a1)*sin(t1)*sin(t2))) -
l4*cos(t4)*(sin(t3)*(cos(a2)*cos(t2)*sin(t1) + cos(a1)*cos(a2)*cos(t1)*sin(t2)) + cos(t3)*(sin(t1)*sin(t2)
- cos(a1)*cos(t1)*cos(t2))) + l2*cos(a1)*cos(t1)*cos(t2) - l2*cos(a1)*sin(t1)*sin(t2)
Velocidad lineal en y:
d4*(sin(a3)*sin(t3)*(cos(t2)*sin(t1) + cos(a1)*cos(t1)*sin(t2)) - cos(a3)*(cos(a2)*sin(a1)*cos(t1) -
sin(a2)*sin(t1)*sin(t2) + cos(a1)*sin(a2)*cos(t1)*cos(t2)) + sin(a3)*cos(t3)*(sin(a1)*sin(a2)*cos(t1) +
cos(a2)*sin(t1)*sin(t2) - cos(a1)*cos(a2)*cos(t1)*cos(t2))) - d4*(sin(a3)*cos(t3)*(cos(t1)*cos(t2) -
cos(a1)*sin(t1)*sin(t2)) - sin(a3)*sin(t3)*(cos(a2)*cos(t1)*sin(t2) - sin(a1)*sin(a2)*sin(t1) +
cos(a1)*cos(a2)*cos(t2)*sin(t1))) - d3*(cos(a2)*sin(a1)*cos(t1) - sin(a2)*sin(t1)*sin(t2) +
cos(a1)*sin(a2)*cos(t1)*cos(t2)) + l1*sin(t1) - d4*(cos(a3)*(sin(a2)*cos(t1)*cos(t2) -
cos(a1)*sin(a2)*sin(t1)*sin(t2)) - sin(a3)*sin(t3)*(cos(t1)*sin(t2) + cos(a1)*cos(t2)*sin(t1)) +
sin(a3)*cos(t3)*(cos(a2)*cos(t1)*cos(t2) - cos(a1)*cos(a2)*sin(t1)*sin(t2))) -
d3*(sin(a2)*cos(t1)*cos(t2) - cos(a1)*sin(a2)*sin(t1)*sin(t2)) + l3*cos(t3)*(cos(t1)*sin(t2) +
cos(a1)*cos(t2)*sin(t1)) + l3*cos(t3)*(cos(t2)*sin(t1) + cos(a1)*cos(t1)*sin(t2)) +
l3*sin(t3)*(cos(t1)*cos(t2) - cos(a1)*sin(t1)*sin(t2)) - l4*sin(t4)*(sin(a3)*(cos(a2)*sin(a1)*cos(t1) -
sin(a2)*sin(t1)*sin(t2) + cos(a1)*sin(a2)*cos(t1)*cos(t2)) + cos(a3)*sin(t3)*(cos(t2)*sin(t1) +
cos(a1)*cos(t1)*sin(t2)) + cos(a3)*cos(t3)*(sin(a1)*sin(a2)*cos(t1) + cos(a2)*sin(t1)*sin(t2) -
cos(a1)*cos(a2)*cos(t1)*cos(t2))) + l4*sin(t4)*(cos(a3)*cos(t3)*(cos(t1)*cos(t2) -
Materia: Rev: Página
58 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
cos(a1)*sin(t1)*sin(t2)) - cos(a3)*sin(t3)*(cos(a2)*cos(t1)*sin(t2) - sin(a1)*sin(a2)*sin(t1) +
cos(a1)*cos(a2)*cos(t2)*sin(t1))) + l4*cos(t4)*(cos(a3)*sin(t3)*(cos(t1)*cos(t2) -
cos(a1)*sin(t1)*sin(t2)) - sin(a3)*(cos(a2)*sin(a1)*sin(t1) + sin(a2)*cos(t1)*sin(t2) +
cos(a1)*sin(a2)*cos(t2)*sin(t1)) + cos(a3)*cos(t3)*(cos(a2)*cos(t1)*sin(t2) - sin(a1)*sin(a2)*sin(t1) +
cos(a1)*cos(a2)*cos(t2)*sin(t1))) - d2*sin(a1)*cos(t1) + l3*cos(t3)*(cos(a2)*cos(t1)*sin(t2) -
sin(a1)*sin(a2)*sin(t1) + cos(a1)*cos(a2)*cos(t2)*sin(t1)) - l3*sin(t3)*(sin(a1)*sin(a2)*cos(t1) +
cos(a2)*sin(t1)*sin(t2) - cos(a1)*cos(a2)*cos(t1)*cos(t2)) + l2*cos(t1)*sin(t2) + l2*cos(t2)*sin(t1) +
l3*sin(t3)*(cos(a2)*cos(t1)*cos(t2) - cos(a1)*cos(a2)*sin(t1)*sin(t2)) -
l4*sin(t4)*(sin(a3)*(sin(a2)*cos(t1)*cos(t2) - cos(a1)*sin(a2)*sin(t1)*sin(t2)) +
cos(a3)*sin(t3)*(cos(t1)*sin(t2) + cos(a1)*cos(t2)*sin(t1)) - cos(a3)*cos(t3)*(cos(a2)*cos(t1)*cos(t2) -
cos(a1)*cos(a2)*sin(t1)*sin(t2))) - l4*cos(t4)*(sin(t3)*(sin(a1)*sin(a2)*cos(t1) + cos(a2)*sin(t1)*sin(t2)
- cos(a1)*cos(a2)*cos(t1)*cos(t2)) - cos(t3)*(cos(t2)*sin(t1) + cos(a1)*cos(t1)*sin(t2))) +
l4*cos(t4)*(cos(t3)*(cos(a2)*cos(t1)*sin(t2) - sin(a1)*sin(a2)*sin(t1) + cos(a1)*cos(a2)*cos(t2)*sin(t1))
+ sin(t3)*(cos(t1)*cos(t2) - cos(a1)*sin(t1)*sin(t2))) - l4*sin(t4)*(sin(t3)*(cos(a2)*cos(t1)*sin(t2) -
sin(a1)*sin(a2)*sin(t1) + cos(a1)*cos(a2)*cos(t2)*sin(t1)) - cos(t3)*(cos(t1)*cos(t2) -
cos(a1)*sin(t1)*sin(t2))) + l4*cos(t4)*(sin(t3)*(cos(a2)*cos(t1)*cos(t2) -
cos(a1)*cos(a2)*sin(t1)*sin(t2)) + cos(t3)*(cos(t1)*sin(t2) + cos(a1)*cos(t2)*sin(t1))) +
l2*cos(a1)*cos(t1)*sin(t2) + l2*cos(a1)*cos(t2)*sin(t1)
Velocidad lineal en z:
0
Materia: Rev: Página
59 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
Resultados:
Materia: Rev: Página
60 de 60Dinámica de Robots 0
Número de práctica
Práctica Final
Profesor: M. C. Mario Wenso Coutiño Morales
Conclusiones:
Por lo tanto, hemos aprendido el funcionamiento del prototipo de brazo robot, el cual implica la
integración de conocimientos de distintas áreas como lo son: la mecánica, electrónica, matemáticas,
computación, entre otras, para que se obtuvieran los resultados de dicho proyecto, al igual que se
obtuvieron los conocimientos de la dinámica del brazo, desde orientar sus sistemas de referencias de
los cuales dan lugar a su desplazamiento, hasta obtener las velocidades tanto,lineales, como
angulares del brazo.
Referencias:
Cinemática y dinámica de robots manipuladores, Roger Miranda Colorado, Editorial: Omega, Primera
edición.

Más contenido relacionado

Similar a Reporte final-dinamica-de-robots

Tecladomatricial
TecladomatricialTecladomatricial
Tecladomatricialsystemgil
 
Ejemplos c
Ejemplos cEjemplos c
Ejemplos cCarlos
 
Pen test: El arte de la guerra
Pen test: El arte de la guerraPen test: El arte de la guerra
Pen test: El arte de la guerraFutura Networks
 
El_pensamiento_computacional_y_programacion_.pptx
El_pensamiento_computacional_y_programacion_.pptxEl_pensamiento_computacional_y_programacion_.pptx
El_pensamiento_computacional_y_programacion_.pptxKarinaLeticiaKovvali
 
Taller de programación clase #2
Taller de programación   clase #2Taller de programación   clase #2
Taller de programación clase #2Carlos Posada
 
Taller de programación clase #2
Taller de programación   clase #2Taller de programación   clase #2
Taller de programación clase #2Juan Cardona
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxJose Manuel Mansilla Carrasco
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxJose Manuel Mansilla Carrasco
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxfreddymadriz
 
Laboratorio 02 redes
Laboratorio 02 redesLaboratorio 02 redes
Laboratorio 02 redesstriken00
 
Plataformas tecnologicas introduccion visual studio clase 1 - 4
Plataformas tecnologicas introduccion visual studio   clase 1 - 4Plataformas tecnologicas introduccion visual studio   clase 1 - 4
Plataformas tecnologicas introduccion visual studio clase 1 - 4Richard Eliseo Mendoza Gafaro
 
Creacion de shellcodes para Exploits en Linux/x86
Creacion de shellcodes para Exploits en Linux/x86 Creacion de shellcodes para Exploits en Linux/x86
Creacion de shellcodes para Exploits en Linux/x86 Internet Security Auditors
 
Clase 02 gestion de puertos - directivas
Clase 02   gestion de puertos - directivasClase 02   gestion de puertos - directivas
Clase 02 gestion de puertos - directivasalmidon_pcb
 

Similar a Reporte final-dinamica-de-robots (20)

Micro2 tema 1
Micro2 tema 1Micro2 tema 1
Micro2 tema 1
 
Programacion 2014 matlab
Programacion  2014 matlabProgramacion  2014 matlab
Programacion 2014 matlab
 
Semana 1 Estructuras de Control en Java
Semana 1   Estructuras de Control en JavaSemana 1   Estructuras de Control en Java
Semana 1 Estructuras de Control en Java
 
Tecladomatricial
TecladomatricialTecladomatricial
Tecladomatricial
 
Aejemplosc
AejemploscAejemplosc
Aejemplosc
 
Ejemplos c
Ejemplos cEjemplos c
Ejemplos c
 
Pen test: El arte de la guerra
Pen test: El arte de la guerraPen test: El arte de la guerra
Pen test: El arte de la guerra
 
pic16f877-con-mikroc.pdf
pic16f877-con-mikroc.pdfpic16f877-con-mikroc.pdf
pic16f877-con-mikroc.pdf
 
El_pensamiento_computacional_y_programacion_.pptx
El_pensamiento_computacional_y_programacion_.pptxEl_pensamiento_computacional_y_programacion_.pptx
El_pensamiento_computacional_y_programacion_.pptx
 
Taller de programación clase #2
Taller de programación   clase #2Taller de programación   clase #2
Taller de programación clase #2
 
Taller de programación clase #2
Taller de programación   clase #2Taller de programación   clase #2
Taller de programación clase #2
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xx
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xx
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xx
 
Laboratorio 02 redes
Laboratorio 02 redesLaboratorio 02 redes
Laboratorio 02 redes
 
Plataformas tecnologicas introduccion visual studio clase 1 - 4
Plataformas tecnologicas introduccion visual studio   clase 1 - 4Plataformas tecnologicas introduccion visual studio   clase 1 - 4
Plataformas tecnologicas introduccion visual studio clase 1 - 4
 
Evelin alejandra sanchez ayala t.i 1
Evelin alejandra sanchez ayala t.i 1Evelin alejandra sanchez ayala t.i 1
Evelin alejandra sanchez ayala t.i 1
 
Creacion de shellcodes para Exploits en Linux/x86
Creacion de shellcodes para Exploits en Linux/x86 Creacion de shellcodes para Exploits en Linux/x86
Creacion de shellcodes para Exploits en Linux/x86
 
Decompiladores
DecompiladoresDecompiladores
Decompiladores
 
Clase 02 gestion de puertos - directivas
Clase 02   gestion de puertos - directivasClase 02   gestion de puertos - directivas
Clase 02 gestion de puertos - directivas
 

Último

POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 

Último (13)

POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 

Reporte final-dinamica-de-robots

  • 1. Materia: Rev: Página 1 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales Cuatrimestre: 9° Grupo: A Corte: 3 Fecha: 13 de diciembre de 2019 Nombre de la practica: Manipulador articulado de 4 Grados de Libertad Objetivo general: Los alumnos deberán desarrollar la práctica en base a los conocimientos adquiridos en esta materia, así como en la materia de cinemática de robots. Los alumnos desarrollaran un brazo robótico tipo articulado de 4 grados de libertad en base. Objetivos específicos: • Diseño mecánico • Diseño eléctrico • Etapa de potencia • Simulación en Software RoboDK • Diseño matemático • Denavit – Hartenberg • Jacobiano Integrantes: (En orden alfabético comenzando por apellido paterno, matricula) Alfaro Náfate Héctor Avilio 161165 Ceiba Palacios Salvador Alejandro 171018 López López Lizandro Joaquín 163023 Morales Mandujano Edgar Alexis 163026 Salinas Villatoro Jorge Erik 163547 Materiales: • 4 Servomotores SG-5010 • Keypad 4x4 • Diodo 1n4007 • Led 5mm • Jumpers • 1 Resistencia 220Ω • 10 resistencias 10k Ω • Protoboard • Cable USB Serial Arduino Instrumentos y equipo: • Software GNU Octave • Software Arduino IDE • Software CAD SolidWorks • Software Eagle • Fuente DC 5V 30A
  • 2. Materia: Rev: Página 2 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales • 18 Resistencias 1k Ω • 6 Transistores tip122 • 6 pc817 • 6 DIP-4 • 2 Borneras-2 • Placa Fenólica • 3 Piezas 3D • 8 Tornillos • Base de Madera • 25 Arandelas • 4 Roscas tipo nuez Metodología: INSERTAR LA INFORMACION EN ESTE ORDEN • Teoría sobre cinemática del manipulador • Teoría sobre dinámica del manipulador • Diseños CAD y ensamble *FALTA PLANO DE ENSAMLE • Diseño eléctrico • Denavit - Hartenberg • Jacobiano • Programación Desarrollo: A continuación, se muestra el código utilizado para la manipulación del brazo robot en este proyecto. //UNIERSIDAD POLITÉCNICA DE CHIAPAS //INGENIERÍA MECATRÓNICA //DINÁMICA DE ROBOTS //DECLARACION DE LIBRERIAS #define DEBUG(a) Serial.println(a); // #include <Servo.h> //LIBRERIA PARA USAR LOS SERVOMOTORES #include <Keypad.h> //LIRERIA PARA USAR EL KEYPAD //DECLARACION DE CONSTANTES int intervalo = 1; //MODIFICA EL INTERVALO DE MOVIMIENTO EN EL MODO MANUAL const byte filas = 4; //DECLARACION DE LA CANTIDAD DE FILAS QUE TIENE EL KEYPAD const byte columnas = 4; //DECLARACION DE LA CANTIDAD DE COLUMNAS QUE TIENE EL KEYPAD byte PinesFilas[filas] = { 13, 12, 11, 10 }; //DECLARA LOS PINES USADOS PARA LAS FILAS DEL KEYPAD
  • 3. Materia: Rev: Página 3 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales byte PinesColumnas[columnas] = { 9, 8, 7, 6 }; //DECLARA LOS PINES USADOS PARA LAS COLUMNAS DEL KEYPAD byte numeroDeDigitos = 0; //CANTIDAD DE DÍGITOS PARA INGRESAR //DECLARACION DE VARIABLES bool flag; //VARIALE BANDERA USADA EN LOS CICLOS WHILE bool auxiliar; //VARIABLE BANDERA USADA EN LOS CICLOS WHILE int vel = 100; //VARIABLE QUE MODIFICA EL DELAY EN LA RUTINA int quantity; char pulsacion; //GUARDA LAS PULSACIONES DEL KEYPAD char key, option; //LEE LAS GUARDA LAS PULSACIONES DEL KEYPAD String PIN_Tecleado = ""; //ALMACENA LOS DIGITOS PARA LAS POSICIONES //DECLARACION DE JOTAS int J1 = 0; int J2 = 0; int J3 = 0; int J4 = 0; //DELARACION DE MOTORES PARA MODO MANUAL int J1P = 0; int J1N = 0; int J2P = 0; int J2N = 0; int J3P = 0; int J3N = 0; int J4P = 0; int J4N = 0; //VARIABLES USADAS PARA ALMACENAR LAS POSICIONES int J11, J12, J13, J14; int J21, J22, J23, J24; int J31, J32, J33, J34; int J41, J42, J43, J44; int J51, J52, J53, J54; int J61, J62, J63, J64; //DECLARACION DE LA MATRIZ DEL KEYPAD char keys[filas][columnas] = { { '1', '2', '3', 'A' }, { '4', '5', '6', 'B' }, { '7', '8', '9', 'C' }, { '*', '0', '#', 'D' } }; //DECLARACION DEL KEYPAD Keypad keypad = Keypad(makeKeymap(keys), PinesFilas, PinesColumnas, filas, columnas); //DECLARACIÓN DE SERVOS Servo SJ1; Servo SJ2; Servo SJ3; Servo SJ4; void setup() { Serial.begin(9600);
  • 4. Materia: Rev: Página 4 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales //ARREMDAMIENTO DE SERVOS SJ1.attach(2); SJ2.attach(3); SJ3.attach(4); SJ4.attach(5); //PRESENTACION Serial.println("ttttUNIVERSIDAD POLITECNICA DE CHIAPAS"); Serial.println("tttt INGENIERIA MECATRONICA"); Serial.println("tttttDINAMICA DE ROBOTS"); Serial.println("tttttt9° A"); Serial.println("============================================================================ ======================"); //POSICIÓN HOME SJ1.write(81); SJ2.write(96); SJ3.write(93); SJ4.write(91); } void loop() { //POSICIÓN HOME SJ1.write(81); SJ2.write(96); SJ3.write(93); SJ4.write(91); quantity = 0; //MENÚ PRINCIPAL Serial.println(); Serial.println("--------------------------------------------------------------------------------------------------"); Serial.println("tttt -- MODO DE OPERACION --"); Serial.println("ttttSeleccione un modo de operacion:"); Serial.println("tttttA = Modo Automatico"); Serial.println("tttttB = Modo Manual"); Serial.println("--------------------------------------------------------------------------------------------------"); flag = true; while (flag) { key = keypad.getKey(); if (key) { switch (key) { case 'A': //MODO AUTOMÁTICO Serial.println(); Serial.println("nttttMODO AUTOMATICO SELECCIONADOn"); Serial.println(); delay(500); //MENÚ DEL MODO AUTOMÁTICO Serial.println("tttt -- MODO AUTOMATICO --"); Serial.println("tttt Seleccione la opcion deseada");
  • 5. Materia: Rev: Página 5 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales Serial.println("tttt A = Crear Rutina de Operacion"); Serial.println("tttt B = Ejecutar Rutina de Operacion"); Serial.println("tttt C = Menu Principal"); flag = true; while (flag) { key = keypad.getKey(); if (key) { switch (key) { case 'A': //MENÚ PARA LA CREACIÓN DE LA RUTINA Serial.println("n"); Serial.println("tttt-- CREAR RUTINA DE OPERACION --"); Serial.println("tttt Seleccione la opcion deseada"); Serial.println("ttttt1 = Posicion 1"); Serial.println("ttttt2 = Posicion 2"); Serial.println("ttttt3 = Posicion 3"); Serial.println("ttttt4 = Posicion 4"); Serial.println("ttttt5 = Posicion 5"); Serial.println("ttttt6 = Posicion 6"); Serial.println("ttttt0 = Tiempo de espera"); Serial.println(); Serial.println(); flag = true; while (flag) { key = keypad.getKey(); if (key) { switch (key) { case '1': //EDITAR POSICION 1 Serial.println("tttt -- EDITAR POSICION 1 --"); Serial.println("tttt Ingrese la Posicion deseada"); Serial.println("tttt * = Insertar (-) "); Serial.println("tttt # = Eliminar ultimo digito"); Serial.println("tttt C = Cancelar"); Serial.println("tttt D = Aceptar"); Serial.println(); Serial.print("ttttt Ingrese J1: "); while (flag) { pulsacion = keypad.getKey(); if (pulsacion) //PREGUNTA SI SE HA PRESIONADO ALGUNA TECLA EN EL KEYPAD { if (pulsacion >= '0' && pulsacion <= '9' && numeroDeDigitos < 3) //LEE LOS DIGITOS INGRESADOS CON UN MÁXIMO DE TRES DIGITOS { numeroDeDigitos ++; PIN_Tecleado += pulsacion; Serial.print(pulsacion); }
  • 6. Materia: Rev: Página 6 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales if (pulsacion == '*' && numeroDeDigitos == 0) //INGRESAR SIGNO NEGATIVO //INGRESAR SIGNO NEGATIVO { numeroDeDigitos++; pulsacion = '-'; PIN_Tecleado += pulsacion; Serial.print(pulsacion); } if (pulsacion == '#' && numeroDeDigitos > 0) //BORRAR EL ÚLTIMO DÍGITO INGRESADO { numeroDeDigitos --; PIN_Tecleado = PIN_Tecleado.substring(0, numeroDeDigitos); Serial.println(); Serial.print("ttttt Ingrese J1: "); Serial.print(PIN_Tecleado); } if (pulsacion == 'C') //BORRAR TODOS LOS DÍGITOS INGRESADOS { numeroDeDigitos = 0; PIN_Tecleado = ""; Serial.println(); Serial.print("ttttt Ingrese J1: "); } if (pulsacion == 'D') //GUARDAR DÍGITOS INGRESADOS EN UNA VARIABLE { Serial.println(); String text = PIN_Tecleado; long value; value = text.toInt(); Serial.print("ttttt J1: "); DEBUG(value);////imprime value J11 = value; PIN_Tecleado = ""; numeroDeDigitos = 0; Serial.println(); Serial.print("ttttt Ingrese J2: "); while (flag) { pulsacion = keypad.getKey(); if (pulsacion) //PREGUNTA SI SE HA PRESIONADO ALGUNA TECLA EN EL KEYPAD { if (pulsacion >= '0' && pulsacion <= '9' && numeroDeDigitos < 3) //LEE LOS DIGITOS INGRESADOS CON UN MÁXIMO DE TRES DIGITOS { numeroDeDigitos ++; PIN_Tecleado += pulsacion; Serial.print(pulsacion); } if (pulsacion == '*' && numeroDeDigitos == 0) //INGRESAR SIGNO NEGATIVO { numeroDeDigitos++; pulsacion = '-';
  • 7. Materia: Rev: Página 7 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales PIN_Tecleado += pulsacion; Serial.print(pulsacion); } if (pulsacion == '#' && numeroDeDigitos > 0) { numeroDeDigitos --; PIN_Tecleado = PIN_Tecleado.substring(0, numeroDeDigitos); Serial.println(); Serial.print("ttttt Ingrese J2: "); Serial.print(PIN_Tecleado); } if (pulsacion == 'C') { numeroDeDigitos = 0; PIN_Tecleado = ""; Serial.println(); Serial.print("ttttt Ingrese J2: "); } if (pulsacion == 'D') { Serial.println(); String text = PIN_Tecleado; long value; value = text.toInt(); Serial.print("ttttt J2: "); DEBUG(value);////imprime value J12 = value; PIN_Tecleado = ""; numeroDeDigitos = 0; Serial.println(); Serial.print("ttttt Ingrese J3: "); while (flag) { pulsacion = keypad.getKey(); if (pulsacion) //PREGUNTA SI SE HA PRESIONADO ALGUNA TECLA EN EL KEYPAD { if (pulsacion >= '0' && pulsacion <= '9' && numeroDeDigitos < 3) //LEE LOS DIGITOS INGRESADOS CON UN MÁXIMO DE TRES DIGITOS { numeroDeDigitos ++; PIN_Tecleado += pulsacion; Serial.print(pulsacion); } if (pulsacion == '*' && numeroDeDigitos == 0) //INGRESAR SIGNO NEGATIVO { numeroDeDigitos++; pulsacion = '-'; PIN_Tecleado += pulsacion; Serial.print(pulsacion); }
  • 8. Materia: Rev: Página 8 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales if (pulsacion == '#' && numeroDeDigitos > 0) { numeroDeDigitos --; PIN_Tecleado = PIN_Tecleado.substring(0, numeroDeDigitos); Serial.println(); Serial.print("ttttt Ingrese J3: "); Serial.print(PIN_Tecleado); } if (pulsacion == 'C') { numeroDeDigitos = 0; PIN_Tecleado = ""; Serial.println(); Serial.print("ttttt Ingrese J3: "); } if (pulsacion == 'D') { Serial.println(); String text = PIN_Tecleado; long value; value = text.toInt(); Serial.print("ttttt J3: "); DEBUG(value);////imprime value J13 = value; PIN_Tecleado = ""; numeroDeDigitos = 0; Serial.println(); Serial.print("ttttt Ingrese J4: "); while (flag) { pulsacion = keypad.getKey(); if (pulsacion) //PREGUNTA SI SE HA PRESIONADO ALGUNA TECLA EN EL KEYPAD { if (pulsacion >= '0' && pulsacion <= '9' && numeroDeDigitos < 3) //LEE LOS DIGITOS INGRESADOS CON UN MÁXIMO DE TRES DIGITOS { numeroDeDigitos ++; PIN_Tecleado += pulsacion; Serial.print(pulsacion); } if (pulsacion == '*' && numeroDeDigitos == 0) //INGRESAR SIGNO NEGATIVO { numeroDeDigitos++; pulsacion = '-'; PIN_Tecleado += pulsacion; Serial.print(pulsacion); } if (pulsacion == '#' && numeroDeDigitos > 0) { numeroDeDigitos --;
  • 9. Materia: Rev: Página 9 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales PIN_Tecleado = PIN_Tecleado.substring(0, numeroDeDigitos); Serial.println(); Serial.print("ttttt Ingrese J4: "); Serial.print(PIN_Tecleado); } if (pulsacion == 'C') { numeroDeDigitos = 0; PIN_Tecleado = ""; Serial.println(); Serial.print("ttttt Ingrese J4: "); } if (pulsacion == 'D') { Serial.println(); String text = PIN_Tecleado; long value; value = text.toInt(); Serial.print("ttttt J4: "); DEBUG(value);////imprime value J14 = value; PIN_Tecleado = ""; numeroDeDigitos = 0; return; //VOLVER AL MENÚ PRINCIPAL } ///pulsacionA4 } } } ///pulsacionA3 } } } ///pulsacionA2 } } }///pulsacionaA1 } } break; case '2': //EDITAR POSICION 2 Serial.println("tttt -- EDITAR POSICION 2 --"); Serial.println("tttt Ingrese la Posicion deseada"); Serial.println("tttt * = Insertar (-) "); Serial.println("tttt # = Eliminar ultimo digito"); Serial.println("tttt C = Cancelar"); Serial.println("tttt D = Aceptar"); Serial.println(); Serial.print("ttttt Ingrese J1: "); while (flag) { pulsacion = keypad.getKey(); if (pulsacion) //PREGUNTA SI SE HA PRESIONADO ALGUNA TECLA EN EL KEYPAD {
  • 10. Materia: Rev: Página 10 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales if (pulsacion >= '0' && pulsacion <= '9' && numeroDeDigitos < 3) //LEE LOS DIGITOS INGRESADOS CON UN MÁXIMO DE TRES DIGITOS { numeroDeDigitos ++; PIN_Tecleado += pulsacion; Serial.print(pulsacion); } if (pulsacion == '*' && numeroDeDigitos == 0) //INGRESAR SIGNO NEGATIVO { numeroDeDigitos++; pulsacion = '-'; PIN_Tecleado += pulsacion; Serial.print(pulsacion); } if (pulsacion == '#' && numeroDeDigitos > 0) { numeroDeDigitos --; PIN_Tecleado = PIN_Tecleado.substring(0, numeroDeDigitos); Serial.println(); Serial.print("ttttt Ingrese J1: "); Serial.print(PIN_Tecleado); } if (pulsacion == 'C') { numeroDeDigitos = 0; PIN_Tecleado = ""; Serial.println(); Serial.print("ttttt Ingrese J1: "); } if (pulsacion == 'D') { Serial.println(); String text = PIN_Tecleado; long value; value = text.toInt(); Serial.print("ttttt J1: "); DEBUG(value);////imprime value J21 = value; PIN_Tecleado = ""; numeroDeDigitos = 0; Serial.println(); Serial.print("ttttt Ingrese J2: "); while (flag) { pulsacion = keypad.getKey(); if (pulsacion) //PREGUNTA SI SE HA PRESIONADO ALGUNA TECLA EN EL KEYPAD { if (pulsacion >= '0' && pulsacion <= '9' && numeroDeDigitos < 3) //LEE LOS DIGITOS INGRESADOS CON UN MÁXIMO DE TRES DIGITOS { numeroDeDigitos ++;
  • 11. Materia: Rev: Página 11 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales PIN_Tecleado += pulsacion; Serial.print(pulsacion); } if (pulsacion == '*' && numeroDeDigitos == 0) //INGRESAR SIGNO NEGATIVO { numeroDeDigitos++; pulsacion = '-'; PIN_Tecleado += pulsacion; Serial.print(pulsacion); } if (pulsacion == '#' && numeroDeDigitos > 0) { numeroDeDigitos --; PIN_Tecleado = PIN_Tecleado.substring(0, numeroDeDigitos); Serial.println(); Serial.print("ttttt Ingrese J2: "); Serial.print(PIN_Tecleado); } if (pulsacion == 'C') { numeroDeDigitos = 0; PIN_Tecleado = ""; Serial.println(); Serial.print("ttttt Ingrese J2: "); } if (pulsacion == 'D') { Serial.println(); String text = PIN_Tecleado; long value; value = text.toInt(); Serial.print("ttttt J2: "); DEBUG(value);////imprime value J22 = value; PIN_Tecleado = ""; numeroDeDigitos = 0; Serial.println(); Serial.print("ttttt Ingrese J3: "); while (flag) { pulsacion = keypad.getKey(); if (pulsacion) //PREGUNTA SI SE HA PRESIONADO ALGUNA TECLA EN EL KEYPAD { if (pulsacion >= '0' && pulsacion <= '9' && numeroDeDigitos < 3) //LEE LOS DIGITOS INGRESADOS CON UN MÁXIMO DE TRES DIGITOS { numeroDeDigitos ++; PIN_Tecleado += pulsacion; Serial.print(pulsacion); }
  • 12. Materia: Rev: Página 12 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales if (pulsacion == '*' && numeroDeDigitos == 0) //INGRESAR SIGNO NEGATIVO { numeroDeDigitos++; pulsacion = '-'; PIN_Tecleado += pulsacion; Serial.print(pulsacion); } if (pulsacion == '#' && numeroDeDigitos > 0) { numeroDeDigitos --; PIN_Tecleado = PIN_Tecleado.substring(0, numeroDeDigitos); Serial.println(); Serial.print("ttttt Ingrese J3: "); Serial.print(PIN_Tecleado); } if (pulsacion == 'C') { numeroDeDigitos = 0; PIN_Tecleado = ""; Serial.println(); Serial.print("ttttt Ingrese J3: "); } if (pulsacion == 'D') { Serial.println(); String text = PIN_Tecleado; long value; value = text.toInt(); Serial.print("ttttt J3: "); DEBUG(value);////imprime value J23 = value; PIN_Tecleado = ""; numeroDeDigitos = 0; Serial.println(); Serial.print("ttttt Ingrese J4: "); while (flag) { pulsacion = keypad.getKey(); if (pulsacion) //PREGUNTA SI SE HA PRESIONADO ALGUNA TECLA EN EL KEYPAD { if (pulsacion >= '0' && pulsacion <= '9' && numeroDeDigitos < 3) //LEE LOS DIGITOS INGRESADOS CON UN MÁXIMO DE TRES DIGITOS { numeroDeDigitos ++; PIN_Tecleado += pulsacion; Serial.print(pulsacion); } if (pulsacion == '*' && numeroDeDigitos == 0) //INGRESAR SIGNO NEGATIVO { numeroDeDigitos++; pulsacion = '-';
  • 13. Materia: Rev: Página 13 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales PIN_Tecleado += pulsacion; Serial.print(pulsacion); } if (pulsacion == '#' && numeroDeDigitos > 0) { numeroDeDigitos --; PIN_Tecleado = PIN_Tecleado.substring(0, numeroDeDigitos); Serial.println(); Serial.print("ttttt Ingrese J4: "); Serial.print(PIN_Tecleado); } if (pulsacion == 'C') { numeroDeDigitos = 0; PIN_Tecleado = ""; Serial.println(); Serial.print("ttttt Ingrese J4: "); } if (pulsacion == 'D') { Serial.println(); String text = PIN_Tecleado; long value; value = text.toInt(); Serial.print("ttttt J4: "); DEBUG(value);////imprime value J24 = value; PIN_Tecleado = ""; numeroDeDigitos = 0; return; //VOLVER AL MENÚ PRINCIPAL } ///pulsacionA4 } } } ///pulsacionA3 } } } ///pulsacionA2 } } }///pulsacionaA1 } } break; case '3': //EDITAR POSICION 3 Serial.println("tttt -- EDITAR POSICION 3 --"); Serial.println("tttt Ingrese la Posicion deseada"); Serial.println("tttt * = Insertar (-) "); Serial.println("tttt # = Eliminar ultimo digito"); Serial.println("tttt C = Cancelar"); Serial.println("tttt D = Aceptar"); Serial.println(); Serial.print("ttttt Ingrese J1: "); while (flag)
  • 14. Materia: Rev: Página 14 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales { pulsacion = keypad.getKey(); if (pulsacion) //PREGUNTA SI SE HA PRESIONADO ALGUNA TECLA EN EL KEYPAD { if (pulsacion >= '0' && pulsacion <= '9' && numeroDeDigitos < 3) //LEE LOS DIGITOS INGRESADOS CON UN MÁXIMO DE TRES DIGITOS { numeroDeDigitos ++; PIN_Tecleado += pulsacion; Serial.print(pulsacion); } if (pulsacion == '*' && numeroDeDigitos == 0) //INGRESAR SIGNO NEGATIVO { numeroDeDigitos++; pulsacion = '-'; PIN_Tecleado += pulsacion; Serial.print(pulsacion); } if (pulsacion == '#' && numeroDeDigitos > 0) { numeroDeDigitos --; PIN_Tecleado = PIN_Tecleado.substring(0, numeroDeDigitos); Serial.println(); Serial.print("ttttt Ingrese J1: "); Serial.print(PIN_Tecleado); } if (pulsacion == 'C') { numeroDeDigitos = 0; PIN_Tecleado = ""; Serial.println(); Serial.print("ttttt Ingrese J1: "); } if (pulsacion == 'D') { Serial.println(); String text = PIN_Tecleado; long value; value = text.toInt(); Serial.print("ttttt J1: "); DEBUG(value);////imprime value J31 = value; PIN_Tecleado = ""; numeroDeDigitos = 0; Serial.println(); Serial.print("ttttt Ingrese J2: "); while (flag) { pulsacion = keypad.getKey(); if (pulsacion) //PREGUNTA SI SE HA PRESIONADO ALGUNA TECLA EN EL KEYPAD
  • 15. Materia: Rev: Página 15 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales { if (pulsacion >= '0' && pulsacion <= '9' && numeroDeDigitos < 3) //LEE LOS DIGITOS INGRESADOS CON UN MÁXIMO DE TRES DIGITOS { numeroDeDigitos ++; PIN_Tecleado += pulsacion; Serial.print(pulsacion); } if (pulsacion == '*' && numeroDeDigitos == 0) //INGRESAR SIGNO NEGATIVO { numeroDeDigitos++; pulsacion = '-'; PIN_Tecleado += pulsacion; Serial.print(pulsacion); } if (pulsacion == '#' && numeroDeDigitos > 0) { numeroDeDigitos --; PIN_Tecleado = PIN_Tecleado.substring(0, numeroDeDigitos); Serial.println(); Serial.print("ttttt Ingrese J2: "); Serial.print(PIN_Tecleado); } if (pulsacion == 'C') { numeroDeDigitos = 0; PIN_Tecleado = ""; Serial.println(); Serial.print("ttttt Ingrese J2: "); } if (pulsacion == 'D') { Serial.println(); String text = PIN_Tecleado; long value; value = text.toInt(); Serial.print("ttttt J2: "); DEBUG(value);////imprime value J32 = value; PIN_Tecleado = ""; numeroDeDigitos = 0; Serial.println(); Serial.print("ttttt Ingrese J3: "); while (flag) { pulsacion = keypad.getKey(); if (pulsacion) //PREGUNTA SI SE HA PRESIONADO ALGUNA TECLA EN EL KEYPAD { if (pulsacion >= '0' && pulsacion <= '9' && numeroDeDigitos < 3) //LEE LOS DIGITOS INGRESADOS CON UN MÁXIMO DE TRES DIGITOS
  • 16. Materia: Rev: Página 16 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales { numeroDeDigitos ++; PIN_Tecleado += pulsacion; Serial.print(pulsacion); } if (pulsacion == '*' && numeroDeDigitos == 0) //INGRESAR SIGNO NEGATIVO { numeroDeDigitos++; pulsacion = '-'; PIN_Tecleado += pulsacion; Serial.print(pulsacion); } if (pulsacion == '#' && numeroDeDigitos > 0) { numeroDeDigitos --; PIN_Tecleado = PIN_Tecleado.substring(0, numeroDeDigitos); Serial.println(); Serial.print("ttttt Ingrese J3: "); Serial.print(PIN_Tecleado); } if (pulsacion == 'C') { numeroDeDigitos = 0; PIN_Tecleado = ""; Serial.println(); Serial.print("ttttt Ingrese J3: "); } if (pulsacion == 'D') { Serial.println(); String text = PIN_Tecleado; long value; value = text.toInt(); Serial.print("ttttt J3: "); DEBUG(value);////imprime value J33 = value; PIN_Tecleado = ""; numeroDeDigitos = 0; Serial.println(); Serial.print("ttttt Ingrese J4: "); while (flag) { pulsacion = keypad.getKey(); if (pulsacion) //PREGUNTA SI SE HA PRESIONADO ALGUNA TECLA EN EL KEYPAD { if (pulsacion >= '0' && pulsacion <= '9' && numeroDeDigitos < 3) //LEE LOS DIGITOS INGRESADOS CON UN MÁXIMO DE TRES DIGITOS { numeroDeDigitos ++; PIN_Tecleado += pulsacion;
  • 17. Materia: Rev: Página 17 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales Serial.print(pulsacion); } if (pulsacion == '*' && numeroDeDigitos == 0) //INGRESAR SIGNO NEGATIVO { numeroDeDigitos++; pulsacion = '-'; PIN_Tecleado += pulsacion; Serial.print(pulsacion); } if (pulsacion == '#' && numeroDeDigitos > 0) { numeroDeDigitos --; PIN_Tecleado = PIN_Tecleado.substring(0, numeroDeDigitos); Serial.println(); Serial.print("ttttt Ingrese J4: "); Serial.print(PIN_Tecleado); } if (pulsacion == 'C') { numeroDeDigitos = 0; PIN_Tecleado = ""; Serial.println(); Serial.print("ttttt Ingrese J4: "); } if (pulsacion == 'D') { Serial.println(); String text = PIN_Tecleado; long value; value = text.toInt(); Serial.print("ttttt J4: "); DEBUG(value);////imprime value J34 = value; PIN_Tecleado = ""; numeroDeDigitos = 0; return; //VOLVER AL MENÚ PRINCIPAL } ///pulsacionA4 } } } ///pulsacionA3 } } } ///pulsacionA2 } } }///pulsacionaA1 } } break; case '4': //EDITAR POSICION 4 Serial.println("tttt -- EDITAR POSICION 4 --"); Serial.println("tttt Ingrese la Posicion deseada"); Serial.println("tttt * = Insertar (-) ");
  • 18. Materia: Rev: Página 18 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales Serial.println("tttt # = Eliminar ultimo digito"); Serial.println("tttt C = Cancelar"); Serial.println("tttt D = Aceptar"); Serial.println(); Serial.print("ttttt Ingrese J1: "); while (flag) { pulsacion = keypad.getKey(); if (pulsacion) //PREGUNTA SI SE HA PRESIONADO ALGUNA TECLA EN EL KEYPAD { if (pulsacion >= '0' && pulsacion <= '9' && numeroDeDigitos < 3) //LEE LOS DIGITOS INGRESADOS CON UN MÁXIMO DE TRES DIGITOS { numeroDeDigitos ++; PIN_Tecleado += pulsacion; Serial.print(pulsacion); } if (pulsacion == '*' && numeroDeDigitos == 0) //INGRESAR SIGNO NEGATIVO { numeroDeDigitos++; pulsacion = '-'; PIN_Tecleado += pulsacion; Serial.print(pulsacion); } if (pulsacion == '#' && numeroDeDigitos > 0) { numeroDeDigitos --; PIN_Tecleado = PIN_Tecleado.substring(0, numeroDeDigitos); Serial.println(); Serial.print("ttttt Ingrese J1: "); Serial.print(PIN_Tecleado); } if (pulsacion == 'C') { numeroDeDigitos = 0; PIN_Tecleado = ""; Serial.println(); Serial.print("ttttt Ingrese J1: "); } if (pulsacion == 'D') { Serial.println(); String text = PIN_Tecleado; long value; value = text.toInt(); Serial.print("ttttt J1: "); DEBUG(value);////imprime value J41 = value; PIN_Tecleado = ""; numeroDeDigitos = 0;
  • 19. Materia: Rev: Página 19 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales Serial.println(); Serial.print("ttttt Ingrese J2: "); while (flag) { pulsacion = keypad.getKey(); if (pulsacion) //PREGUNTA SI SE HA PRESIONADO ALGUNA TECLA EN EL KEYPAD { if (pulsacion >= '0' && pulsacion <= '9' && numeroDeDigitos < 3) //LEE LOS DIGITOS INGRESADOS CON UN MÁXIMO DE TRES DIGITOS { numeroDeDigitos ++; PIN_Tecleado += pulsacion; Serial.print(pulsacion); } if (pulsacion == '*' && numeroDeDigitos == 0) //INGRESAR SIGNO NEGATIVO { numeroDeDigitos++; pulsacion = '-'; PIN_Tecleado += pulsacion; Serial.print(pulsacion); } if (pulsacion == '#' && numeroDeDigitos > 0) { numeroDeDigitos --; PIN_Tecleado = PIN_Tecleado.substring(0, numeroDeDigitos); Serial.println(); Serial.print("ttttt Ingrese J2: "); Serial.print(PIN_Tecleado); } if (pulsacion == 'C') { numeroDeDigitos = 0; PIN_Tecleado = ""; Serial.println(); Serial.print("ttttt Ingrese J2: "); } if (pulsacion == 'D') { Serial.println(); String text = PIN_Tecleado; long value; value = text.toInt(); Serial.print("ttttt J2: "); DEBUG(value);////imprime value J42 = value; PIN_Tecleado = ""; numeroDeDigitos = 0; Serial.println(); Serial.print("ttttt Ingrese J3: "); while (flag) {
  • 20. Materia: Rev: Página 20 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales pulsacion = keypad.getKey(); if (pulsacion) //PREGUNTA SI SE HA PRESIONADO ALGUNA TECLA EN EL KEYPAD { if (pulsacion >= '0' && pulsacion <= '9' && numeroDeDigitos < 3) //LEE LOS DIGITOS INGRESADOS CON UN MÁXIMO DE TRES DIGITOS { numeroDeDigitos ++; PIN_Tecleado += pulsacion; Serial.print(pulsacion); } if (pulsacion == '*' && numeroDeDigitos == 0) //INGRESAR SIGNO NEGATIVO { numeroDeDigitos++; pulsacion = '-'; PIN_Tecleado += pulsacion; Serial.print(pulsacion); } if (pulsacion == '#' && numeroDeDigitos > 0) { numeroDeDigitos --; PIN_Tecleado = PIN_Tecleado.substring(0, numeroDeDigitos); Serial.println(); Serial.print("ttttt Ingrese J3: "); Serial.print(PIN_Tecleado); } if (pulsacion == 'C') { numeroDeDigitos = 0; PIN_Tecleado = ""; Serial.println(); Serial.print("ttttt Ingrese J3: "); } if (pulsacion == 'D') { Serial.println(); String text = PIN_Tecleado; long value; value = text.toInt(); Serial.print("ttttt J3: "); DEBUG(value);////imprime value J43 = value; PIN_Tecleado = ""; numeroDeDigitos = 0; Serial.println(); Serial.print("ttttt Ingrese J4: "); while (flag) { pulsacion = keypad.getKey(); if (pulsacion) //PREGUNTA SI SE HA PRESIONADO ALGUNA TECLA EN EL KEYPAD
  • 21. Materia: Rev: Página 21 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales { if (pulsacion >= '0' && pulsacion <= '9' && numeroDeDigitos < 3) //LEE LOS DIGITOS INGRESADOS CON UN MÁXIMO DE TRES DIGITOS { numeroDeDigitos ++; PIN_Tecleado += pulsacion; Serial.print(pulsacion); } if (pulsacion == '*' && numeroDeDigitos == 0) //INGRESAR SIGNO NEGATIVO { numeroDeDigitos++; pulsacion = '-'; PIN_Tecleado += pulsacion; Serial.print(pulsacion); } if (pulsacion == '#' && numeroDeDigitos > 0) { numeroDeDigitos --; PIN_Tecleado = PIN_Tecleado.substring(0, numeroDeDigitos); Serial.println(); Serial.print("ttttt Ingrese J4: "); Serial.print(PIN_Tecleado); } if (pulsacion == 'C') { numeroDeDigitos = 0; PIN_Tecleado = ""; Serial.println(); Serial.print("ttttt Ingrese J4: "); } if (pulsacion == 'D') { Serial.println(); String text = PIN_Tecleado; long value; value = text.toInt(); Serial.print("ttttt J4: "); DEBUG(value);////imprime value J44 = value; PIN_Tecleado = ""; numeroDeDigitos = 0; return; //VOLVER AL MENÚ PRINCIPAL } ///pulsacionA4 } } } ///pulsacionA3 } } } ///pulsacionA2 } } }///pulsacionaA1 }
  • 22. Materia: Rev: Página 22 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales } break; case '5': //EDITAR POSICION 5 Serial.println("tttt -- EDITAR POSICION 5 --"); Serial.println("tttt Ingrese la Posicion deseada"); Serial.println("tttt * = Insertar (-) "); Serial.println("tttt # = Eliminar ultimo digito"); Serial.println("tttt C = Cancelar"); Serial.println("tttt D = Aceptar"); Serial.println(); Serial.print("ttttt Ingrese J1: "); while (flag) { pulsacion = keypad.getKey(); if (pulsacion) //PREGUNTA SI SE HA PRESIONADO ALGUNA TECLA EN EL KEYPAD { if (pulsacion >= '0' && pulsacion <= '9' && numeroDeDigitos < 3) //LEE LOS DIGITOS INGRESADOS CON UN MÁXIMO DE TRES DIGITOS { numeroDeDigitos ++; PIN_Tecleado += pulsacion; Serial.print(pulsacion); } if (pulsacion == '*' && numeroDeDigitos == 0) //INGRESAR SIGNO NEGATIVO { numeroDeDigitos++; pulsacion = '-'; PIN_Tecleado += pulsacion; Serial.print(pulsacion); } if (pulsacion == '#' && numeroDeDigitos > 0) { numeroDeDigitos --; PIN_Tecleado = PIN_Tecleado.substring(0, numeroDeDigitos); Serial.println(); Serial.print("ttttt Ingrese J1: "); Serial.print(PIN_Tecleado); } if (pulsacion == 'C') { numeroDeDigitos = 0; PIN_Tecleado = ""; Serial.println(); Serial.print("ttttt Ingrese J1: "); } if (pulsacion == 'D') { Serial.println(); String text = PIN_Tecleado; long value; value = text.toInt();
  • 23. Materia: Rev: Página 23 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales Serial.print("ttttt J1: "); DEBUG(value);////imprime value J51 = value; PIN_Tecleado = ""; numeroDeDigitos = 0; Serial.println(); Serial.print("ttttt Ingrese J2: "); while (flag) { pulsacion = keypad.getKey(); if (pulsacion) //PREGUNTA SI SE HA PRESIONADO ALGUNA TECLA EN EL KEYPAD { if (pulsacion >= '0' && pulsacion <= '9' && numeroDeDigitos < 3) //LEE LOS DIGITOS INGRESADOS CON UN MÁXIMO DE TRES DIGITOS { numeroDeDigitos ++; PIN_Tecleado += pulsacion; Serial.print(pulsacion); } if (pulsacion == '*' && numeroDeDigitos == 0) //INGRESAR SIGNO NEGATIVO { numeroDeDigitos++; pulsacion = '-'; PIN_Tecleado += pulsacion; Serial.print(pulsacion); } if (pulsacion == '#' && numeroDeDigitos > 0) { numeroDeDigitos --; PIN_Tecleado = PIN_Tecleado.substring(0, numeroDeDigitos); Serial.println(); Serial.print("ttttt Ingrese J2: "); Serial.print(PIN_Tecleado); } if (pulsacion == 'C') { numeroDeDigitos = 0; PIN_Tecleado = ""; Serial.println(); Serial.print("ttttt Ingrese J2: "); } if (pulsacion == 'D') { Serial.println(); String text = PIN_Tecleado; long value; value = text.toInt(); Serial.print("ttttt J2: "); DEBUG(value);////imprime value J52 = value; PIN_Tecleado = "";
  • 24. Materia: Rev: Página 24 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales numeroDeDigitos = 0; Serial.println(); Serial.print("ttttt Ingrese J3: "); while (flag) { pulsacion = keypad.getKey(); if (pulsacion) //PREGUNTA SI SE HA PRESIONADO ALGUNA TECLA EN EL KEYPAD { if (pulsacion >= '0' && pulsacion <= '9' && numeroDeDigitos < 3) //LEE LOS DIGITOS INGRESADOS CON UN MÁXIMO DE TRES DIGITOS { numeroDeDigitos ++; PIN_Tecleado += pulsacion; Serial.print(pulsacion); } if (pulsacion == '*' && numeroDeDigitos == 0) //INGRESAR SIGNO NEGATIVO { numeroDeDigitos++; pulsacion = '-'; PIN_Tecleado += pulsacion; Serial.print(pulsacion); } if (pulsacion == '#' && numeroDeDigitos > 0) { numeroDeDigitos --; PIN_Tecleado = PIN_Tecleado.substring(0, numeroDeDigitos); Serial.println(); Serial.print("ttttt Ingrese J3: "); Serial.print(PIN_Tecleado); } if (pulsacion == 'C') { numeroDeDigitos = 0; PIN_Tecleado = ""; Serial.println(); Serial.print("ttttt Ingrese J3: "); } if (pulsacion == 'D') { Serial.println(); String text = PIN_Tecleado; long value; value = text.toInt(); Serial.print("ttttt J3: "); DEBUG(value);////imprime value J53 = value; PIN_Tecleado = ""; numeroDeDigitos = 0; Serial.println(); Serial.print("ttttt Ingrese J4: ");
  • 25. Materia: Rev: Página 25 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales while (flag) { pulsacion = keypad.getKey(); if (pulsacion) //PREGUNTA SI SE HA PRESIONADO ALGUNA TECLA EN EL KEYPAD { if (pulsacion >= '0' && pulsacion <= '9' && numeroDeDigitos < 3) //LEE LOS DIGITOS INGRESADOS CON UN MÁXIMO DE TRES DIGITOS { numeroDeDigitos ++; PIN_Tecleado += pulsacion; Serial.print(pulsacion); } if (pulsacion == '*' && numeroDeDigitos == 0) //INGRESAR SIGNO NEGATIVO { numeroDeDigitos++; pulsacion = '-'; PIN_Tecleado += pulsacion; Serial.print(pulsacion); } if (pulsacion == '#' && numeroDeDigitos > 0) { numeroDeDigitos --; PIN_Tecleado = PIN_Tecleado.substring(0, numeroDeDigitos); Serial.println(); Serial.print("ttttt Ingrese J4: "); Serial.print(PIN_Tecleado); } if (pulsacion == 'C') { numeroDeDigitos = 0; PIN_Tecleado = ""; Serial.println(); Serial.print("ttttt Ingrese J4: "); } if (pulsacion == 'D') { Serial.println(); String text = PIN_Tecleado; long value; value = text.toInt(); Serial.print("ttttt J4: "); DEBUG(value);////imprime value J54 = value; PIN_Tecleado = ""; numeroDeDigitos = 0; return; //VOLVER AL MENÚ PRINCIPAL } ///pulsacionA4 } } } ///pulsacionA3 }
  • 26. Materia: Rev: Página 26 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales } } ///pulsacionA2 } } }///pulsacionaA1 } } break; case '6': //EDITAR POSICION 6 Serial.println("tttt -- EDITAR POSICION 6 --"); Serial.println("tttt Ingrese la Posicion deseada"); Serial.println("tttt * = Insertar (-) "); Serial.println("tttt # = Eliminar ultimo digito"); Serial.println("tttt C = Cancelar"); Serial.println("tttt D = Aceptar"); Serial.println(); Serial.print("ttttt Ingrese J1: "); while (flag) { pulsacion = keypad.getKey(); if (pulsacion) //PREGUNTA SI SE HA PRESIONADO ALGUNA TECLA EN EL KEYPAD { if (pulsacion >= '0' && pulsacion <= '9' && numeroDeDigitos < 3) //LEE LOS DIGITOS INGRESADOS CON UN MÁXIMO DE TRES DIGITOS { numeroDeDigitos ++; PIN_Tecleado += pulsacion; Serial.print(pulsacion); } if (pulsacion == '*' && numeroDeDigitos == 0) //INGRESAR SIGNO NEGATIVO { numeroDeDigitos++; pulsacion = '-'; PIN_Tecleado += pulsacion; Serial.print(pulsacion); } if (pulsacion == '#' && numeroDeDigitos > 0) { numeroDeDigitos --; PIN_Tecleado = PIN_Tecleado.substring(0, numeroDeDigitos); Serial.println(); Serial.print("ttttt Ingrese J1: "); Serial.print(PIN_Tecleado); } if (pulsacion == 'C') { numeroDeDigitos = 0; PIN_Tecleado = ""; Serial.println(); Serial.print("ttttt Ingrese J1: "); }
  • 27. Materia: Rev: Página 27 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales if (pulsacion == 'D') { Serial.println(); String text = PIN_Tecleado; long value; value = text.toInt(); Serial.print("ttttt J1: "); DEBUG(value);////imprime value J61 = value; PIN_Tecleado = ""; numeroDeDigitos = 0; Serial.println(); Serial.print("ttttt Ingrese J2: "); while (flag) { pulsacion = keypad.getKey(); if (pulsacion) //PREGUNTA SI SE HA PRESIONADO ALGUNA TECLA EN EL KEYPAD { if (pulsacion >= '0' && pulsacion <= '9' && numeroDeDigitos < 3) //LEE LOS DIGITOS INGRESADOS CON UN MÁXIMO DE TRES DIGITOS { numeroDeDigitos ++; PIN_Tecleado += pulsacion; Serial.print(pulsacion); } if (pulsacion == '*' && numeroDeDigitos == 0) //INGRESAR SIGNO NEGATIVO { numeroDeDigitos++; pulsacion = '-'; PIN_Tecleado += pulsacion; Serial.print(pulsacion); } if (pulsacion == '#' && numeroDeDigitos > 0) { numeroDeDigitos --; PIN_Tecleado = PIN_Tecleado.substring(0, numeroDeDigitos); Serial.println(); Serial.print("ttttt Ingrese J2: "); Serial.print(PIN_Tecleado); } if (pulsacion == 'C') { numeroDeDigitos = 0; PIN_Tecleado = ""; Serial.println(); Serial.print("ttttt Ingrese J2: "); } if (pulsacion == 'D') { Serial.println();
  • 28. Materia: Rev: Página 28 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales String text = PIN_Tecleado; long value; value = text.toInt(); Serial.print("ttttt J2: "); DEBUG(value);////imprime value J62 = value; PIN_Tecleado = ""; numeroDeDigitos = 0; Serial.println(); Serial.print("ttttt Ingrese J3: "); while (flag) { pulsacion = keypad.getKey(); if (pulsacion) //PREGUNTA SI SE HA PRESIONADO ALGUNA TECLA EN EL KEYPAD { if (pulsacion >= '0' && pulsacion <= '9' && numeroDeDigitos < 3) //LEE LOS DIGITOS INGRESADOS CON UN MÁXIMO DE TRES DIGITOS { numeroDeDigitos ++; PIN_Tecleado += pulsacion; Serial.print(pulsacion); } if (pulsacion == '*' && numeroDeDigitos == 0) //INGRESAR SIGNO NEGATIVO { numeroDeDigitos++; pulsacion = '-'; PIN_Tecleado += pulsacion; Serial.print(pulsacion); } if (pulsacion == '#' && numeroDeDigitos > 0) { numeroDeDigitos --; PIN_Tecleado = PIN_Tecleado.substring(0, numeroDeDigitos); Serial.println(); Serial.print("ttttt Ingrese J3: "); Serial.print(PIN_Tecleado); } if (pulsacion == 'C') { numeroDeDigitos = 0; PIN_Tecleado = ""; Serial.println(); Serial.print("ttttt Ingrese J3: "); } if (pulsacion == 'D') { Serial.println(); String text = PIN_Tecleado; long value; value = text.toInt(); Serial.print("ttttt J3: ");
  • 29. Materia: Rev: Página 29 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales DEBUG(value);////imprime value J63 = value; PIN_Tecleado = ""; numeroDeDigitos = 0; Serial.println(); Serial.print("ttttt Ingrese J4: "); while (flag) { pulsacion = keypad.getKey(); if (pulsacion) //PREGUNTA SI SE HA PRESIONADO ALGUNA TECLA EN EL KEYPAD { if (pulsacion >= '0' && pulsacion <= '9' && numeroDeDigitos < 3) //LEE LOS DIGITOS INGRESADOS CON UN MÁXIMO DE TRES DIGITOS { numeroDeDigitos ++; PIN_Tecleado += pulsacion; Serial.print(pulsacion); } if (pulsacion == '*' && numeroDeDigitos == 0) //INGRESAR SIGNO NEGATIVO { numeroDeDigitos++; pulsacion = '-'; PIN_Tecleado += pulsacion; Serial.print(pulsacion); } if (pulsacion == '#' && numeroDeDigitos > 0) { numeroDeDigitos --; PIN_Tecleado = PIN_Tecleado.substring(0, numeroDeDigitos); Serial.println(); Serial.print("ttttt Ingrese J4: "); Serial.print(PIN_Tecleado); } if (pulsacion == 'C') { numeroDeDigitos = 0; PIN_Tecleado = ""; Serial.println(); Serial.print("ttttt Ingrese J4: "); } if (pulsacion == 'D') { Serial.println(); String text = PIN_Tecleado; long value; value = text.toInt(); Serial.print("ttttt J4: "); DEBUG(value);////imprime value J64 = value; PIN_Tecleado = "";
  • 30. Materia: Rev: Página 30 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales numeroDeDigitos = 0; return; //VOLVER AL MENÚ PRINCIPAL } ///pulsacionA4 } } } ///pulsacionA3 } } } ///pulsacionA2 } } }///pulsacionaA1 } } break; case '0': //EDITAR VARIABLE "VEL" (tiempo para delay) - 4 digitos max Serial.println("ttttt-- EDITAR DELAY --"); Serial.println("tttt Ingrese el tiempo deseado"); Serial.println("tttt # = Eliminar ultimo digito"); Serial.println("tttt C = Cancelar"); Serial.println("tttt D = Aceptar"); Serial.println(); Serial.print("tttt Ingrese Delay: "); while (flag) { pulsacion = keypad.getKey(); if (pulsacion) //PREGUNTA SI SE HA PRESIONADO ALGUNA TECLA EN EL KEYPAD { if (pulsacion >= '0' && pulsacion <= '9' && numeroDeDigitos < 4) { numeroDeDigitos ++; PIN_Tecleado += pulsacion; Serial.print(pulsacion); } if (pulsacion == '#' && numeroDeDigitos > 0) { numeroDeDigitos --; PIN_Tecleado = PIN_Tecleado.substring(0, numeroDeDigitos); Serial.println(); Serial.print("tttt Ingrese Delay: "); Serial.print(PIN_Tecleado); } if (pulsacion == 'C') { numeroDeDigitos = 0; PIN_Tecleado = ""; Serial.println(); Serial.print("tttt Ingrese Delay: "); } if (pulsacion == 'D') { Serial.println();
  • 31. Materia: Rev: Página 31 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales String text = PIN_Tecleado; long value; value = text.toInt(); Serial.print("tttt Delay: "); DEBUG(value);////imprime value vel = value; PIN_Tecleado = ""; numeroDeDigitos = 0; Serial.println(); return; //VOLVER AL MENÚ PRINCIPAL } } } break; Serial.print(key); quantity = quantity * 10 + key - '0'; break; case 'C': Serial.println(); flag = false; break; default: break; } } } break; case 'B': //EJECUCION DE RUTINA - se ejecuta indefinidamente hasta presionar tecla 'C' para salir al menu anterior Serial.println("nntttt EJECUTANDO RUTINAn"); delay(2000); auxiliar = true; if (auxiliar) { while (auxiliar) { key = keypad.getKey(); if (key == 'C') { return; //VOLVER AL MENÚ PRINCIPAL } //POSICION 1: Serial.println("ntttt ---- POSICION 1 ----"); SJ1.write(J11); SJ2.write(J12); SJ3.write(J13); SJ4.write(J14); Serial.print("ttttt J1: "); //IMPRIME J1 EN MONITOR SERIAL Serial.println(J11); Serial.print("ttttt J2: "); //IMPRIME J2 EN MONITOR SERIAL Serial.println(J12); Serial.print("ttttt J3: "); //IMPRIME J3 EN MONITOR SERIAL Serial.println(J13); Serial.print("ttttt J4: "); //IMPRIME J4 EN MONITOR SERIAL
  • 32. Materia: Rev: Página 32 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales Serial.println(J14); delay(vel); key = keypad.getKey(); if (key == 'C') { return; //VOLVER AL MENÚ PRINCIPAL } //POSICION 2: Serial.println("ntttt ---- POSICION 2 ----"); SJ1.write(J21); SJ2.write(J22); SJ3.write(J23); SJ4.write(J24); Serial.print("ttttt J1: "); //IMPRIME J1 EN MONITOR SERIAL Serial.println(J21); Serial.print("ttttt J2: "); //IMPRIME J2 EN MONITOR SERIAL Serial.println(J22); Serial.print("ttttt J3: "); //IMPRIME J3 EN MONITOR SERIAL Serial.println(J23); Serial.print("ttttt J4: "); //IMPRIME J4 EN MONITOR SERIAL Serial.println(J24); delay(vel); key = keypad.getKey(); if (key == 'C') { return; //VOLVER AL MENÚ PRINCIPAL } //POSICION 3: Serial.println("ntttt ---- POSICION 3 ----"); SJ1.write(J31); SJ2.write(J32); SJ3.write(J33); SJ4.write(J34); Serial.print("ttttt J1: "); //IMPRIME J1 EN MONITOR SERIAL Serial.println(J31); Serial.print("ttttt J2: "); //IMPRIME J2 EN MONITOR SERIAL Serial.println(J32); Serial.print("ttttt J3: "); //IMPRIME J3 EN MONITOR SERIAL Serial.println(J33); Serial.print("ttttt J4: "); //IMPRIME J4 EN MONITOR SERIAL Serial.println(J34); delay(vel); key = keypad.getKey(); if (key == 'C') { return; //VOLVER AL MENÚ PRINCIPAL } //POSICION 4: Serial.println("ntttt ---- POSICION 4 ----"); SJ1.write(J41); SJ2.write(J42); SJ3.write(J43); SJ4.write(J44);
  • 33. Materia: Rev: Página 33 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales Serial.print("ttttt J1: "); //IMPRIME J1 EN MONITOR SERIAL Serial.println(J41); Serial.print("ttttt J2: "); //IMPRIME J2 EN MONITOR SERIAL Serial.println(J42); Serial.print("ttttt J3: "); //IMPRIME J3 EN MONITOR SERIAL Serial.println(J43); Serial.print("ttttt J4: "); //IMPRIME J4 EN MONITOR SERIAL Serial.println(J44); delay(vel); key = keypad.getKey(); if (key == 'C') { return; //VOLVER AL MENÚ PRINCIPAL } //POSICION 5: Serial.println("ntttt ---- POSICION 5 ----"); SJ1.write(J51); SJ2.write(J52); SJ3.write(J53); SJ4.write(J54); Serial.print("ttttt J1: "); //IMPRIME J1 EN MONITOR SERIAL Serial.println(J51); Serial.print("ttttt J2: "); //IMPRIME J2 EN MONITOR SERIAL Serial.println(J52); Serial.print("ttttt J3: "); //IMPRIME J3 EN MONITOR SERIAL Serial.println(J53); Serial.print("ttttt J4: "); //IMPRIME J4 EN MONITOR SERIAL Serial.println(J54); delay(vel); key = keypad.getKey(); if (key == 'C') { return; //VOLVER AL MENÚ PRINCIPAL } //POSICION 6: Serial.println("ntttt ---- POSICION 6 ----"); SJ1.write(J61); SJ2.write(J62); SJ3.write(J63); SJ4.write(J64); Serial.print("ttttt J1: "); //IMPRIME J1 EN MONITOR SERIAL Serial.println(J61); Serial.print("ttttt J2: "); //IMPRIME J2 EN MONITOR SERIAL Serial.println(J62); Serial.print("ttttt J3: "); //IMPRIME J3 EN MONITOR SERIAL Serial.println(J63); Serial.print("ttttt J4: "); //IMPRIME J4 EN MONITOR SERIAL Serial.println(J64); delay(vel); key = keypad.getKey(); if (key == 'C') { return; //VOLVER AL MENÚ PRINCIPAL } }
  • 34. Materia: Rev: Página 34 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales } break; Serial.print(key); quantity = quantity * 10 + key - '0'; break; case 'C': Serial.println(); flag = false; default: break; } } } break; case 'B': //MODO DE OPERACION MANUAL Serial.println("nntttt MODO MANUAL SELECCIONADOnn"); Serial.println("tttt seleccione la J deseada"); Serial.println("ttttt1 = J1-"); Serial.println("ttttt3 = J1+"); Serial.println("ttttt4 = J2-"); Serial.println("ttttt6 = J2+"); Serial.println("ttttt7 = J3-"); Serial.println("ttttt9 = J3+"); Serial.println("ttttt* = J4-"); Serial.println("ttttt# = J4+nn"); flag = true; while (flag) { key = keypad.getKey(); if (key) { switch (key) { case 'A': //DISMINUIR MOV if (intervalo < 5) { intervalo = 1; } else { intervalo = intervalo - 5; if (intervalo < 5) { intervalo = 1; } } break; case 'B': //AUMENTAR MOV if (intervalo >= 30) { intervalo = 30; }
  • 35. Materia: Rev: Página 35 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales else { intervalo = intervalo + 5; if (intervalo == 6) { intervalo = 5; } } break; case '1': //MOVER A J1 EN NEGATIVO J1N = SJ1.read(); if ( J1N <= 0) { SJ1.write(0); } else { J1N = J1N - intervalo; SJ1.write(J1N); } Serial.print("ttttt J1: "); Serial.println(J1N); break; case '3': //MOVER A J1 EN POSITIVO J1P = SJ1.read(); if ( J1N >= 160) { SJ1.write(160); } else { J1P = J1P + intervalo; SJ1.write(J1P); } Serial.print("ttttt J1: "); if (J1P >= 160) { Serial.println(90); } else { Serial.println(J1P); } break; case '4': //MOVER A J2 EN NEGATIVO J2N = SJ2.read(); if ( J2N <= 0) { SJ2.write(0); } else { J2N = J2N - intervalo; SJ2.write(J2N);
  • 36. Materia: Rev: Página 36 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales } Serial.print("ttttt J2: "); Serial.println(J2N); break; case '6': //MOVER A J2 EN POSITIVO J2P = SJ2.read(); if ( J2N >= 180) { SJ2.write(180); } else { J2P = J2P + intervalo; SJ2.write(J2P); } Serial.print("ttttt J2: "); if (J2P >= 180) { Serial.println(180); } else { Serial.println(J2P); } break; case '7': //MOVER A J3 EN NEGATIVO J3N = SJ3.read(); if ( J3N <= 0) { SJ3.write(0); } else { J3N = J3N - intervalo; SJ3.write(J3N); } Serial.print("ttttt J3: "); Serial.println(J3N); break; case '9': //MOVER A J3 EN POSITIVO J3P = SJ3.read(); if ( J3N >= 180) { SJ3.write(180); } else { J3P = J3P + intervalo; SJ3.write(J3P); } Serial.print("ttttt J3: "); if (J3P >= 180) { Serial.println(180); }
  • 37. Materia: Rev: Página 37 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales else { Serial.println(J3P); } break; case '*': //MOVER A J4 EN NEGATIVO J4N = SJ4.read(); if ( J4N <= 0) { SJ4.write(0); } else { J4N = J4N - intervalo; SJ4.write(J4N); } Serial.print("ttttt J4: "); Serial.println(J4N); break; case '#': //MOVER A J4 EN POSITIVO J4P = SJ4.read(); if ( J4N >= 180) { SJ4.write(180); } else { J4P = J4P + intervalo; SJ4.write(J4P); } Serial.print("ttttt J4: "); if (J4P >= 180) { Serial.println(180); } else { Serial.println(J4P); } break; Serial.print(key); quantity = quantity * 10 + key - '0'; break; case 'C': Serial.println(); flag = false; default: break; } } } break;
  • 38. Materia: Rev: Página 38 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales Serial.println(key); option = key; flag = false; break; default: break; } } } }
  • 39. Materia: Rev: Página 39 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales Diagramas: A continuación, se muestran los planos correspondientes a cada una de las piezas utilizadas en el brazo robot.
  • 40. Materia: Rev: Página 40 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales
  • 41. Materia: Rev: Página 41 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales
  • 42. Materia: Rev: Página 42 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales
  • 43. Materia: Rev: Página 43 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales
  • 44. Materia: Rev: Página 44 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales
  • 45. Materia: Rev: Página 45 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales
  • 46. Materia: Rev: Página 46 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales
  • 47. Materia: Rev: Página 47 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales
  • 48. Materia: Rev: Página 48 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales A continuación, se muestra el diagrama eléctrico utilizado en este proyecto, así como el diseño de la placa pcb utilizada.
  • 49. Materia: Rev: Página 49 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales A continuación, se muestra el diagrama de flujo correspondiente a la programación utilizada.
  • 50. Materia: Rev: Página 50 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales
  • 51. Materia: Rev: Página 51 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales Simulación en Robo DK: Observaciones: Un punto importante a remarcar es el de los sistemas de referencia del prototipo del brazo robot ya que a partir de que se les asigne una orientación específica va a tomar su referencia, esto hay que realizarlo con el algoritmo de Dennavit Hartenberg. También es muy importante tanto el diseño mecánico, como el electrónico ya que a partir de estos se darán las limitantes para el brazo,
  • 52. Materia: Rev: Página 52 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales Modelo matemático: 106 94.29 38.29
  • 53. Materia: Rev: Página 53 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales Dennavit-Hartenberg: Matriz final: Para obtener las posiciones en x, y y z, son mediante las siguientes expresiones: Posición en x: d4*(cos(a3)*(cos(a2)*sin(a1)*sin(t1) + sin(a2)*cos(t1)*sin(t2) + cos(a1)*sin(a2)*cos(t2)*sin(t1)) + sin(a3)*sin(t3)*(cos(t1)*cos(t2) - cos(a1)*sin(t1)*sin(t2)) + sin(a3)*cos(t3)*(cos(a2)*cos(t1)*sin(t2) - sin(a1)*sin(a2)*sin(t1) + cos(a1)*cos(a2)*cos(t2)*sin(t1))) + l1*cos(t1) + d3*(cos(a2)*sin(a1)*sin(t1) + sin(a2)*cos(t1)*sin(t2) + cos(a1)*sin(a2)*cos(t2)*sin(t1)) + l3*cos(t3)*(cos(t1)*cos(t2) - cos(a1)*sin(t1)*sin(t2)) - l4*sin(t4)*(cos(a3)*sin(t3)*(cos(t1)*cos(t2) - cos(a1)*sin(t1)*sin(t2)) - sin(a3)*(cos(a2)*sin(a1)*sin(t1) + sin(a2)*cos(t1)*sin(t2) + cos(a1)*sin(a2)*cos(t2)*sin(t1)) + cos(a3)*cos(t3)*(cos(a2)*cos(t1)*sin(t2) - sin(a1)*sin(a2)*sin(t1) + cos(a1)*cos(a2)*cos(t2)*sin(t1))) + l2*cos(t1)*cos(t2) + d2*sin(a1)*sin(t1) - l3*sin(t3)*(cos(a2)*cos(t1)*sin(t2) - sin(a1)*sin(a2)*sin(t1) + cos(a1)*cos(a2)*cos(t2)*sin(t1)) - l4*cos(t4)*(sin(t3)*(cos(a2)*cos(t1)*sin(t2) - sin(a1)*sin(a2)*sin(t1) + cos(a1)*cos(a2)*cos(t2)*sin(t1)) - cos(t3)*(cos(t1)*cos(t2) - cos(a1)*sin(t1)*sin(t2))) - l2*cos(a1)*sin(t1)*sin(t2) Posición en y: d4*(sin(a3)*sin(t3)*(cos(t2)*sin(t1) + cos(a1)*cos(t1)*sin(t2)) - cos(a3)*(cos(a2)*sin(a1)*cos(t1) - sin(a2)*sin(t1)*sin(t2) + cos(a1)*sin(a2)*cos(t1)*cos(t2)) + sin(a3)*cos(t3)*(sin(a1)*sin(a2)*cos(t1) + cos(a2)*sin(t1)*sin(t2) - cos(a1)*cos(a2)*cos(t1)*cos(t2))) - d3*(cos(a2)*sin(a1)*cos(t1) - sin(a2)*sin(t1)*sin(t2) + cos(a1)*sin(a2)*cos(t1)*cos(t2)) + l1*sin(t1) + l3*cos(t3)*(cos(t2)*sin(t1) + cos(a1)*cos(t1)*sin(t2)) - l4*sin(t4)*(sin(a3)*(cos(a2)*sin(a1)*cos(t1) - sin(a2)*sin(t1)*sin(t2) + cos(a1)*sin(a2)*cos(t1)*cos(t2)) + cos(a3)*sin(t3)*(cos(t2)*sin(t1) + cos(a1)*cos(t1)*sin(t2)) + cos(a3)*cos(t3)*(sin(a1)*sin(a2)*cos(t1) + cos(a2)*sin(t1)*sin(t2) - cos(a1)*cos(a2)*cos(t1)*cos(t2))) - d2*sin(a1)*cos(t1) - l3*sin(t3)*(sin(a1)*sin(a2)*cos(t1) + cos(a2)*sin(t1)*sin(t2) -
  • 54. Materia: Rev: Página 54 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales cos(a1)*cos(a2)*cos(t1)*cos(t2)) + l2*cos(t2)*sin(t1) - l4*cos(t4)*(sin(t3)*(sin(a1)*sin(a2)*cos(t1) + cos(a2)*sin(t1)*sin(t2) - cos(a1)*cos(a2)*cos(t1)*cos(t2)) - cos(t3)*(cos(t2)*sin(t1) + cos(a1)*cos(t1)*sin(t2))) + l2*cos(a1)*cos(t1)*sin(t2) Posición en z: d1 + d4*(cos(a3)*(cos(a1)*cos(a2) - sin(a1)*sin(a2)*cos(t2)) - sin(a3)*cos(t3)*(cos(a1)*sin(a2) + cos(a2)*sin(a1)*cos(t2)) + sin(a1)*sin(a3)*sin(t2)*sin(t3)) + d2*cos(a1) + d3*(cos(a1)*cos(a2) - sin(a1)*sin(a2)*cos(t2)) + l4*sin(t4)*(sin(a3)*(cos(a1)*cos(a2) - sin(a1)*sin(a2)*cos(t2)) + cos(a3)*cos(t3)*(cos(a1)*sin(a2) + cos(a2)*sin(a1)*cos(t2)) - cos(a3)*sin(a1)*sin(t2)*sin(t3)) + l4*cos(t4)*(sin(t3)*(cos(a1)*sin(a2) + cos(a2)*sin(a1)*cos(t2)) + sin(a1)*cos(t3)*sin(t2)) + l2*sin(a1)*sin(t2) + l3*sin(t3)*(cos(a1)*sin(a2) + cos(a2)*sin(a1)*cos(t2)) + l3*sin(a1)*cos(t3)*sin(t2) Jacobiano: Para esto debemos de derivar parcialmente las expresiones anteriores con respecto a sus ángulos t1, 2, t3 y t4: Velocidad angular en x: d4*(sin(a3)*cos(t3)*(cos(t1)*cos(t2) - cos(a1)*sin(t1)*sin(t2)) - sin(a3)*sin(t3)*(cos(a2)*cos(t1)*sin(t2) - sin(a1)*sin(a2)*sin(t1) + cos(a1)*cos(a2)*cos(t2)*sin(t1))) - d4*(sin(a3)*sin(t3)*(cos(t2)*sin(t1) + cos(a1)*cos(t1)*sin(t2)) - cos(a3)*(cos(a2)*sin(a1)*cos(t1) - sin(a2)*sin(t1)*sin(t2) + cos(a1)*sin(a2)*cos(t1)*cos(t2)) + sin(a3)*cos(t3)*(sin(a1)*sin(a2)*cos(t1) + cos(a2)*sin(t1)*sin(t2) - cos(a1)*cos(a2)*cos(t1)*cos(t2))) + d3*(cos(a2)*sin(a1)*cos(t1) - sin(a2)*sin(t1)*sin(t2) + cos(a1)*sin(a2)*cos(t1)*cos(t2)) - l1*sin(t1) + d4*(cos(a3)*(sin(a2)*cos(t1)*cos(t2) - cos(a1)*sin(a2)*sin(t1)*sin(t2)) - sin(a3)*sin(t3)*(cos(t1)*sin(t2) + cos(a1)*cos(t2)*sin(t1)) + sin(a3)*cos(t3)*(cos(a2)*cos(t1)*cos(t2) - cos(a1)*cos(a2)*sin(t1)*sin(t2))) + d3*(sin(a2)*cos(t1)*cos(t2) - cos(a1)*sin(a2)*sin(t1)*sin(t2)) - l3*cos(t3)*(cos(t1)*sin(t2) + cos(a1)*cos(t2)*sin(t1)) - l3*cos(t3)*(cos(t2)*sin(t1) + cos(a1)*cos(t1)*sin(t2)) - l3*sin(t3)*(cos(t1)*cos(t2) - cos(a1)*sin(t1)*sin(t2)) + l4*sin(t4)*(sin(a3)*(cos(a2)*sin(a1)*cos(t1) - sin(a2)*sin(t1)*sin(t2) + cos(a1)*sin(a2)*cos(t1)*cos(t2)) + cos(a3)*sin(t3)*(cos(t2)*sin(t1) + cos(a1)*cos(t1)*sin(t2)) + cos(a3)*cos(t3)*(sin(a1)*sin(a2)*cos(t1) + cos(a2)*sin(t1)*sin(t2) - cos(a1)*cos(a2)*cos(t1)*cos(t2))) - l4*sin(t4)*(cos(a3)*cos(t3)*(cos(t1)*cos(t2) - cos(a1)*sin(t1)*sin(t2)) - cos(a3)*sin(t3)*(cos(a2)*cos(t1)*sin(t2) - sin(a1)*sin(a2)*sin(t1) + cos(a1)*cos(a2)*cos(t2)*sin(t1))) - l4*cos(t4)*(cos(a3)*sin(t3)*(cos(t1)*cos(t2) - cos(a1)*sin(t1)*sin(t2)) - sin(a3)*(cos(a2)*sin(a1)*sin(t1) + sin(a2)*cos(t1)*sin(t2) + cos(a1)*sin(a2)*cos(t2)*sin(t1)) + cos(a3)*cos(t3)*(cos(a2)*cos(t1)*sin(t2) - sin(a1)*sin(a2)*sin(t1) + cos(a1)*cos(a2)*cos(t2)*sin(t1))) + d2*sin(a1)*cos(t1) - l3*cos(t3)*(cos(a2)*cos(t1)*sin(t2) - sin(a1)*sin(a2)*sin(t1) + cos(a1)*cos(a2)*cos(t2)*sin(t1)) + l3*sin(t3)*(sin(a1)*sin(a2)*cos(t1) + cos(a2)*sin(t1)*sin(t2) - cos(a1)*cos(a2)*cos(t1)*cos(t2)) - l2*cos(t1)*sin(t2) - l2*cos(t2)*sin(t1) -
  • 55. Materia: Rev: Página 55 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales l3*sin(t3)*(cos(a2)*cos(t1)*cos(t2) - cos(a1)*cos(a2)*sin(t1)*sin(t2)) + l4*sin(t4)*(sin(a3)*(sin(a2)*cos(t1)*cos(t2) - cos(a1)*sin(a2)*sin(t1)*sin(t2)) + cos(a3)*sin(t3)*(cos(t1)*sin(t2) + cos(a1)*cos(t2)*sin(t1)) - cos(a3)*cos(t3)*(cos(a2)*cos(t1)*cos(t2) - cos(a1)*cos(a2)*sin(t1)*sin(t2))) + l4*cos(t4)*(sin(t3)*(sin(a1)*sin(a2)*cos(t1) + cos(a2)*sin(t1)*sin(t2) - cos(a1)*cos(a2)*cos(t1)*cos(t2)) - cos(t3)*(cos(t2)*sin(t1) + cos(a1)*cos(t1)*sin(t2))) - l4*cos(t4)*(cos(t3)*(cos(a2)*cos(t1)*sin(t2) - sin(a1)*sin(a2)*sin(t1) + cos(a1)*cos(a2)*cos(t2)*sin(t1)) + sin(t3)*(cos(t1)*cos(t2) - cos(a1)*sin(t1)*sin(t2))) + l4*sin(t4)*(sin(t3)*(cos(a2)*cos(t1)*sin(t2) - sin(a1)*sin(a2)*sin(t1) + cos(a1)*cos(a2)*cos(t2)*sin(t1)) - cos(t3)*(cos(t1)*cos(t2) - cos(a1)*sin(t1)*sin(t2))) - l4*cos(t4)*(sin(t3)*(cos(a2)*cos(t1)*cos(t2) - cos(a1)*cos(a2)*sin(t1)*sin(t2)) + cos(t3)*(cos(t1)*sin(t2) + cos(a1)*cos(t2)*sin(t1))) - l2*cos(a1)*cos(t1)*sin(t2) - l2*cos(a1)*cos(t2)*sin(t1) Velocidad angular en y: d4*(sin(a3)*cos(t3)*(cos(t2)*sin(t1) + cos(a1)*cos(t1)*sin(t2)) - sin(a3)*sin(t3)*(sin(a1)*sin(a2)*cos(t1) + cos(a2)*sin(t1)*sin(t2) - cos(a1)*cos(a2)*cos(t1)*cos(t2))) + d4*(cos(a3)*(cos(a2)*sin(a1)*sin(t1) + sin(a2)*cos(t1)*sin(t2) + cos(a1)*sin(a2)*cos(t2)*sin(t1)) + sin(a3)*sin(t3)*(cos(t1)*cos(t2) - cos(a1)*sin(t1)*sin(t2)) + sin(a3)*cos(t3)*(cos(a2)*cos(t1)*sin(t2) - sin(a1)*sin(a2)*sin(t1) + cos(a1)*cos(a2)*cos(t2)*sin(t1))) + l1*cos(t1) + d3*(cos(a2)*sin(a1)*sin(t1) + sin(a2)*cos(t1)*sin(t2) + cos(a1)*sin(a2)*cos(t2)*sin(t1)) + d4*(cos(a3)*(sin(a2)*cos(t2)*sin(t1) + cos(a1)*sin(a2)*cos(t1)*sin(t2)) - sin(a3)*sin(t3)*(sin(t1)*sin(t2) - cos(a1)*cos(t1)*cos(t2)) + sin(a3)*cos(t3)*(cos(a2)*cos(t2)*sin(t1) + cos(a1)*cos(a2)*cos(t1)*sin(t2))) + d3*(sin(a2)*cos(t2)*sin(t1) + cos(a1)*sin(a2)*cos(t1)*sin(t2)) + l3*cos(t3)*(cos(t1)*cos(t2) - cos(a1)*sin(t1)*sin(t2)) - l3*cos(t3)*(sin(t1)*sin(t2) - cos(a1)*cos(t1)*cos(t2)) - l3*sin(t3)*(cos(t2)*sin(t1) + cos(a1)*cos(t1)*sin(t2)) - l4*cos(t4)*(sin(a3)*(cos(a2)*sin(a1)*cos(t1) - sin(a2)*sin(t1)*sin(t2) + cos(a1)*sin(a2)*cos(t1)*cos(t2)) + cos(a3)*sin(t3)*(cos(t2)*sin(t1) + cos(a1)*cos(t1)*sin(t2)) + cos(a3)*cos(t3)*(sin(a1)*sin(a2)*cos(t1) + cos(a2)*sin(t1)*sin(t2) - cos(a1)*cos(a2)*cos(t1)*cos(t2))) - l4*sin(t4)*(cos(a3)*cos(t3)*(cos(t2)*sin(t1) + cos(a1)*cos(t1)*sin(t2)) - cos(a3)*sin(t3)*(sin(a1)*sin(a2)*cos(t1) + cos(a2)*sin(t1)*sin(t2) - cos(a1)*cos(a2)*cos(t1)*cos(t2))) - l3*cos(t3)*(sin(a1)*sin(a2)*cos(t1) + cos(a2)*sin(t1)*sin(t2) - cos(a1)*cos(a2)*cos(t1)*cos(t2)) - l4*sin(t4)*(cos(a3)*sin(t3)*(cos(t1)*cos(t2) - cos(a1)*sin(t1)*sin(t2)) - sin(a3)*(cos(a2)*sin(a1)*sin(t1) + sin(a2)*cos(t1)*sin(t2) + cos(a1)*sin(a2)*cos(t2)*sin(t1)) + cos(a3)*cos(t3)*(cos(a2)*cos(t1)*sin(t2) - sin(a1)*sin(a2)*sin(t1) + cos(a1)*cos(a2)*cos(t2)*sin(t1))) + l2*cos(t1)*cos(t2) + d2*sin(a1)*sin(t1) - l3*sin(t3)*(cos(a2)*cos(t1)*sin(t2) - sin(a1)*sin(a2)*sin(t1) + cos(a1)*cos(a2)*cos(t2)*sin(t1)) - l2*sin(t1)*sin(t2) - l3*sin(t3)*(cos(a2)*cos(t2)*sin(t1) + cos(a1)*cos(a2)*cos(t1)*sin(t2)) + l4*sin(t4)*(sin(a3)*(sin(a2)*cos(t2)*sin(t1) + cos(a1)*sin(a2)*cos(t1)*sin(t2)) + cos(a3)*sin(t3)*(sin(t1)*sin(t2) - cos(a1)*cos(t1)*cos(t2)) -
  • 56. Materia: Rev: Página 56 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales cos(a3)*cos(t3)*(cos(a2)*cos(t2)*sin(t1) + cos(a1)*cos(a2)*cos(t1)*sin(t2))) - l4*cos(t4)*(sin(t3)*(cos(t2)*sin(t1) + cos(a1)*cos(t1)*sin(t2)) + cos(t3)*(sin(a1)*sin(a2)*cos(t1) + cos(a2)*sin(t1)*sin(t2) - cos(a1)*cos(a2)*cos(t1)*cos(t2))) + l4*sin(t4)*(sin(t3)*(sin(a1)*sin(a2)*cos(t1) + cos(a2)*sin(t1)*sin(t2) - cos(a1)*cos(a2)*cos(t1)*cos(t2)) - cos(t3)*(cos(t2)*sin(t1) + cos(a1)*cos(t1)*sin(t2))) - l4*cos(t4)*(sin(t3)*(cos(a2)*cos(t1)*sin(t2) - sin(a1)*sin(a2)*sin(t1) + cos(a1)*cos(a2)*cos(t2)*sin(t1)) - cos(t3)*(cos(t1)*cos(t2) - cos(a1)*sin(t1)*sin(t2))) - l4*cos(t4)*(sin(t3)*(cos(a2)*cos(t2)*sin(t1) + cos(a1)*cos(a2)*cos(t1)*sin(t2)) + cos(t3)*(sin(t1)*sin(t2) - cos(a1)*cos(t1)*cos(t2))) + l2*cos(a1)*cos(t1)*cos(t2) - l2*cos(a1)*sin(t1)*sin(t2) Velocidad angular en Z: d4*(cos(a3)*sin(a1)*sin(a2)*sin(t2) + sin(a1)*sin(a3)*cos(t2)*sin(t3) + cos(a2)*sin(a1)*sin(a3)*cos(t3)*sin(t2)) + d4*(sin(a3)*sin(t3)*(cos(a1)*sin(a2) + cos(a2)*sin(a1)*cos(t2)) + sin(a1)*sin(a3)*cos(t3)*sin(t2)) - l4*sin(t4)*(cos(a3)*sin(a1)*cos(t2)*sin(t3) - sin(a1)*sin(a2)*sin(a3)*sin(t2) + cos(a2)*cos(a3)*sin(a1)*cos(t3)*sin(t2)) + l4*cos(t4)*(sin(a3)*(cos(a1)*cos(a2) - sin(a1)*sin(a2)*cos(t2)) + cos(a3)*cos(t3)*(cos(a1)*sin(a2) + cos(a2)*sin(a1)*cos(t2)) - cos(a3)*sin(a1)*sin(t2)*sin(t3)) + l4*cos(t4)*(cos(t3)*(cos(a1)*sin(a2) + cos(a2)*sin(a1)*cos(t2)) - sin(a1)*sin(t2)*sin(t3)) - l4*sin(t4)*(sin(t3)*(cos(a1)*sin(a2) + cos(a2)*sin(a1)*cos(t2)) + sin(a1)*cos(t3)*sin(t2)) + l2*sin(a1)*cos(t2) + l4*cos(t4)*(sin(a1)*cos(t2)*cos(t3) - cos(a2)*sin(a1)*sin(t2)*sin(t3)) + l3*cos(t3)*(cos(a1)*sin(a2) + cos(a2)*sin(a1)*cos(t2)) - l4*sin(t4)*(cos(a3)*sin(t3)*(cos(a1)*sin(a2) + cos(a2)*sin(a1)*cos(t2)) + cos(a3)*sin(a1)*cos(t3)*sin(t2)) + l3*sin(a1)*cos(t2)*cos(t3) + d3*sin(a1)*sin(a2)*sin(t2) - l3*sin(a1)*sin(t2)*sin(t3) - l3*cos(a2)*sin(a1)*sin(t2)*sin(t3) Ahora a estos valores la aplicamos producto cruz con el vector normal [0,0,1]: Velocidad lineal en x: d4*(sin(a3)*cos(t3)*(cos(t2)*sin(t1) + cos(a1)*cos(t1)*sin(t2)) - sin(a3)*sin(t3)*(sin(a1)*sin(a2)*cos(t1) + cos(a2)*sin(t1)*sin(t2) - cos(a1)*cos(a2)*cos(t1)*cos(t2))) + d4*(cos(a3)*(cos(a2)*sin(a1)*sin(t1) + sin(a2)*cos(t1)*sin(t2) + cos(a1)*sin(a2)*cos(t2)*sin(t1)) + sin(a3)*sin(t3)*(cos(t1)*cos(t2) - cos(a1)*sin(t1)*sin(t2)) + sin(a3)*cos(t3)*(cos(a2)*cos(t1)*sin(t2) - sin(a1)*sin(a2)*sin(t1) + cos(a1)*cos(a2)*cos(t2)*sin(t1))) + l1*cos(t1) + d3*(cos(a2)*sin(a1)*sin(t1) + sin(a2)*cos(t1)*sin(t2) + cos(a1)*sin(a2)*cos(t2)*sin(t1)) + d4*(cos(a3)*(sin(a2)*cos(t2)*sin(t1) + cos(a1)*sin(a2)*cos(t1)*sin(t2)) - sin(a3)*sin(t3)*(sin(t1)*sin(t2) - cos(a1)*cos(t1)*cos(t2)) + sin(a3)*cos(t3)*(cos(a2)*cos(t2)*sin(t1) + cos(a1)*cos(a2)*cos(t1)*sin(t2))) + d3*(sin(a2)*cos(t2)*sin(t1) + cos(a1)*sin(a2)*cos(t1)*sin(t2)) + l3*cos(t3)*(cos(t1)*cos(t2) - cos(a1)*sin(t1)*sin(t2)) - l3*cos(t3)*(sin(t1)*sin(t2) - cos(a1)*cos(t1)*cos(t2)) - l3*sin(t3)*(cos(t2)*sin(t1) + cos(a1)*cos(t1)*sin(t2)) - l4*cos(t4)*(sin(a3)*(cos(a2)*sin(a1)*cos(t1) -
  • 57. Materia: Rev: Página 57 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales sin(a2)*sin(t1)*sin(t2) + cos(a1)*sin(a2)*cos(t1)*cos(t2)) + cos(a3)*sin(t3)*(cos(t2)*sin(t1) + cos(a1)*cos(t1)*sin(t2)) + cos(a3)*cos(t3)*(sin(a1)*sin(a2)*cos(t1) + cos(a2)*sin(t1)*sin(t2) - cos(a1)*cos(a2)*cos(t1)*cos(t2))) - l4*sin(t4)*(cos(a3)*cos(t3)*(cos(t2)*sin(t1) + cos(a1)*cos(t1)*sin(t2)) - cos(a3)*sin(t3)*(sin(a1)*sin(a2)*cos(t1) + cos(a2)*sin(t1)*sin(t2) - cos(a1)*cos(a2)*cos(t1)*cos(t2))) - l3*cos(t3)*(sin(a1)*sin(a2)*cos(t1) + cos(a2)*sin(t1)*sin(t2) - cos(a1)*cos(a2)*cos(t1)*cos(t2)) - l4*sin(t4)*(cos(a3)*sin(t3)*(cos(t1)*cos(t2) - cos(a1)*sin(t1)*sin(t2)) - sin(a3)*(cos(a2)*sin(a1)*sin(t1) + sin(a2)*cos(t1)*sin(t2) + cos(a1)*sin(a2)*cos(t2)*sin(t1)) + cos(a3)*cos(t3)*(cos(a2)*cos(t1)*sin(t2) - sin(a1)*sin(a2)*sin(t1) + cos(a1)*cos(a2)*cos(t2)*sin(t1))) + l2*cos(t1)*cos(t2) + d2*sin(a1)*sin(t1) - l3*sin(t3)*(cos(a2)*cos(t1)*sin(t2) - sin(a1)*sin(a2)*sin(t1) + cos(a1)*cos(a2)*cos(t2)*sin(t1)) - l2*sin(t1)*sin(t2) - l3*sin(t3)*(cos(a2)*cos(t2)*sin(t1) + cos(a1)*cos(a2)*cos(t1)*sin(t2)) + l4*sin(t4)*(sin(a3)*(sin(a2)*cos(t2)*sin(t1) + cos(a1)*sin(a2)*cos(t1)*sin(t2)) + cos(a3)*sin(t3)*(sin(t1)*sin(t2) - cos(a1)*cos(t1)*cos(t2)) - cos(a3)*cos(t3)*(cos(a2)*cos(t2)*sin(t1) + cos(a1)*cos(a2)*cos(t1)*sin(t2))) - l4*cos(t4)*(sin(t3)*(cos(t2)*sin(t1) + cos(a1)*cos(t1)*sin(t2)) + cos(t3)*(sin(a1)*sin(a2)*cos(t1) + cos(a2)*sin(t1)*sin(t2) - cos(a1)*cos(a2)*cos(t1)*cos(t2))) + l4*sin(t4)*(sin(t3)*(sin(a1)*sin(a2)*cos(t1) + cos(a2)*sin(t1)*sin(t2) - cos(a1)*cos(a2)*cos(t1)*cos(t2)) - cos(t3)*(cos(t2)*sin(t1) + cos(a1)*cos(t1)*sin(t2))) - l4*cos(t4)*(sin(t3)*(cos(a2)*cos(t1)*sin(t2) - sin(a1)*sin(a2)*sin(t1) + cos(a1)*cos(a2)*cos(t2)*sin(t1)) - cos(t3)*(cos(t1)*cos(t2) - cos(a1)*sin(t1)*sin(t2))) - l4*cos(t4)*(sin(t3)*(cos(a2)*cos(t2)*sin(t1) + cos(a1)*cos(a2)*cos(t1)*sin(t2)) + cos(t3)*(sin(t1)*sin(t2) - cos(a1)*cos(t1)*cos(t2))) + l2*cos(a1)*cos(t1)*cos(t2) - l2*cos(a1)*sin(t1)*sin(t2) Velocidad lineal en y: d4*(sin(a3)*sin(t3)*(cos(t2)*sin(t1) + cos(a1)*cos(t1)*sin(t2)) - cos(a3)*(cos(a2)*sin(a1)*cos(t1) - sin(a2)*sin(t1)*sin(t2) + cos(a1)*sin(a2)*cos(t1)*cos(t2)) + sin(a3)*cos(t3)*(sin(a1)*sin(a2)*cos(t1) + cos(a2)*sin(t1)*sin(t2) - cos(a1)*cos(a2)*cos(t1)*cos(t2))) - d4*(sin(a3)*cos(t3)*(cos(t1)*cos(t2) - cos(a1)*sin(t1)*sin(t2)) - sin(a3)*sin(t3)*(cos(a2)*cos(t1)*sin(t2) - sin(a1)*sin(a2)*sin(t1) + cos(a1)*cos(a2)*cos(t2)*sin(t1))) - d3*(cos(a2)*sin(a1)*cos(t1) - sin(a2)*sin(t1)*sin(t2) + cos(a1)*sin(a2)*cos(t1)*cos(t2)) + l1*sin(t1) - d4*(cos(a3)*(sin(a2)*cos(t1)*cos(t2) - cos(a1)*sin(a2)*sin(t1)*sin(t2)) - sin(a3)*sin(t3)*(cos(t1)*sin(t2) + cos(a1)*cos(t2)*sin(t1)) + sin(a3)*cos(t3)*(cos(a2)*cos(t1)*cos(t2) - cos(a1)*cos(a2)*sin(t1)*sin(t2))) - d3*(sin(a2)*cos(t1)*cos(t2) - cos(a1)*sin(a2)*sin(t1)*sin(t2)) + l3*cos(t3)*(cos(t1)*sin(t2) + cos(a1)*cos(t2)*sin(t1)) + l3*cos(t3)*(cos(t2)*sin(t1) + cos(a1)*cos(t1)*sin(t2)) + l3*sin(t3)*(cos(t1)*cos(t2) - cos(a1)*sin(t1)*sin(t2)) - l4*sin(t4)*(sin(a3)*(cos(a2)*sin(a1)*cos(t1) - sin(a2)*sin(t1)*sin(t2) + cos(a1)*sin(a2)*cos(t1)*cos(t2)) + cos(a3)*sin(t3)*(cos(t2)*sin(t1) + cos(a1)*cos(t1)*sin(t2)) + cos(a3)*cos(t3)*(sin(a1)*sin(a2)*cos(t1) + cos(a2)*sin(t1)*sin(t2) - cos(a1)*cos(a2)*cos(t1)*cos(t2))) + l4*sin(t4)*(cos(a3)*cos(t3)*(cos(t1)*cos(t2) -
  • 58. Materia: Rev: Página 58 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales cos(a1)*sin(t1)*sin(t2)) - cos(a3)*sin(t3)*(cos(a2)*cos(t1)*sin(t2) - sin(a1)*sin(a2)*sin(t1) + cos(a1)*cos(a2)*cos(t2)*sin(t1))) + l4*cos(t4)*(cos(a3)*sin(t3)*(cos(t1)*cos(t2) - cos(a1)*sin(t1)*sin(t2)) - sin(a3)*(cos(a2)*sin(a1)*sin(t1) + sin(a2)*cos(t1)*sin(t2) + cos(a1)*sin(a2)*cos(t2)*sin(t1)) + cos(a3)*cos(t3)*(cos(a2)*cos(t1)*sin(t2) - sin(a1)*sin(a2)*sin(t1) + cos(a1)*cos(a2)*cos(t2)*sin(t1))) - d2*sin(a1)*cos(t1) + l3*cos(t3)*(cos(a2)*cos(t1)*sin(t2) - sin(a1)*sin(a2)*sin(t1) + cos(a1)*cos(a2)*cos(t2)*sin(t1)) - l3*sin(t3)*(sin(a1)*sin(a2)*cos(t1) + cos(a2)*sin(t1)*sin(t2) - cos(a1)*cos(a2)*cos(t1)*cos(t2)) + l2*cos(t1)*sin(t2) + l2*cos(t2)*sin(t1) + l3*sin(t3)*(cos(a2)*cos(t1)*cos(t2) - cos(a1)*cos(a2)*sin(t1)*sin(t2)) - l4*sin(t4)*(sin(a3)*(sin(a2)*cos(t1)*cos(t2) - cos(a1)*sin(a2)*sin(t1)*sin(t2)) + cos(a3)*sin(t3)*(cos(t1)*sin(t2) + cos(a1)*cos(t2)*sin(t1)) - cos(a3)*cos(t3)*(cos(a2)*cos(t1)*cos(t2) - cos(a1)*cos(a2)*sin(t1)*sin(t2))) - l4*cos(t4)*(sin(t3)*(sin(a1)*sin(a2)*cos(t1) + cos(a2)*sin(t1)*sin(t2) - cos(a1)*cos(a2)*cos(t1)*cos(t2)) - cos(t3)*(cos(t2)*sin(t1) + cos(a1)*cos(t1)*sin(t2))) + l4*cos(t4)*(cos(t3)*(cos(a2)*cos(t1)*sin(t2) - sin(a1)*sin(a2)*sin(t1) + cos(a1)*cos(a2)*cos(t2)*sin(t1)) + sin(t3)*(cos(t1)*cos(t2) - cos(a1)*sin(t1)*sin(t2))) - l4*sin(t4)*(sin(t3)*(cos(a2)*cos(t1)*sin(t2) - sin(a1)*sin(a2)*sin(t1) + cos(a1)*cos(a2)*cos(t2)*sin(t1)) - cos(t3)*(cos(t1)*cos(t2) - cos(a1)*sin(t1)*sin(t2))) + l4*cos(t4)*(sin(t3)*(cos(a2)*cos(t1)*cos(t2) - cos(a1)*cos(a2)*sin(t1)*sin(t2)) + cos(t3)*(cos(t1)*sin(t2) + cos(a1)*cos(t2)*sin(t1))) + l2*cos(a1)*cos(t1)*sin(t2) + l2*cos(a1)*cos(t2)*sin(t1) Velocidad lineal en z: 0
  • 59. Materia: Rev: Página 59 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales Resultados:
  • 60. Materia: Rev: Página 60 de 60Dinámica de Robots 0 Número de práctica Práctica Final Profesor: M. C. Mario Wenso Coutiño Morales Conclusiones: Por lo tanto, hemos aprendido el funcionamiento del prototipo de brazo robot, el cual implica la integración de conocimientos de distintas áreas como lo son: la mecánica, electrónica, matemáticas, computación, entre otras, para que se obtuvieran los resultados de dicho proyecto, al igual que se obtuvieron los conocimientos de la dinámica del brazo, desde orientar sus sistemas de referencias de los cuales dan lugar a su desplazamiento, hasta obtener las velocidades tanto,lineales, como angulares del brazo. Referencias: Cinemática y dinámica de robots manipuladores, Roger Miranda Colorado, Editorial: Omega, Primera edición.