En este reto hay que programar mBot para que sea capaz de operar un ascensor o montacargas de varias plantas.
Se trata de un reto de nivel intermedio.
Reto #30. Ascensor con mBot sin sensores adicionales.
El reto lanzado en el twitter de Juegos Robótica era el siguiente:
Para celebrar que hemos llegado hasta un número de retos redondo como son 30, y agradeceros el seguimiento que hacéis, he planteado un reto un poco más especial
Se trata de hacer un ascensor utilizando tan sólo un robot mBot y os he ido dejando unas pistas muy claras para ir planteando la solución.
La primera pista orientaba sobre la manera de guiar el hilo o cable que sostendrá la cabina de nuestro ascensor.
La segunda pista indicaba algo menos evidente y que os ha gustado mucho porque habéis entendido perfectamente la filosofía. En vez de intentar detectar la posición de la cabina mediante sensores de presencia vamos a utilizar el sensor de ultrasonidos para medir la distancia desde la parte superior del ascensor hasta la cabina y de esa manera podremos deducir en qué planta se encuentra.
Y la última pista indicaba algo que seguramente ya teníais en mente como es utilizar el mando a distancia de mBot para que funcione como botonera del ascensor para poder indicar el piso al que queremos enviar la cabina.
Una vez realizada la maqueta y con todos los elementos preparados para hacer su función sólo falta realizar el programa que en este caso no excesivamente complicado.
Recordad que hay diversas soluciones para un mismo problema, por lo que es posible que lo hayas resuelto de otra manera, pero igual que hago cada dos semanas desde hace más de un año aquí os dejo un vídeo con mi solución que espero os pueda servir en clase para motivar y hacer pensar a los chavales.
Posibles modificaciones.
Os podéis fijar que la parada de motor se efectúa en la zona de mando manual una vez ya se ha salido de los condicionales por pulsación de tecla y distancia.
Si esto os despista o puede despistar a vuestros alumnos, podéis eliminar la parte de mando manual (que únicamente usamos para posicionar al principio la cabina y tomar referencias) y añadir una orden de parar el motor al final de cada condicional, que aunque puede dejar más clara la parada no sería del todo correcto o limpio.
Cuantas menos órdenes se utilicen más rápido y depurado estará el programa, pero a veces puede quedar más claro si repetimos esa orden de parar motores inmediatamente después de la condición que ha motivado la puesta en marcha.
Ya os digo que esta no sería la forma más limpia y depurada de hacerlo pero quizá sea más didáctica y fácil de entender. También podéis poner una única orden de parar motor al final del “por siempre” para ahorrar comandos, aunque no quedase igual de visual.
Si vamos a utilizar alguna rutina que incluya la parada de motores también podemos aprovechar para utilizar las funciones. Por ejemplo si queremos indicar con una secuencia de sonidos que la cabina ha llegado a su planta, podemos introducir la parada de motores ahí. Aquí también se ha puesto sonido al pulsar el botón.
Hay mil maneras de hacerlo, y para más plantas se podría hacer con variables para ahorrar trabajo, aunque sería un reto de un nivel un poco más alto que si os apetece podemos plantear y resolver en un futuro.
Gracias, muchas gracias por seguir y utilizar los retos de Juegos Robótica. Si queréis ser vosotros los que lancéis el reto con Lego Mindstorms EV3, mBot o Arduino, no tenéis más que poneros en contacto o dejar un comentario.
La semana que viene tendremos nuevo reto, estad atent@s!
Deja una respuesta