DOMINADOR es un cronómetro para deportes de Airsoft y Paintball, que permite medir el tiempo de un punto con una resolución de segundos. El cronómetro está equipado con una pantalla de caracteres LCD de 16x2 / 20x4. Después de encender el dispositivo, es posible cambiar entre los elementos del menú en la pantalla usando el codificador rotatorio - KY-040. A través de los elementos, es posible iniciar el modo de juego DOMINADOR, que responde a los botones del usuario (entradas), o es posible establecer el tiempo de ocupación del equipo antes del juego en el modo configurable. Este parámetro representa el tiempo requerido que se presiona la tecla hasta que el equipo ocupa el punto con éxito. Este parámetro configurable se implementa para el número de segundos. El segundo parámetro configurable es el final automático del juego para llegar a un cierto número de horas del cronómetro con la opción ILIMITADO - cuando el cronómetro cuenta hasta el infinito, o después del tiempo máximo de visualización - 99 horas, 59 minutos, 59 segundos. El cronómetro utiliza un microcontrolador de control Arduino (Arduino Uno/Nano) o un chip separado (Atmel) ATmega328P, que controla toda la lógica del sistema. Hay 2 equipos en el juego: equipo RED y equipo GRE que juegan uno contra el otro y ocupan el punto imaginario que está formado por este dispositivo - DOMINATOR. Al comienzo del juego, la pantalla muestra los tiempos 00 horas, 00 minutos, 00 segundos para equipo ROJO , equipo GRE .
Botón DOMINADOR utiliza la entrada de botón para la acción de los miembros del equipo, así como la entrada de la entidad árbitro. En total, se utilizan 2 botones para 3 entidades del sistema en el sistema DOMINADOR Configurable. Se utilizan los botones de alternar conectados en el modo INPUT_PULLUP. Al presionar el botón, la señal GND se envía al terminal de entrada digital Arduino (señal de conmutación Active-LOW). Se utilizan los botones de alternar, no los botones de alternar (no responderían a la lógica del sistema, todos ellos estarían siempre "pulsados"). El DOMINADOR configurable responde a la longitud de la prensa, que se establece en el menú de configuración a través de un codificador. Se requiere mantener presionado el botón durante un tiempo determinado. El sistema no responde a pulsaciones breves. En la versión extendida, también es posible configurar la neutralización de puntos (detener el tiempo del equipo activo en el punto si un miembro del otro equipo mantiene presionado el botón al menos el 50 % del tiempo requerido) Los tiempos se muestran en una pantalla de caracteres LCD de 16x2 o 20x4, que se comunica con el microcontrolador de control a través del bus I2C. Si un equipo de un equipo RED ocupa un punto pulsando un botón, sonará un zumbador que anunciará el cambio de punto con un pitido breve. Luego, el LED ROJO del equipo en esta estación se encenderá y la pantalla comenzará a agregar tiempo para ese equipo.
Si el punto está ocupado por el equipo GRE y el miembro del equipo presiona el botón correspondiente, el zumbador vuelve a sonar, el LED del equipo GRE se enciende, el tiempo del equipo RED se detiene y el Se calcula el tiempo del equipo GRE, qué punto ocupó. El árbitro debe presionar ambos botones al mismo tiempo para detener los dos tiempos. Los tiempos se paran hasta que el punto es reocupado por alguno de los equipos del sistema Por lo tanto, este tipo de entrada es adecuado para iniciar un descanso, pero también puede finalizar el juego para su evaluación. ¡En el modo de juego CUENTA REGRESIVA, la combinación de ambos botones está diseñada para detener la cuenta regresiva! El nuevo juego se implementa reiniciando toda la placa Arduino a través del botón RST o desconectando y volviendo a conectar la fuente de alimentación. En el menú también es posible configurar la actividad/inactividad del zumbador, que también se puede incluir en el juego. El modo de juego DOMINADOR utiliza un zumbador para anunciar la ocupación actual de un punto. Eraser no existe en este tipo de DOMINADOR. Se puede implementar un segundo juego en el sistema: la cuenta regresiva, que le permite establecer una cuenta regresiva de minutos mientras debe detenerse. El jugador detiene la cuenta regresiva manteniendo presionados ambos botones durante un cierto tiempo (según el menú de configuración para la duración de la pulsación de DOMINADOR).
Arduino Uno / Nano (ATmega328P) | Convertidor I2C para pantalla LCD |
GND | GND |
5V | Vcc |
A4 | SDA |
A5 | SCL |
Arduino Uno / Nano (ATmega328P) | Codificador rotatorio - KY-040 |
GND | GND |
5V | + |
D3 | CLK |
D4 | DT |
D5 | SW |
Arduino Uno / Nano (ATmega328P) | LED diodos |
GND | GND |
D6 | IN (RED) |
D7 | IN (GREEN) | Arduino Uno / Nano (ATmega328P) | Botones (INPUT_PULLUP) |
GND | GND |
D8 | IN (RED) |
D9 | IN (GRE) | Arduino Uno / Nano (ATmega328P) | Zumbador |
D10 | IO |
GND | GND |
Está disponible una versión Shareware (.hex) para el proyecto DOMINADOR Configurable. La versión permite medir un máximo de 60 segundos para cada equipo. Cuando se alcanza este tiempo, el cronómetro se detiene. El objetivo de la versión es verificar la compatibilidad con su hardware. Los códigos de máquina basados en la dirección del convertidor I2C para la pantalla LCD están disponibles en el repositorio de Github. Las direcciones más utilizadas son 0x27 y 0x3F. Si no conoce la dirección de su convertidor, use el ejemplo incorporado en Arduino IDE -> Escáner I2C, que escribirá la dirección en la interfaz UART (monitor en serie). El código de la máquina se puede cargar en el microcontrolador Arduino Uno a través del software AVRDUDE, parte del IDE de Arduino, o con una interfaz GUI a través de XLoader - más fácil de usar.
Nombre del firmware (en la carpeta encoder_dominator) | Funcionalidad de firmware | Descargar |
encoder_0x27.ino.hex | Firmware de prueba del proyecto Configurable Botón Dominator, permite medir tiempos de 15 segundos para cada equipo. Diseñado para pantalla de caracteres LCD de 16x2 o 20x4 con convertidor I2C, que se comunica en la dirección 0x27 | Descargar firmware |
encoder_0x3F.ino.hex | Firmware de prueba del proyecto Configurable Botón Dominator, permite medir tiempos de 15 segundos para cada equipo. Diseñado para pantalla de caracteres LCD de 16x2 o 20x4 con convertidor I2C, que se comunica en la dirección 0x3F | Descargar firmware |
La biblioteca Wire está integrada en el IDE de Arduino, no se requiere instalación. El programa se puede compilar y verificar la comunicación a través del bus I2C con pantalla LCD de caracteres. El convertidor I2C debe conectarse a Arduino a los terminales de hardware I2C (SCL a A5, SDA a A4) antes de cargar el programa, es suficiente incluso sin pantalla. La dirección de visualización recuperada debe proporcionarse para una compilación exitosa de Arduino y su arquitectura de destino.
#include <Wire.h> void setup() { Wire.begin(); Serial.begin(9600); while (!Serial); // Leonardo: wait for serial monitor Serial.println("\nI2C Scanner"); } void loop() { byte error, address; int nDevices; Serial.println("Scanning..."); nDevices = 0; for(address = 1; address < 127; address++ ) { // The i2c_scanner uses the return value of // the Write.endTransmisstion to see if // a device did acknowledge to the address. Wire.beginTransmission(address); error = Wire.endTransmission(); if (error == 0) { Serial.print("I2C device found at address 0x"); if (address < 16) Serial.print("0"); Serial.print(address,HEX); Serial.println(" !"); nDevices++; } else if (error==4) { Serial.print("Unknown error at address 0x"); if (address < 16) Serial.print("0"); Serial.println(address,HEX); } } if (nDevices == 0) Serial.println("No I2C devices found\n"); else Serial.println("done\n"); delay(5000); // wait 5 seconds for next scan }