Pues he llegado un poco tarde a esto de Micro:bit , mi hija me comentaba el otro día que en el cole habían hecho algún proyecto con esta “cosa” tremendamente versátil que incluye una cantidad insospechada de sensores y posibilidades para disfrute de pequeños y mayores.
Resulta que pensando qué hacer con este cacharro y tratando de motivar a la pequeña (aunque me hacía más ilusión a mi que a nadie) se me ocurre ver la caja del scalextric abandonado encima del armario…
“hay que ver que no sé qué velocidad pueden coger los cochecillos estos…” ..uhm , no puede ser tan difícil no? Pues vamos a ello
Datos para tratar de resolver el problema:
- Para calcular la velocidad necesito distancia y tiempo
- La pista mide X
- El coche tarda T en recorrer la pista
¿Cómo recoger los datos?
Necesitamos principalmente el tiempo que tarda el coche en dar una vuelta completa a la pista. Debemos por tanto tomar registro del instante en que inicia la carrera y de nuevo registro del instante cuando el coche vuelva a pasar por el punto de partida, así sabremos el tiempo total en dar una vuelta….Ahora viene la experimentación..(esto me llevo dos días de pruebas)
Para que la Micro:bit registre un instante o un pulso tenemos la opción de usar los pines de la tarjeta, los cuales que vienen con unos cablecitos muy cómodos de usar. (después hasta pensé usar el sensor magnético…ya que el coche tiene un imán que lo mantiene pegadito a la pista y podría detectar el paso del coche si aumenta un valor en este sensor…pero no era muy fiable pues podía estar registrando valores altos antes y después del paso del coche)
Vale busquemos inspiración para hacer que el coche “toque algo” cuando pase por el punto….como soy un viejuno, se me vino a la cabeza el Delorean de Regreso al Futuro…con un cable que al pasar junte los polos del circuito y se haga la magia. No fue tan sencillo.
Primero traté de poner un cable pelado sobresaliendo del coche para que al pasar tocase los dos extremos del circuito pero por lo visto el coche pasaba demasiado rápido y no hacia buen contacto entre las pinzas…después probe a usar un pequeño mecanismo parecido a un botón que pulsaba el coche también mediante un pequeño cartón que sobresalía de este….pero aquí pasó que al tocar por el lateral el coche se desestabilizada (pesan poco estos cochecicos) …unas horas y pruebas después…vi una referencia por internet donde se usaba un planteamiento parecido con papel plateado y me llamo la atención que estos eran bastante anchos … pensé que era lo que necesitaba…aumentar la superficie de contacto …
Y surgió esto (Fig 1), dos tiras de papel plateado alargadas que quedan paralelas a la vía del coche y a las que conectaba las pinzas del circuito…me faltaba pues que el coche cerrara el circuito al pasar…por lo que le cogí la idea al propio coche mirando sus escobillas de contacto.. con dos laminitas de papel dobladas las pegue con cinta y pintaba bien.
Fig 1 | Fig 2 |
El código Micro:bit
Ahora tocaba programar…
El algoritmo básico consistía en que en el momento de recibir una señal se registre de cualquier forma el instante para posteriormente calcular la diferencia de tiempo transcurrido.
Resulta que en MakeCode, la plataforma para programar Micro:bit tenemos la posibilidad de añadir como extensión un modulo para crear un log (genial por su versatilidad y facilidad de uso), llamado DataLogger. Esta extensión te permite mediante un bloque sencillo registrar de forma automática el instante que necesitamos y cualquier dato adicional que quieras cargar grabándolo en una tabla. Los datos se quedan registrados y después los descargas nada mas conectar la tarjeta al PC.
Si tenemos ya la forma de registrar el tiempo, nos falta un pequeño algoritmo para tratarlo.
Con la idea de verificar que efectivamente se registraba cada paso…surgió la posibilidad de encender un Led en cada paso y así teníamos dos ventajas añadidas…por un lado nos servia como contador de vueltas!! y por otro sabíamos que se había registrado el pulso..muy útil para no tener que estar desconectando continuamente la tarjeta y conectándola de nuevo al PC para ver los datos.
También podía pasar otra cosa….que se nos llenase el log durante las pruebas o que algún paso no se registrara correctamente…por lo que con una simple instrucción al pulsar el botón A el log se borraba y empezábamos de cero. …aquí tenemos los pulsos registrados, 18 vueltas sin fallar :-D.
El resultado
Aquí os muestro el resultado registrado. En la primera columna se registra el momento en el que pasa el coche…en segundos y en la segunda columna simplemente registre el numero de vuelta (aunque cambiaba por cada fila, tampoco servía de mucho después)
Estos datos son los que necesitábamos…si los tratamos en Excel por ejemplo podemos rápidamente obtener el tiempo medio entre todas las vueltas que resulto ser de …
Tiempo Medio: 1.42 segundos
Si previamente hemos medido la pista, esta media 220 cm
Tenemos que: V = 2.2/1.42 => 1.5 m/s => 5.4 Km/h