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) -
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.