Introducción a Programación y Robótica
Introducción a Programación y Robótica
2
ÍNDICE
INTRODUCCIÓN ............................................................................................................. 4
CAPITULO I ..................................................................................................................... 5
INTRODUCCIÓN A LA PROGRAMACIÓN......................................................................... 5
CAPITULO II .................................................................................................................. 14
CAPITULO IV ................................................................................................................. 21
BIBLIOGRAFÍA .............................................................................................................. 33
ANEXO II ....................................................................................................................... 34
MATRICES..................................................................................................................... 40
3
PROYECTO INTRODUCCIÓN A LA PROGRAMACIÓN Y ROBOTICA
INTRODUCCIÓN
“LEGO Education changed our school. These hands-on solutions level the
playing field and create an opportunity for even the least likely students to succeed”
Muchas Gracias
4
CAPITULO I
INTRODUCCIÓN A LA PROGRAMACIÓN
5
Programar es escribir todos los pasos a seguir por una computadora o robot
para que realice un trabajo.
CONSTANTES Y VARIABLES
VARIABLES
Estas posen un valor pero pueden cambiar en el transcurso de la ejecución del
programa. Para darle valor a una variable usamos la asignación. Las variables pueden
ser número letras pero siempre deben comenzar con una letra. Ejemplo
NUMERO = 18
A la variable NUMERO le damos valor de 18, ahora la variable NUMERO vale 18.
Ejemplo 2
LUIS14 = 35,40 Ahora LUIS14 vale 35,40
En el transcurso del programa puede encontrase con algo como LUIS14 = LUIS14 + 20
Entonces el valor de LUIS14 cambio a 55,40
6
OPERACIONES CON VARIABLES
VARIABLES NUMÉRICAS
Con las variable numéricas podemos realizar todas las operaciones matemáticas es
decir suma resta, multiplicación división potenciación, radicación y otras más
complejas. Ejemplo
VALOR = 10 + 23 * 10
O sea que valor ahora vale 240
ACTIVIDAD 1
LUIS14 = 2 + 16/2 -
LUIS14 = LUIS14 + 1
LUIS14 = LUIS14 + 10
¿Cuánto vale LUIS14? ………………………………………………………
NOMBRE1 = “ JUANA ”
NOMBRE2 = “LA BELLA”
NOMBRECOMPLETO = NOMBRE1 & NOMBRE2
¿Qué hay en NOMBRECOMPLETO? …………………………………………………………..
7
OPERADORES MATEMÁTICOS DE COMPARACIÓN Y OPERADORES
LÓGICOS
OPERADORES MATEMÁTICOS DE COMPARACIÓN
SIMBOLO SIGNIFICADO
> Mayor
< Menor
<> Diferente
>= Mayor o igual
<= Menor o igual
OPERADORES LOGICOS MÁS COMUNES
SÍMBOLO SIGNIFICADO
Or O v O
And O ᴧ Y
Not o ~ No
LÓGICA MATEMÁTICA
OPERADOR OR
8
P Q P OR Q (P v Q)
V V V
V F V
F V V
F F F
Ejemplo 1
Sea P : Juana Mira TV
Sea Q : Ramón lava los platos
Primer caso Si Juana Mira TV o Ramón lava los platos, basta que uno sea verdadero
para que el resultado sea verdadero.
Aquí este operador requiere que las dos proposiciones sean verdaderas para arrojar un
resultado verdadero
Ejemplo
Para que el resultado sea verdadero requiere que Ramón esté lavando los platos y
Juana mirando la TV. La tabla de verdad es la siguiente:
P Q P And Q (P ᴧ Q)
V V V
V F F
F V F
F F F
Este operado trabaja con una sola proposición y niega su valor. Ejemplo Sea P: juan
lava los platos.
9
Pero si digo Not P o ~P entonces el resultado será verdadero. La tala de verdad es la
siguiente.
P Not P (~P)
V F
F V
CASOS COMBINADOS
P Q R PᴧQ (Pᴧ Q) V R
V V V V V
V V F V V
V F V F V
V F F F F
F V V F V
F V F F F
F F V F V
F F F F F
Resumiendo basta que Laura decida ir al cumpleaños para que la condición sea
verdadera. Pero si Laura no va al cumpleaños requiere si o si que Juana este
mirando TV y Ramón este arreglando el auto para que la condición sea verdadera.
10
ACTIVIDAD 2
En un programa como una recete se comienza por lo que esta primero se sigue por el
segundo, después por el tercero y así hasta el final. Esto se conoce como
procesamiento secuencial. Ejemplo
Ejemplo
11
Imprimir en pantalla “ esto es todo amigos”
Aquí podemos ver que el programa comienza por la primera orden que es imprimir en
pantalla, luego entra al bucle, allí repetirá diez veces Valor +1 , imprimir “ valor vale”
1, 2,3,4,5 …10
EN RESUMEN TODAS LAS INSTRUCCIONES QUE ESTAN EN UN BUCLE SE REPITEN UNA
CANTIDAD DE VECES O HASTA QUE SE CUMPLA UNA DETERMINADA CONDICIÓN.
Ejemplo 2
Este programa solicitara el ingreso por teclado de un numero muchas veces y solo
saldrá del bucle si se ingresa el numero 9. Casa contrario se repetirá una y otras vez los
que está en el recuadro.
12
ESTRUCTURAS DE DECISIÓN TIPO SI..ENTONCES SEGÚN CASO
HACER..
Las estructuras de decisión tipo Si ..Entonces son muy importantes para comparar y
poner condiciones veamos un ejemplo.
MASA = 50
Ingrese valor para VOLUMEN
Si VOLUMEN > 100 ENTONCES IMPRIMIR PANTALLA “ ING VALOR MAS PEQUEÑO”
VOLUMENTOTAL = VOLUMEN - 10
SINO
FINSI
El ordenador aquí solicita el ingreso de un número para VOLUMEN, después se
compara este valor ingresado y si el valor ingresado es mayor a 100 entonces pide
nuevamente que ingrese otro número pero no realiza ninguna operación.
Si el numero ingresado es menor que en VOLUMEN es menor o igual a 100 entonces
asigna a la variable VOLUMENTOTAL el valor de VOLUMEN menos 10.
En la figura 2 A : el
programa envía un
mensaje SOY LINDOOO si
la condición IF resulta
verdadera, esto ocurre
cuando la variable VALOR
es menor que 100.
En la figura 2 B: se envía
un mensaje Soy Lindooo
únicamente si la
condición IF es
verdadera. Esto implica
decir que la variable
VALOR es menor a 100 y
además la variable NUMERO es igual a 9. En caso contrario (no se cumple la condición)
se enviara el mensaje Entonces soy feo.
13
CAPITULO II
No analizaremos con mucho detalle este entorno ya que resulta intuitivo y de muy
fácil utilización, solo lo usaremos para identificar algunas estructuras fundamentales
de la programación.
ACTIVIDAD 3
14
USOS DE VARIABLES
En la figura 4 para crear una variable debemos ir la pestaña DATA y allí pulsa el botón
Make a Variable nos abre una casilla donde debemos ingresar el nombre de nuestra
variable y especificar si la misma será de alcance global o local. Si es de alcance global
esa variable tendrá valor en todo las rutinas del programa. Si es de alcance local solo
será reconocido en este sector donde se escriba el código en otras ya no.
También posee otras opciones como.
En la figura 5 podemos pulsar la variable numero. Para
crear una nueva variable con el botón Make Variable.
También posee instrucciones como:
15
ACTIVIDAD 4
Las variables son a,b,c,d,r1 y r2 debemos ingresar por teclado. Luego hacemos los
cálculos y mostramos los resultados para x e y. Respuesta
16
CAPITULO III
El robot básicamente está constituido por u modulo central donde se almacena toda
la programación como así también datos de configuración de cada uno de sus puerto.
Cada una de sus partes como sensores o servomotores se conecta por cable con ficha
RJ45. Es Necesario ver en qué puerto conectamos cada uno de sus elementos. La
computadora y el programa de Lego Educations se lo puede bajar de internet o
instalarlo del disco que provee la caja. La conexión de la computadora al modulo
central se realiza por diversos medio que van desde el puerto USB, WIFI o bluetoth. La
más aconsejable si se utiliza computadora es la conexión por cable USB ya que la
conexión buetoth no resulta compatible con el bluetoth de Windows.
Existen muchos kit para armar robot de Lego en nuestro caso hablaremos del Kit Lego
Educations Mindstorms que posee determinadas características. En general podemos
armar siguiendo el procedimiento paso a paso de 4 robot diferentes:
Figura 6
17
El paso a paso incluye la
selección de cada una de las
piezas para el armado total tal
como se observa en la figura 7.
El kit expansión es una ampliación o complemento del kit básico existen una gran
variedad de kit expansión que van desde módulos de energías renovables para estudio
y armado de equipos que promueven el uso de energías renovables entre otros.
18
frecuencia y con el otro la percibe, Este sensor se utiliza para detectar objetos a determinada
distancia.
Este sensor se utiliza para medir el giro del robot en grados o radianes. Resulta de
importancia ya que puede medir ángulos y giros muy precisos.
19
central, allí se almacena el programa y ya no es necesario bajarlo de nuevo a menos
que se intente hacer modificaciones. Una vez bajado el programa al modulo central,
desconectamos el cable del usb del modulo a la Pc para luego ejecutarlo con el botón
modulo central.
Respuesta
20
CAPITULO IV
El entono de programación del EV3 es muy diferente o un poco raro ya que su entorno
esta realizado en LabView un programa hecho para programar mecanismos de
robótica e ingeniería (no encontraría un programa de bases de datos en Labview).
Aquí se utiliza una programación muy diferente de características gráficas más
parecida a los diagramas de flujos que a las tradicionales líneas de programación.
Actualmente ya se puede programar los EV3 con versiones especiales de Scratch para
los acostumbrados a ese tipo de programación o en Python con ciertas limitaciones.
ENTORNO DE PROGRAMACIÓN
21
A la derecha abajo podemos ver podemos ver el indicador de conexión de la PC con el
bloque central EV3. Ali nos indica si está conectado a USB, bluetoth o modo WIFI.
PESTAÑA NARANJA
BLOQUE ESPERAR ( B)
22
BLUCLES EN EV3
El ítem C es un bucle, es decir que repite un número de veces las instrucciones que se
encuentran dentro. La repetición puede ser un número de veces fija, infinita o a la
espera de una condición. Ejemplo
En la Figura 12C R1 tenemos el bucle que funciona con el sensor de color conectado
en el puerto 3 en el cuadro rojo, este bucle repite el mensaje “INGRESE COLOR ROJO”
en la pantalla del modulo central una y otras vez hasta que se detecte un color rojo.
Cuando esto ocurre se escuchara un sonido y aparece otro mensaje en el modulo
central “COLOR ROJO INGRESADO”
En la Figura 12D R1 cuando se pulsa le tecla play el Sensor Táctil detecta si este está
pulsado o no. El bloque Interruptor ( If Then) toma una decisión, si la condición es
verdadera (sensor esta pulsado) sigue su camino por la tilde (√) y toca un sonido. Si la
23
condición es falsa (el sensor táctil no está pulsado) toma otro camino el del (X) y allí no
hace nada.
PESTAÑA AMARILLA
Elemento A El modulo central posee varios botones alrededor del botón central, este
bloque de programación permite detectar que botón pulso el usuario para asi tomar
una acción.
Elemento C Girosensor puede resultar muy práctico su uso en Física o materias que
requieran mediciones ya que este permite detectar rotaciones en grados y la velocidad
con que lo hace. Puedo medir ángulos o velocidad angular. También podemos
comparar Angulo y razón de cambio.
Elemento E sensor de Rotación del motor: permite conocer la rotación del motor como
así también comparar con un valor arbitrario que podamos insertar.
24
Elemento G es el sensor temporalizador, permite medir el tiempo transcurrido. Es una
especie de reloj.
Elemento H sensor de choque o impacto: es uno de los sensores más sencillos y actúa
por presión. Cuando el robot choca se activa este sensor por presión.
Elemento I Sensor de ultrasonido en uno de los redondos emite una señal sonora
(ultrasonido no audible por el oído humano) y otro que lo percibe. Con esto detecta
obstáculos como un murciélago. Requiere de calibración.
PESTAÑA ROJA
En la figura 14
En la figura 14 A la variable se abre para lectura (para leer un valor) o escritura para
escribir un valor.
En la figura 14 A. Se abre
una variable para escritura
(para asignarle un valor).
Luego debemos especificar
el tipo de valor que tendrá,
si serán número o letras
(caracteres). También
puede tener valores
lógicos tipos verdadero y
25
falso y secuencia numérica vectores (variable estructurada). En el casillero de arrina
debemos especificar el nombre de nuestra variable para identificar. Ejemplo
En la figura 14 A R1
agregamos el bloque
operaciones matemáticas,
allí sumamos el valor de a=
10 + b=20 y el resultado
guardamos en la variable llamada Suma.
CONSTANTES
26
Construir un bloque de código para calcular el área de una circunferencia
Vamos a suponer que tenemos el valor numérico del radio en la variable radio. Para no
escribir el número Pi cada rato definimos una constante cuyo valor es 3,1415….. como
lo hacemos en el siguiente ejemplo.
En la figura 14B R1 primero definimos la constante PI. Luego abrimos la variable radio
par lectura, su valor elevamos al cuadrado con el bloque de operación matemática
potencia ( n =2) . Luego su resultado (potencia) transferimos al operando a. El valor de
la constante de Pi ya definida le asignamos al operando de b. Luego se multiplica a x b
y su resultado se guarda en una nueva variable llamada AREA (área de circunferencia).
En fin el resto de las herramientas son muy sencillas e intuitivas para su uso solo
requiere de práctica. Para más información recurrir al manual del usuario.
PESTAÑA AZUL
1
Estas herramientas escapan al nivel del curso, solo se hacen comentarios para tener una
vaga idea acerca de ellos.
27
Bloques:
El bloque A permite la apertura y el guardado de archivos.
El bloque B Registro de Datos una herramienta muy útil que explicamos a
continuación.
El bloque C se utiliza para el envió de datos. Resulta útil para la comunicación entre
varios robot (nivel avanzado).
El bloque D para configurar la comunicación por bluetoth.
Bloque F obtiene el valor del sensor sin procesar (nivel avanzado).
Bloque G y H Motor sin regular e invertir motor.
El bloque de Registro
de Datos. Este bloque
registra datos y
permite dar una
grafica cartesiana
asociado a los datos
que registra respecto
de un sensor. Como
vernos podemos
seleccionar cualquier
sensor cuyos datos
serán expuestos en una
gráfica en pantalla de
la PC en tiempo real o diferido. Resulta muy útil el su uso con el giro sensor. En física
podemos medir velocidad angular o desplazamientos precisos en grados.
28
EJEMPLO DE REGISTRO DE DATOS AUTONOMOS
Hacer un programa que registre un giro de 640 grados hacia la derecha registre los
datos en un archivo llamado giro1 luego detener el registro. Subir los datos registrados
(con el botón ↑ derecha parte de abajo) a la computadora y graficarlos.
RESPUESTA
29
datos como indica figura 18
Aquí debemos
buscar giro1
seleccionamos y
luego click en
IMPORTAR. Los datos se subirán y se graficaran como podemos ver en F20
Aquí podemos
observar cómo
se grafican los
datos
obtenidos por
el registro del
sensor
giroscopio.
30
MODELO DE ACTIVIDADES
MOVIMIENTOS BASICOS
ALGORITMO AVANZADO EL ROBOT SIGUE UNA LINEA OSCURA uso del sensor
de Color/luz reflejada.
31
comparación de luz reflejada, cuando este es menor a 50 ( condición
verdadera) sale por ( √ tilde ) y para el motor C y gira el motor B con una
potencia de 50 . Caso de que la condición resulte falsa (x) hace lo contrario
para B y gira C.
Al moverse por giros el robot se mueve a los tirones.
Este programa tiene un pequeño problema, y es que la cinta debe ser
bastante delgada, porque solo opera para valores menores y mayores que
50, es decir cuando el sensor esta fuera de la línea. Si la línea es gruesa
seria en este caso igual a 50 y en este caso no hace nada. Es bueno que
estos aspectos el alumno pueda advertir.
Hay otro algoritmo más sofisticado que podemos utilizar una opción sería
el programa de la figura F R5 pero no es la única ya que en programación
hay cientos de formas distintas para hacer algo.
SEMINARIO FINAL
32
ALTERNATIVA POSIBLE DE EJEMPLO
Bibliografía
Créditos de figuras
Las figuras son un 99% propiedad de GRUPO LEGO Dk 7190 Billund Dinamarca 2016 All Right
Reserve.
33
ANEXO II
ASPECTOS AVANZADOS
LOS VECTORES Y ARRAYS
a) Vectores.
b) Matrices.
VECTORES
34
Fin I *** fin del bucle y retorno a Para…
Asi I en el arranque vale 1 después que llega a fin I se incrementa uno y I vale
2 o sea I = 1,2,3,4….10. Alli en el interior del bucle se repetirá 10 vences y diez veces se
pedirá al usuario que ingrese Nombre y Apellido, que serán guardados en V(1),
V(2),…V(10).
Recordemos que el valor de las variables se guarda en memoria RAM, si se corta la luz
todos los valores de la variable almacenado en cada una de las posiciones se perderá.
Para mostrar los valores de un vector una vez cargados, debemos hacer lo
mismo, es decir recorrer todo el vector haciendo variar su índice. Ejemplo
Para i = 0 hasta 5
FIN PARA
Numeros 0
Numeros 0.5
Numeros 99
Numeros 1,23
Numeros 0
Numeros 400
El primer valor del vector siempre es cero, que por tradiciones y costumbres
de la matemáticas no lo usamos, pero hay que recordar que el valor 0 es el primer
valor de un vector o lista.
Al los vectores en muchos programas se los llama como listas o secuencia de
datos donde estos pueden ser numéricos o de cadena de caracteres.
ACTIVIDAD 1
35
Teniendo en cuenta la figura 22
36
VECTORES EN EV3
Veamos un ejemplo
37
Siguiendo la figura 25 vemos en:
1. Al operando (a) le asignamos 40 mientras que el (b) tiene el valor del
conteo del ciclo del bucle (en la primera vuelta vale 0 en la segunda 1 y así
hasta llegar a 10. De esta manera será 40 -0 = 40 , 40 -1= 39 , 40 -2 = 38 y
ese valor se pasa al OPERADOR DE SENCUANCIA en 2 en cada ciclo del
bucle.
2. OPERADOR SECUENCIA Lo abrimos en este caso en modo ANEXAR, de esta
manera va anexando valores a nuestro vector llamado VECTOR 1 y el índice
se incrementa solo. Lo que hace el operador secuencia es ir incrementado
el valor del índice del vector1.
3. En tres se carga el vector1 con el valor de la resta y se va corriendo el
índice. El vector es abierto aquí para escritura ya que le asignamos un
número que se va guardar en una posición que se va incrementando
automáticamente en cada ciclo que se repita el bucle.
NOTA: El ciclo se repetirá 10 veces porque fue configurado por CONTEO y tiene
una valor de 10.
Vamos a suponer que queremos leer todo el contenido de nuestro Vector1 secuencia y
su valor que es numérico hacerlo cadena de caracteres e imprimirlos el modulo
pantalla del robot.
38
1. En uno siguiendo la figura inmediata anterior lo que obtenemos es el
número de ciclos que va recorriendo el bucle (0,1,2,3,4,…10)
2. En 2 abrimos nuestro vector para lectura ya que pretendemos leer su
contenido.
3. Aquí el OPERADOR SECUENCIAL se configura para lectura de índice
numérico. El operador secuencial toma dos cosas de la variable toma su
contenido y todos sus paramentaros, y del bucle (cable del bucle) toma el
numero de ciclos que va realizando esto es para mover el índice del vector,
observemos como está conectado.
4. En 4 toma el valor numérico de la variable que nos da el OPERADOR
SECUENCIAL lo convierte en cadena de caracteres (número se transforma
en texto).
5. En 5 se envía para visualizar el texto convertido recientemente a la pantalla
del robot. Recordemos que la herramienta pantalla tiene dos opciones
mostrar un texto que uno escribe o la forma CONECTADO debemos
seleccionar esta opción ya que el texto va ir variando a medida que corra el
ciclo del bucle.
39
MATRICES
Como podemos ver es una matriz de 3x3 es decir tres filas por tres columnas. Las filas
son horizontales y se cuentan de arriba para abajo. La fila uno es la de 1 3 2 , la fila
dos 6 1 5 y l fila tres 5 8 1.
Para “ cargar” la matriz en esta caso matriz figura 24 podemos hacer así
40
Esta carga de matrices no se realiza por asignación de uno a uno, sino utilizando un
bucle anidado ( bucle dentro de otro bucle).
La programación del EV3 no soporta las matrices razón por la cual no vamos a
profundizar este tema ya que solo queda suscripto a lenguajes como Basic, Fortram,
Pascal y otros.
ACTIVIDAD 2
1) Dada la variable B(3,3) , cargue uno a uno los valores de la siguiente matriz
(descartamos B(0,0) )
41
ANEXO III
42
PROGRAMA DE CARGA DE LA LISTA
Veamos un trozo de programación y analicemos lo que hace:
BLOQUE 1 El bloque uno pone al sistema a la espera de que usted tome una pieza y
acerque al sensor de color. Una vez detectado el color el sensor emitirá un numero
que es el código de color.
BLOQUE 3 Es una variable llamada valore, se abre para escritura porque vamos a
escribir una valor en ella, el valor del color y la posición del índice que nos brinda
automáticamente el sistema (no debéis preocupar por ello).
BLOQUE 4 Se emite una señal sonora de un beep para indicar que el color fue
detectado y guardado correctamente.
BLOQUE 5 Los valores del bucle indica que el proceso se va a repetirá hasta que el
usuario apreté el botón de arriba del modulo. Solo así saldrá del bucle.
Es decir no hay mas fichas que cargar entonces debemos pulsar ese botón para
finalizar la carga.
43
PROCESO DE LECTURA DEL VECTOR LISTA
Una vez cargado el vector valore con todas las piezas que deben ser ordenadas ahora
viene el proceso de ordenamiento lo que se hace con el bloque de la figura 29
BLOQUE 4 Se abre el vector (secuencia numérica) que contiene los códigos de colores
vectore para lectura nada más. Este bloque de programación esta dentro del bucle se
repetirá la cantidad de FIN veces (FIN tiene el numero fichas cargadas contadas desde
cero).
44
indicara que vaya leyendo en la primera vuelta vectore(0) , en la segunda vuelta
vectore(1),…y así hasta llegar a la vuelta número FIN.
BLOQUE 7 Aquí entra a trabajar usted mi joven amigo. Aquí usted debe comparar con
un interruptor (bloques de la banda naranja if then) la variable común llamada color si
es rojo entonces mueva el motor hasta donde está la caja del rojo y luego mueva el
otro motor para depositar la ficha. Aquí le dejo un consejo siempre que mueva para
rojo vuelva o retorne a la posición inicial que debe ser común para todos los colores.
Sea que usted deba avanzar 5 revoluciones para acomodar el rojo, luego de colocar
la ficha roja retorne en sentido contrario 5 revoluciones. Si avanza 2 revoluciones para
colorar la ficha azul una vez depositada retroceda 2 posiciones nuevamente y así
sucesivamente Son algunos consejos que le ahorraran muchos dolores de cabeza.
BLOQUE 9 Se abre para lectura la variable fin que contiene la cantidad de elementos
cargados. El valor de la variable FIN se transfiere al bucle que debe estar configurado
POR CONTEO. De esta manera el bucle se repetirá las veces que sea necesario hasta
ordenar todas las fichas.
Puede que este código tenga algunos defectos ya que no fue probado, pero si usted
llego a entender el procedimiento que es lo más importante, entonces usted ha
aprendido y podrá programar cosas mucho más complejas…
45