Arduino, Rasperry y algo más

Categoría: Arduslot

Un controlador de carreras para slot

Especificaciones del digitalizador de mandos v1

Su utilidad es permitir controlar el coche de una forma mas precisa que con un mando convencional, que no deja de ser una resistencia variable. Mi idea es, además, hacerlo compatible con todo tipo de mandos sencillos (los mas baratos y que van incluidos en cualquier circuito) para dotarlos de características avanzadas por poco dinero.

¿Que son estas características y a que necesidades responden?

Gestor de Carreras 1.0. Código comentado

Me encanta enseñar el código que escribo. ¿Por que?. En parte por un poco de orgullo. Pero también para que los demás puedan mostrarme mis errores o como puedo optimizar el rendimiento de lo que he escrito y para que los pocos que saben menos que yo tengan un algo que copiar, tal y como hago muchas veces. Creo que esa es una parte esencial del software libre, la reutilización de porciones de código así, por ejemplo, cuando he necesitado escribir en la LCD no he creado la librería, he utilizado una de código libre.

Gestor de Carreras 1.0 Primera versión definitiva.

Esta es la primera versión totalmente funcional del Gestor de Carreras de  Arduslot. Está basada en el hardware publicado en la anterior entrada. Sus características son:

  • Soporte para dos corredores.
  • Pantalla LCD retroiluminada (variable, pero se puede dejar fija con una resistencia normal o anaular) de 16×2 caracteres.
  • Necesita una sistema de detección de paso en la pista que sustituya a los botones «Corredor 1» y «Corredor 2». Yo he usado la pista de SuperSlot  (Scalextric fuera de España) y la de Scalextric (o SCX fuera de España). Se puede conectar poniendo un conector jack con lo que el uso de la pista de SCX es inmediato. Mas adelante presentare un sistema propio basado en fotodiodos.
  • Semáforo de 4 luces, tipo fórmula 1.
  • Altavoz con volumen regulable (se puede sustituir por un zumbador y/o dejar el volumen fijo con una resistencia normal)
  • Permite realizar tres tipos de carreras:
    1. Carrera a Número de Vueltas: Gana el primer corredor que da el número de vuelta determinado al principio.
    2. Carrera de resistencia: Es una carrera de una duración determinada en la que gana el que de más vueltas en un tiempo definido al principio, en horas (0 a 24)  y minutos (0 a 59).
    3. Entrenamientos. Sin límites. La carrera se acaba cuando se pulsa un botón.
  • En todos los tipos de carreras se guarda, para cada corredor el tiempo y el número de la vuelta rápida.

DESCARGA del archivo

Primera revisión del hardware del gestor de carreras

Hasta ahora todo lo que he publicado servía para controlar «carreras» de un solo corredor, lo cual no tiene mucho sentido ni es mi objetivo. Para ello necesito otro «sensor de pista» (en el prototipo un pulsador). Y como me he dado cuenta de una carencia fundamental en el diseño a la hora de manejar la entrada de datos (¡¡No puedo retroceder!!) lo cual no es importante en el menú, pero en el caso de las carreras a número de vueltas o de resistencia es muy importante si queremos que sean a un tiempo determinado, p.e., y nos pasamos con el botoncito.

Pues esos cambios, dos botones más, van conectados así:

Prototipo de Arduslot v2

Carrera a número de vueltas y entrenamientos

Ya tiene pinta de lo que quiero lograr: cuenta vueltas, calcula tiempos de vuelta y vuelta rápida y permite elegir entre los dos tipos de carreras (me falta la de resistencia, pero supongo que no tardará mucho, pues básicamente es lo mismo pero con diferentes condicionantes). Una vez funcione la carrera de resistencia añadiré el control del segundo corredor, lo que conllevará un pequeño aumento del hardware, que publicaré en cuanto lo tenga disponible.

El semáforo

Este es el primer código que creo para Arduino. Realmente es el primer código que escribo desde que hace años abandoné mi Spectrum y su Basic, y desde entonces los lenguajes y técnicas de programación han cambiado un «poquito». Este es el código:

Hardware de pruebas del Gestor de carreras

Este es el diseño sobre protoboard en el que voy a desarrollar el Arduslot:

Especificaciones del gestor de carreras

El núcleo del sistema. Constará de dos partes:

  1. Centralita: Con pantalla LCD de 16×2, un semáforo con 3 luces rojas y 1 verde y  los 4 botones necesarios para su manejo (+, -, INTRO y RESET). Tendrá dos conexiones : alimentación (entre 7V y 16V) y detector de paso de la pista, que es el otro elemento.
  2. Detector de paso: Puede ser de múltiples formas y usar diferentes métodos de detección. Cada uno de ellos aporta ventajas e inconvenientes, que estudiaremos mas adelante, aunque en principio usaré uno que, sin ser el mejor, me ha dado siempre buenos resultados: una lengüeta metálica en el raíl es presionada al pasar el coche y cierra el circuito eléctrico. En cuanto pueda subo una foto para explicarlo mejor. Aunque mi intención es usar un sistema fotoeléctrico: quiero hacerlo a nivel de la pista dentro del canal de la guía.

Respecto al software, además de manejar el semáforo y permitir correr o no a los coches, mostrará en la pantalla LCD los distintos tipos de carreras:

  • Entrenamiento: Sin ningún tipo de límite ni en vueltas ni en tiempo, mostrando la vuelta mas rápida según se vaya realizando y al final del entrenamiento.
  • Carrera clásica: A un número determinado, y configurable totalmente, de vueltas.
  • Resistencia: Carrera con límite de tiempo.

Y esto es lo que quiero hacer. Quizas no se cumpla todo, pero espero lograrlo.

Funciona con WordPress & Tema de Anders Norén