En este reto hay que intentar leer un código de barras que nosotros diseñemos para poder utilizar en la identificación de ciertos elementos, como por ejemplos los libros de una biblioteca.
Se trata de un reto de nivel medio.
Reto #12: Lector de códigos de barras.
El reto lanzado en el twitter de Juegos Robótica era el siguiente:
La pista dada al lanzar el reto era bastante clara. El sensor sigue líneas que incluye mBot de serie es el único elemento que va a ayudarme a poder leer un código puesto que puede diferenciar perfectamente negro sobre blanco en un papel.
La primera idea que se os puede ocurrir es crear un código suficientemente grande como para que mBot se mueva por encima de él mientras va leyendo las barras, y quizá midiendo tiempo calcular el grosor de las barras o el número de barras negras y espacios en blanco.
Yo he preferido dedicarle un poco más de tiempo a adaptar mecánicamente el sensor sigue líneas de manera que se pueda pasar una tarjeta con el código de barras sobre él y siempre manteniendo las distancias para que la lectura sea correcta.
El sensor sigue líneas de Makeblock está compuesto a su vez por dos sensores formados, cada uno de ellos, por un emisor y un receptor de infrarrojos. La idea es manejar uno de esos sensores internos para detectar una banda de control que sea igual en todos los códigos de barras y que nos ayudará a saber cuando empieza y cuando acaba el código. Utilizaremos esa banda de control para saber cuando hacer lectura exactamente con el otro sensor interno de las barras que conforman el código de barras propiamente y que si van a cambiar de un código a otro.
El código completa sería algo así. En cada tarjeta se debe respetar aproximadamente la distancia de la banda de control al canto de la tarjeta que luego pasaremos desplazando lateralmente por encima del sensor sigue líneas. Respetando esa distancia aseguraremos que la lectura será correcta y que cada sensor interno leerá la parte que le corresponde del código.
Ya que en la versión básica de mBot con la que pretendemos solucionar los retos no disponemos de matriz de leds o display de 7 segmentos, vamos a visualizar la lectura a través del ordenador trabajando con mBot conectado al ordenador transfiriendo datos. Debido a la comunicación la velocidad de todo el programa será más lenta, por lo que las barras del código deben de ser suficientemente anchas para tener tiempo suficiente de tener una lectura correcta.
Si grabásemos el programa en mBot de manera que fuera autónomo las barras podrían ser más estrechas y podríamos pasar el código sobre el sensor a mayor velocidad.
En el siguiente vídeo puedes ver cómo se ha resuelto el reto a nivel de programación paso a paso:
Como puedes ver el código lo leemos y almacenamos en binario. Una posible ampliación de este reto sería programar un conversor de binario a decimal.
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!
Dani S.
Deja una respuesta