Task four. No me pienso tropezar.
Caso práctico
Cuaderno de bitácora. Día 7. Llevamos una semana en Marte. Gran parte del trabajo se ha concentrado en el estudio de las cuevas descubiertas por Nico y Mili, además de ir asegurando los sistemas de la nave y preparar el asentamiento definitivo durante nuestra estancia. Mili ha decidido que explore una cueva muy prometedora, mientras ellos se marchan a otra donde han pensado establecer la base de operaciones. Me ha dejado solita en una gran caverna de origen volcánico, cuyo suelo es prácticamente plano y sus paredes muy verticales y escarpadas. Aparentemente no comunica con ninguna otra caverna... Pero es lo que a Mili le gustaría saber. En fin, que me ha encargado que explore palmo a palmo la pared por si encuentro alguna abertura que conduzca a algún otro lugar. Pero de repente.... ¡¡Bluff!! ¡¡Se apagaron las luces!! ¡¡Menuda jugarreta!! A alguien se le ha olvidado recargar las baterías de las torres de iluminación... ¿Qué vas a hacer aquí Mara? ¿Te vas a quedar aquí atrapada a oscuras? ¿Dónde está ahora la salida? ¡No la veo! Mara ha decidido ir tanteando las paredes con su sensor de ultrasonidos. Irá probando hasta dar con la entrada de la caverna... pero no piensa tropezarse continuamente. |
Coloca a nuestra robot Mara frente a una pared, y ponla en funcionamiento.
Opcional 1: aumenta la velocidad a la máxima potencia. ¿Se detendrá en seco y no tropezará Mara con la pared? Opcional 2: si dispone de sensor de infrarrojo delantero, usarlo en vez de el de ultrasonidos (micro:bit Maqueen) Ampliación: intenta un programa que, si detecta la pared, vuelva hacia atrás, avance paralelamente a la pared un poco y vuelva a intentarlo, buscando una salida.
|
Proceso para llevar a cabo la tarea
El sensor de ultrasonidos HC-SR04
Robot de verdad, verdadero
¡Por fin estamos usando nuestra robot MARA como una verdadera robot! ¿Por qué?
Porque estamos usando sensores en la programación.
Y nuestra robot Mara tomará una decisión sin que se lo digamos. En lugar de eso, en función de lo que detecte en el entorno.
Sensor de ultrasonidos
En este primer reto MARA tiene incorporado un SENSOR DE ULTRASONIDOS. Sí, ese dispositivo gracioso que hace parecer que nuestra robot tiene ojos.
Ecolocalización
Pero en el fondo no son ojos; todo lo contrario. Es una boca y un oído. Si hay algo parecido en la naturaleza, lo tienen los murciélagos y algunos mamíferos marinos, como los delfines, y aves (ecolocalización). Estos animales emiten unos sonidos muy agudos o chillidos (ultrasonidos) que viajan rápidamente por el aire o por el agua. Estas ondas sonoras - ecos - rebotan en los obstáculos y vuelven a los órganos auditivos (oídos) de estos animales. Según el tiempo que tardan en ir y volver, pueden calcular la distancia a la que se encuentran.
Bloques de programación
Dependiendo del lenguaje de programación, este sensor puede leerse de diversas maneras. Por ejemplo:
Para saber más...
- Enlace a sensor ultrasonidos en makecode: https://blog.330ohms.com/2019/08/31/tutorial-5-sensor-de-distancia-con-maqueen/
- Apuntes de Visualino en Procomún: https://procomun.intef.es/ode/view/1453974406581 (Apuntes y proyectos VISUALINO II_ potenciómetro y LEDs. Sensores. A partir de la página 19).
- Ejemplo de código en Arduino. Tutorial de Luis Llamas: https://www.luisllamas.es/medir-distancia-con-arduino-y-sensor-de-ultrasonidos-hc-sr04/
- Ejemplo con la versión SRF05: http://arduparatodos.blogspot.com/2017/01/hc-sr04-o-srf-05-sensor-de-ultrasonido.html
Umbrales
¿Qué es un umbral?Se denomina umbral a un valor fijo de un sensor. Por ejemplo, el umbral en el ejercicio lo hemos establecido en 15 cm. Los umbrales se usan para delimitar la programación. En nuestro caso si los valores del sensor son mayores que 15 cm ejecutarán las órdenes para mover los motores. Si los valores son menores que 15 cm ejecutará la orden de paro y la de tocar la melodía. |
El bloque if
Condicionales
Los bloques "if" , o bloques "si", o condicionales, son bloques importantes usados en programación para ejecutar unas órdenes u otras si se cumple cierta condición.
Nosotros los usaremos para decidir si ejecutamos unas órdenes u otras órdenes distintas si el valor del sensor es mayor que el valor umbral o menor que el valor umbral.
Tipos de bloques condicionales
Existen tres variaciones: la primera, más sencilla, ejecuta unas órdenes si la condición es verdadera; la segunda, ejecuta además otras órdenes si no se cumple la condición y la tercera, más compleja, permite entre elegir más de una condición.
Paso a paso...
Pero, no nos liemos. Vamos a escribir nuestra condición despacio.
- ¿Qué queremos medir? Pues la distancia a la que el sensor de ultrasonido encuentra el obstáculo.
- ¿Con qué la vamos a comparar? Con el valor umbral de 15 cm.
- Podemos elegir una relación de comparación. En este caso elijo si es menor o igual.
Entonces, esta es nuestra condición:
makecode
Paso a paso...
De tal manera que dentro del bloque "si", si esa condición es verdadera, en el hueco se introducen las órdenes que deben cumplirse mientras la distancia sea menor o igual a 15 cm (en este caso parar los motores y tocar la melodía) y, si no se cumplen, en el hueco del "si no" se ponen las órdenes para cuando no se cumplen (moverse hacia adelante).
makecode
Para saber más...
- Más de condicionales para makecode: https://youtu.be/ODbggakwMk8
- Condicionales con arduinoblocks: https://youtu.be/d0Wcc0BL5Bo
- Condicionales en SCRATCH: https://youtu.be/t0cjd7-amNM
- Condicionales en ARDUINO
- Referencia del lenguaje LUIS LLAMAS: https://www.luisllamas.es/referencia-lenguaje-arduino/
- Guía de referencia arduino: https://www.arduino.cc/reference/es/language/structure/control-structure/if/
- Otra guía: http://euloxio.myds.me/dokuwiki/doku.php/doc:tec:elo:uc_arduino:arduino_c:condiciones
Razona el algoritmo
Averigua...
Una vez comprendida la misión, y elegido un lenguaje de programación adecuado a tu robot, intenta averiguar lo siguiente:
- ¿Qué órdenes o qué bloques necesitas para detectar distancia con el sensor de ultrasonidos?
- ¿Cómo distingues qué tiene que hacer el robot cuando la distancia sea menor o mayor al umbral?
Como siempre, puede ayudarte rellenar una tabla como ésta:
N |
Bloque o bloques (órdenes) |
Tiempo |
Observaciones |
1 | |||
2 | |||
3 | |||
4 | |||
... |
Cómo trabajar
- Normalmente se trabaja en parejas o en pequeños grupos, con un robot y un ordenador para programarlo.
- Aunque tu compañero/a sea quien maneje el ordenador o el robot, intenta siempre entender lo que estáis programando o haciendo: las órdenes o bloques que se están usando, el tiempo que tardan en ejecutarse, el orden en el que se colocan los bloques en el programa...
- Compartir las ideas con los demás, colaborar en lograr el reto, no molestar a otros grupos si están probando o trabajando...
- Si no sale a la primera, no desanimarse. Es normal que haya que hacer varias pruebas hasta que salga.
Pistas
La clave para el éxito está en:
- Pensar siempre, a priori, qué estamos haciendo.
- Averiguar los bloques de programación necesarios.
- Rellenar la tabla ANTES de programar el robot; al menos los bloques que creemos necesitar en el orden correcto.
- Nuestro código condicional se ejecuta dentro de un bloque POR SIEMPRE.
- Así que, constantemente, debe comprobar SI el valor del sensor es MENOR QUE EL UMBRAL o MAYOR QUE EL UMBRAL.
- En cada caso, deberemos dar las órdenes oportunas
- No pasar al paso siguiente hasta no tener seguro el anterior.
Repasando los contenidos de esta tarea
Observe las letras, identifique y rellene las palabras que faltan.
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0