micro:bit
VI


13. BUCLES

    13.1 BUCLES BÁSICOS: "REPETICIÓN" Y "CONDICIONAL"

    Este vídeo adelanta la teoría que va a estudiarse en este apartado.
    Presenta el concepto de "Bucle" y explica el Bucle de "Repetición" y el "Bucle Condicional", poniendo un ejemplo de la diferencia entre éstos últimos y las órdenes "Condicionales" del tipo "Si... entonces..."


 

    13.2 CONTADOR

    La sección denominada "Bucles" contiene bloques cuya función es repetir una serie de órdenes.
    El bloque denominado "Repetir... veces" sirve para repetir ciertas órdenes un número concreto de veces.
    El programa siguiente utiliza este bloque para contar un número del 1 al 9 y mostrarlo en la pantalla. Es necesario crear previamente una Variable a la que se ha llamado NUMERO.
    La orden "Cambiar... por..." sirve para aumentar (o disminuir) el valor de la variable en la cantidad que se indique.





RETO 15

Modifica el programa anterior para que cuente hacia atrás, desde 9 hasta 0

    13.3 INDICADOR DE DIRECCIÓN SUR

    El Bucle denominado "Mientras..." es también un condicional: Repite las órdenes que inlcuidas en su "pinza" mientras se continúe cumpliendo cierta condición.
    En el programa siguiente se utiliza para mostrar una flecha mientras que la placa esté orientada al Sur o, como mucho, 10º por encima o por debajo (entre 170º y 190º).


Orientación SUR +-10
NOTA: Para que la brújula funcione adecuadamente la placa tiene que estar en posición horizontal


RETO 16

Realiza un programa con las condiciones siguientes:
  • La pantalla parpadeará continuamente (puedes hacerlo alternando dos iconos)
  • Mientras la brújula apunte hacia el NORTE, aparecerá fija en la pantalla una FLECHA apuntando arriba
  • Debes usar el bloque "Mientras..." para conseguirlo

   13.4 BUCLES FRENTE A CONDICIONALES

    El funcionamiento de este último "Bucle" es aparentemente similar al de un "Condicional". Sin embargo  hay una diferencia importante:
  • Un "Condicional" ejecuta las órdenes que abarca su "pinza" si se cumple cierta condición, pero a continuación lee el resto de órdenes engarzadas.
  • Un "Bucle" repite continuamente las órdenes incluídas en el mismo mientras se cumple cierta condición. En algunos casos esta condición consiste simplemente en una cuenta, debiendo repetirse un número concreto de veces; en otros casos la condición depende del valor de una vaiable o un sensor. Pero mientras se cumple la condición, el programa repite las órdenes que abarca la "pinza", dejando de ejecutarse el resto de bloques que pudieran venir a continuación. Por tanto el "Bucle" interrumpe el programa hasta que deje de cumplirse la condición.
    Comprueba la diferencia experimentando con los programas siguientes:

USANDO UN CONDICIONAL

Condicional


USANDO UN BUCLE
Bucle Mientras



RETO 17

Crea un programa en el que:
  • Mientras la luminosidad sea alta, el programa cuenta números hacia adelante, mostrándose en la pantalla
  • Si la luminosidad deja de ser alta, el programa deja de contar números, borrándose la pantalla


14. SENSOR DE ULTRASONIDOS

    14.1 FUNCIONAMIENTO DEL SENSOR DE ULTRASONIDOS

    El Robot DG-Cat viene con una pieza que se acopla en la parte frontal, que consiste en un Emisor y un Receptor de ultrasonidos, situado a modo de "Ojos".

HCSR04P
   

    El Sensor de ultrasonidos mide la distancia que hay hasta un objeto que se interponga delante
:
HCSR04P - Distancia


    Una vez que cargamos las librerías de DG-Cat para micro:bit MakeCode, encontramos entre los bloques de Mbit_Robot existe uno que nos proporciona el Valor de la Distancia en cm: Ultrasonic Distance
    Este valor lo podemos introducir en cualquier otro bloque que lo admita para utilizarlo del modo que deseemos. En el ejemplo siguiente se aplica para que se muestre en el display la distancia medida:



Medida distancia Robot Maqueen
(Imagen: DFRobot - Robot Maqueen)




    14.2 ROBOT QUE EVITA OBSTÁCULOS

     Podemos hacer que DG-Cat reaccione si se acerca demasiado a un objeto. Para ello utilizaremos el bloque de Comparación que se encuentra en el apartado de Lógica Logica
Comparacion

    En el programa siguiente, el robot se detiene si está a menos de 20cm del obstáculo. Además se ha hecho que la velocidad dependa de la distancia, de modo que cuanto más cerca esté del objeto, más despacio se moverá el robot:




RETO 18

Amplía el programa anterior para conseguir lo siguiente:
  • Si la distancia al objeto es mayor de 35cm, el robot avanzará en línea recta a velocidad fija. Ajusta la velocidad para que el robot pueda reaccionar con seguridad.
  • En caso contrario, el robot rotará: a la izquierda o a la derecha (elige tú el sentido)


RETO 19

MÁS AVANZADO

Modifica el programa anterior para conseguir lo siguiente:
  • Si el objeto está situado a menos de 35 cm, el robot rotará: unas veces a la derecha y otras a la izquierda, de modo aleatorio. Por tanto debes incluir un programa que seleccione un sentido al azar.
  • En caso contrario, el robot avanzará en línea recta a velocidad fija. Ajusta la velocidad para que el robot pueda reaccionar con seguridad.
  • Además, se añadirá efectos de luz:
    • Cuando el robot avance, los LEDS BIG se iluminarán en VERDE
    • Cuando el robot gire, los LEDS BIG se iluminarán en ROJO
Los obstáculos deben ser de una altura suficiente para que los detecte el sensor de ultrasonidos
Esquiva obstaculos Maqueen
(Imagen: DFRobot - Robot Maqueen)

PISTA: El problema de usar un sentido aleatorio es que el coche cambia de dirección si se está leyendo continuamente la orden que produce este efecto. Para evitarlo utiliza un "Bucle" del tipo "Mientras..." para que se ejecute la orden de rotación durante todo el tiempo que se cumpla una condición, dejando fuera del bucle las órdenes que hacen que cambie el sentido

Bucle Mientras...



15. SEGUIDOR DE LÍNEA CON DG-CAT

    15.1 EL SENSOR DE INFRARROJOS

    Debajo del chasis del Robot DG-Cat hay situadas dos parejas de emisor+receptor de infrarrojos. Cada pareja se conoce como SENSOR DE INFRARROJOS:


    Las librerías de DG-Cat para micro:bit MakeCode permiten detectar el tono de color situado bajo estas parejas E+R de infrarrojos, distinguiendo entre el:

BLANCO y el
NEGRO

     Desde el icono Mbit_Robot icono Mbit_Robot se accede a un bloque que proporciona el valor de cada sensor: izquierdo o derecho: y que distingue entre el color BLANCO/NEGRO
Bloque de pareja de infrarrojos

   

    15.2 DETECCIÓN DE COLOR NEGRO/BLANCO

    El programa siguiente detecta cuándo ambos sensores están situados sobre una línea o superficie negra, encendiéndose en ese caso los LEDS BIG de color ROJO:


Detector de Linea Negra



(Vídeo: DGRobot - Micro-log)

RETO 20

Modifica el programa anterior para que el DGCat actúe de la forma siguiente:
  • Si ambos sensores de iR (infra-Rojos) están situados en una zona de color BLANCO, se encenderán los LEDs RGB en color VERDE
  • En caso contrario, los LEDs se encenderán en color ROJO

 

    15.3 ANCHURA DE LA LÍNEA NEGRA

    Un seguidor de línea es un robot que avanza siguiendo el recorrido que marca una línea, habitualmente de color Negro.
    El diseño del seguidor de línea depende del grosor de la misma, ya que la pareja de sensores iR están separados unos 20mm y abarcan hasta una anchura de 30mm:

LÍNEA GRUESA

El grosor de la línea es de 30mm o más.
Ambos sensores quedan dentro de la línea NEGRA.

Esta será la posición para que el coche AVANCE
Grosor de Línea Mayor de 30mm


LÍNEA FINA

El grosor de la línea es de 20mm o menos.
Los sensores se sitúan en la superficie BLANCA por fuera de la línea negra.
Esta es la posición normal de AVANCE en este caso

Grosor de línea menor de 20mm


    15.4 SEGUIDOR DE LÍNEA NEGRA ANCHA

    En el diagrama siguiente se analizan las distintas posiciones que pueden adoptar los sensores del DG-Cat respecto a una línea NEGRA de tamaño 30mm o superior y cómo debe reaccionar el robot en cada caso.

    Observa que se ha incluido al final el caso en que el robot se sale completamente de la línea, optando por que el robot gire a la derecha para que trate de reencontrarse con la línea

    El programa siguiente trata de reproducir las indicaciones del diagrama anterior, ofreciendo una posible solución para hacer que DGCat siga una línea de color NEGRO de un tamaño ANCHO:

Programa seguidor de linea Negra Ancha


    El vídeo que se observa a continuación muestra el resultado de la ejecución del programa anterior para el SEGUIDOR DE LÍNEA GRUESA:


(Vídeo: DGRobot - Micro-log)

    15.5 SEGUIDOR DE LÍNEA NEGRA FINA

    En nuestro caso, el robot DG-Cat viene con un MAPA impreso en papel, a modo de CIRCUITO con una línea negra de 18mm. Como referencia se ha marcado la posición de una posible "línea de salida":
Mapa Linea Negra Fina DAGU Robot

    Al tratarse de una línea considerada FINA -de anchura menor a 20mm- el diagrama de las posiciones de los sensores iR y el comportamiento del DG-Cat es distinto:
Diagrama Seguidor Linea Fina
    Se incluye al final el caso en que el robot cruza la línea Negra. En este caso se decide que el robot gire a la derecha para tratar de reincorporarse al recorrido.


RETO 21

SEGUIDOR DE LINEA NEGRA FINA
Realiza los cambios necesarios al programa anterior para conseguir que el Robot DGCat siga una línea negra FINA utilizando el mapa incorporado en la caja.
Para ayudarte, fíjate en las indicaciones del diagrama anterior


Para comprobar su funcionamiento sitúa el robot
en una POSICIÓN CENTRADA en la LINEA NEGRA. Pruébalo en ambos sentidos



Para lograrlo puedes modificar los bloques y también sus variables, como la velocidad o el tipo de giro


RETO 22

MÁS AVANZADO

LÍMITE DE LÍNEA NEGRA
Modifica el programa anterior para conseguir que el Robot DGCat se mueva POR EL INTERIOR DEL MAPA, SIN SALIRSE DEL BORDE MARCADO POR LA LÍNEA NEGRA

Para demostrar su correcto funcionamiento prueba el programa colocando el robot
en EL INTERIOR DEL MAPA, sin tocar la línea negra. Comprueba que funciona en ambos sentidos



Para conseguirlo puedes modificar los bloques y sus variables como la velocidad o el tipo de giro


Creative Commons BY-NA-SA