miércoles, 4 de mayo de 2016

Bloques de programación de LEGO de Mindstorms

Para programar los robots de LEGO se utiliza un entorno de programación gráfico llamado NXT, basado en la colocación de bloques configurables. Cada bloque tiene una función distinta. A continuación observaremos a profundidad a cada uno de estos bloques.


Bloques de acción

Los bloques de acción controlan las acciones del programa. Controlan las rotaciones de los motores, así como las imágenes o textos en pantalla, los sonidos y las luces de estado. Los bloques de acción son:
  • Bloque Motor mediano (Figura 1): Puede encender y apagar el motor, controlar el nivel de potencia o encender el motor ya sea por una cantidad especifica de tiempo o rotaciones.
  • Bloque Motor grande (Figura 2): Controla un motor grande y actúa de la misma forma que bloque motor mediano.
  • Bloque Mover dirección (Figura 3): Puede impulsar el robot hacia adelante, hacia atrás, hacerlo girar o detenerse, por lo tanto, puede hacer que se mueva en dirección recta, gire en arcos o haga giros cerrados. Use este bloque para vehículos robots que tengan dos motores grandes. Use este bloque para vehículos robots que tengan dos motores grandes (uno para derecha y otro para la izquierda)
  • Bloque Mover Tanque (Figura 4): Es muy similar al bloque mover dirección, pero tiene una forma distinta de controlar los giros.
  • Bloque Pantalla (Figura 5): Puede mostrar textos o gráficos en la pantalla del Bloque EV3
  • Bloque de Sonido (Figura 6): Reproduce un sonido con el parlante que esta adentro del Bloque EV3. Puede reproducir archivos de sonidos grabados previamente o puede especificar una nota o un tono musical.
  • Bloque Luz de estado EV3 (Figura 7): Controla la luz de estado del Bloque EV3, puede encender la luz de estado del Bloque EV3 en verde, naranja o rojo, apagarla o hacer que se encienda o apague intermitente mente
Bloques de control de flujo
Los bloques de flujo controlan el flujo del programa. Todos los programas se comienzan por el bloque de inicio.
  • El Bloque de inicio (Figura 8): marca el inicio de una frecuencia de bloques de programación en el programa. Todas la secuencias con un Bloque de inicio iniciaran automáticamente cuando se ejecuta el programa y las secuencias ejecutaran al mismo tiempo
  • Bloque Esperar (Figura 9): Hace que su programa espere a que suceda algo antes de continuar con el siguiente bloque de la secuencia.
  • Bloque de Bucle (Figura 10): Es un contenedor que puede mantener una secuencia de bloques de programación. Ara que la secuencia de bloques dentro de el se repita.
  • Bloque interruptor (Figura 11): Es un contenedor que puede contener dos o mas secuencias de bloques de programación. Cada secuencia se llama caso.
  • Bloque interrupción del Bucle (Figura 12): Hace que un bloque bucle termine. No se ejecutaran mas bloques en la secuencia del bucle y el programa continuara con los bloques que estén después del bucle
Bloques de control de sensor
Los bloques de sensores permiten a tu programa leer los datos proporcionados por el sensor de color, el sensor IR y el sensor táctil, y hacer otras muchas cosas.
  • Bloque Giro Sensor: Obtiene datos del Giro Sensor. Puede medir la razón de rotación o el ángulo de rotación y obtener una salida numérica
  • Bloque Sensor de Color (Figura 14): Obtiene datos del Sensor de Color. Puede medir el color o la intensidad de la luz y obtener una salida numérica.
  • Bloque Rotación de Motor (Figura 16): Obtiene los datos del Sensor de Rotación del motor que esta incorporado en los motores medianos, grandes y NXT. Puede medir cuanto giro un motor en grados o rotaciones.
  • Bloque Sensor Táctil (Figura 18): Obtiene datos del Sensor Táctil. Puede comprobar si el sensor táctil esta presionada, no presionado o en contacto, y obtener una salida lógica (verdadera o falsa)
  • Bloque Temporizador (Figura 17):  Obtiene tiempo del Temporizador interno del Bloque EV3. Puede medir el intervalo del tiempo en segundos y obtener una salida numérica
  • Bloque Botones del Bloque EV3 (Figura 13): Obtiene datos de los botones del Bloque EV3, que son los 5 botones (izquierda, centro, derecha, arriba y abajo) en el frente del bloque EV3
Bloques de datos
Los bloques de operaciones de datos te permiten leer y escribir variables, comparar valores y hacer otras muchas cosas.
  • Bloque Variable (Figura 19): Le permite leer o escribir una variable en su programa. También puede crear una nueva variable y ponerle un nombre
  • Bloque Constante (Figura 20): Le permite ingresar un valor que puede utilizar en varias ubicaciones diferentes en su programa. Si cambia el valor de la constante, todas las ubicaciones donde utiliza la constante obtendrá el valor actualizado
  • Bloque Operaciones Secuenciales (Figura 21): Puede crear una secuencia, agregar elementos, leer y escribir elementos individuales y obtener la longitud de una secuencia.
  • Bloque Operaciones Lógicas (Figura 22): Realiza una operación lógica en sus entradas y muestra el resultado. Una operación lógica toma entrada que son verdaderas o falsas y produce un salida verdadera/falsa.
  • Bloque Matemática (Figura 23): Realiza un calculo matemático en sus entradas y muestra el resultado. Puede hacer una operación matemática sencilla con una o dos entradas.
  • Bloque Redondear (Figura 24): Redonda un numero decimal a un valor entero. Puede redondear un numero hacia arriba, abajo o al entero mas cercano.
  • Bloque Comparar (Figura 25): Compara dos numero para averiguar si son iguales o para saber que numero es mayor. El resultado es verdadero o falso.
  • Bloque Alcance (Figura 26): Comprueba si un numero esta dentro o fuera de una conjunto numérico especifico. El resultado es verdadero o falso
  • Bloque Texto (Figura 27): Puede combinar hasta tres cadenas de texto en una sola cadena.
  • Bloque Aleatorio (Figura 28): Puede mostrar un valor numérico o lógico aleatorio. Puede utilizar el resultado del Bloque Aleatorio para hacer que el robot elija de manera aleatoria diferentes acciones
Bloques Avanzados
Los bloques avanzados te permiten administrar archivos, establecer conexiones Bluetooth y hacer otras muchas cosas.
  • Bloque Acceso al Archivo (Figura 29): Le permite leer y escribir datos en archivos desde archivos en su bloque EV3
  • Bloque Mandar Mensaje (Figura 30): Se utiliza para enviar mensajes Bluetooth entre bloques EV3. Para enviar o recibir un mensaje los bloques EV3 deben estar conectados a través del menú Blutooth
  • Bloque Conexión de Bluetooth (Figura 31): Se utiliza el bloque conexión Bluetooth para encender o apagar el Bluetooth, conectarse a otro dispositivo Bluetooth, o para cerrar la conexión con otro dispositivo Bluetooth
  • Bloque Comentario (Figura 37): Le permite escribir comentarios dentro de un programa. Este bloque no es un bloque de programación lo que significa que no hay ninguna acción programable asociada a el
  • Bloque Mantener Activo (Figura 32): Reinicia el temporizador de suspensión del bloque EV3
  • Bloque  Valor de Sensor Sin Procesar (Figura 33): muestra la lectura del lector sin procesar, que es un valor entre 0 y 1023, este solo tiene un modo
  • Bloque Detener (Figura 36): Finaliza de inmediato cualquier secuencia de bloques de programación y termina el programa 
  • Bloque Invertir el Motor (Figura 35): Cambia la dirección del motor, cuando invierte la dirección de un motor o un bloque de programación que normalmente hace que el motor gire en sentido horario
  • Bloque Motor Sin Regular (Figura 34): Controla tanto los motores medianos como los grandes. Puede encender un motor y cambiar su nivel de potencia.
Rutina de programación
Hacer un programa que haga que el robot se impulse hacia adelante a una velocidad/potencia de 10 (constante) y, luego, compruebe si el sensor táctil está presionado (repitiendo esto 3 veces). Si es así se ejecutará el caso Verdadero y el robot girará a la derecha (dirección 50) a una velocidad 10 y mostrará en la pantalla “Night”. Si no está presionado el sensor táctil, se ejecutará el caso Falso y el robot girará a la izquierda (dirección -50) a una velocidad de 10 y que a continuación se encienda la luz de estado amarilla cuando el sensor de color detecta una intensidad de luz ambiental mayor que 20, que espere 3 segundos y luego compruebe si el sensor táctil está presionado. Si es así se ejecutará el caso Verdadero y el robot mostrará en pantalla “Thumbs up”. Si no está presionado el sensor táctil, se ejecutará el caso Falso y el robot mostrará en pantalla “Thumbs down”. Después de repetir el primer interruptor 3 veces el robot avanzará en línea recta a una velocidad constante de 10 hasta que se presione el botón centro, luego el robot se detiene.


Utilizamos los bloques: 
  • Bloque mover la dirección 
  • Bloque pantalla
  • Bloque luz de estado
  • Bloque iniciar
  • Bloque esperar
  • Bloque bucle
  • Bloque interruptor
  • Bloque botones del bloque EV3
  • Sensor de color
  • Sensor táctil
  • Bloque constante

Pseudocódigo

Inicio
    Declarar variables
        potencia: constante (10)
        dirección: entero
        segundos: entero
        archivo: texto
        botón: entero
        estado: entero
        conteo: entero
        comparador: entero
        límite: entero
        color: entero
    Encender A+D dirección 0 potencia 10
      Inicio de bucle
          Si {estado de sensor es pulsado} hacer 
              {avanzar dirección 50 potencia 10
                   Si {estado de sensor es pulsado} hacer
                      Mostrar "night" en pantalla
                  Fin si
          Si no
                {avanzar dirección -50 potencia 10}
                    Si {luz ambiental ˃ a 20} hacer
                       Encender luz de estado 1 esperar 3 segundos
                           Si {estado de sensor es pulsado} hacer 
                               Mostrar en pantalla "thumbs up"
                           Si no
                               Mostrar en pantalla "thumbs down"
                           Fin si
                    Fin si
             Fin si
        Repetir 3 veces
        Fin del bucle
     Avanzar dirección 0 potencia 10 hasta que botón 2 esté presionado entonces detener
Fin

Vídeos de apoyo


 

Integrantes del equipo:
Diana Laura Rubio Gracia
Marcela Castillo Orduño
Laura Vianey Gamboa del Castillo
Ana Lenytza Granich León

Grupo: 
402

Materia: 
Tecnologías de la Información II

Maestra:
Areli Moreno Hernández