lunes, 27 de enero de 2014

Marcador de baloncesto (con Tarjeta LKM1638 y Arduino)

En esta entrada explico como mi compañero de clase y yo hemos hecho un simulador de marcador de baloncesto con la tarjeta LKM1638 y un Arduino.



Descripción del funcionamiento:
A continuación vamos a explicar paso a paso como nosotros hemos pensado y hecho esta práctica, seguramente se podría haber hecho de otra forma y también estaría bien.
En primer lugar, como en todos los proyectos que se quieran hacer con el módulo  LKM1638 hay que agregar la librería con las funciones, poniendo #include <TM1638.h>, le hemos indicado que patillas del arduino funcionarán como I/O de datos, Strobe y CLK con; TM1638module(8,9,7);, además tenemos que declarar cierta variables; int suma; int centenas; int decenas; int unidades; int suma2; int centenas2; int decenas2; int unidades2;, estas variables digamos que nos definen las unidades, decenas y centenas que van a ir adquiriendo diferentes valores cuando se “sumen puntos”.



Terminado esto, llegamos al void setup(){ , en el que configuramos los displays para que se apagen, pasen dos segundos y los marcadores con sus distintas posiciones se pongan a cero (Con los puntos apagados) module.clearDisplay(); delay(2000);
  module.setDisplayDigit(0, 1, false);
  module.setDisplayDigit(0, 2, false);
  module.setDisplayDigit(0, 3, false);
  module.setDisplayDigit(0, 5, false);
  module.setDisplayDigit(0, 6, false);
  module.setDisplayDigit(0, 7, false);
Dentro del mismo setup hay que inicializar las variables que hemos declarado antes a cero;  suma=0; centenas=0; decenas=0; unidades=0; //suma2=0; centenas2=0; decenas2=0; unidades2=0;.







Ahora entramos en el void loop(){, digamos que ya es el programa en sí. Queremos que al accionar un pulsador, se sumen puntos, es decir; alguno de los equipos enceste, para eso introducimos
la instrucción de que al accionar un pulsador
if (module.getButtons()==0b00000001)
se encienda el led correspondiente del color que queramos, en este caso verde module.setLED(2,0);
y se acumule en este caso un punto suma=suma+1; decenas= suma/10; unidades=
suma-decenas*10;
y para que tenga en cuenta las centenas
if (decenas>=10) { centenas =1; decenas = decenas - 10;
module.setDisplayDigit(decenas,
2, false); module.setDisplayDigit(unidades, 3, false); module.setDisplayDigit(centenas,
1,false);
Esto último es para que aparezcan los valores de las unidades,
decenas y centenas que tienen que aparecer según se hayan incrementado.
También hay que hacer que los leds
correspondientes que se han encendido antes correspondientes al pulsador se
apaguen
delay(1000); module.setLEDs(0b0000000000000000);

Esto era para hacer la suma de las
canastas de un punto, con las de dos y las de tres se hace lo mismo, lo único
que cambia es el lugar del pulsador que hay que accionar y la suma que hacen; 2
y 3 puntos más cada uno.










También hemos tenido que incluir en este programa un reset para el marcador de cada equipo. Que con el pulsador indicado (module.getButtons()==0b00001000) se pongan todas las variables a cero en sus respectivas posiciones suma= 0;centenas= 0; decenas= 0; unidades= 0;

if (decenas>=10) { centenas =1; decenas = decenas - 10; } module.setDisplayDigit(decenas, 2, false); module.setDisplayDigit(unidades, 3, false); module.setDisplayDigit(centenas, 1,false);

y después de un segundo se apague el led que corresponde al reset delay(1000);
  module.setLEDs(0b0000000000000000);







Con el otro marcador hay que hacer lo
mismo pero teniendo en cuenta las posiciones y los colores de los leds.


Para terminar, aquí dejo un video que muestra el funcionamiento de nuestro programa (el reset a veces hay que pulsarlo varias veces para que ponga los contadores a cero, no lo detecta bien):

2 comentarios:

  1. me podrias enviar el codigo completo porfavor, a mi mail. jhonfonttz@hotmail.es

    ResponderEliminar
    Respuestas
    1. Hola qué tal podrías pasarme el código por favor
      miguelhector290902@gmail.com

      Eliminar