Bouton DOMINATOR est un appareil - chronomètre pour les sports Airsoft et Paintball. Le chronomètre utilise un microcontrôleur de contrôle Arduino (Arduino Uno / Nano) ou une puce séparée (Atmel) ATmega328P, qui contrôle l'ensemble de la logique du système. Le chronomètre comprend un affichage LCD de caractères mesurant 16x2 (16 caractères x 2 lignes), ou 20x4, qui affiche les temps des équipes individuelles. Il y a 2 équipes dans le jeu - l'équipe RED et l'équipe GRE qui jouent les uns contre les autres et occupent le point imaginaire formé par cet appareil - DOMINATOR. Au début du jeu, l'écran affiche les temps 00 heures, 00 minutes, 00 secondes pour l'équipe ROUGE , équipe GRE .
Bouton DOMINATOR utilise l'entrée de bouton pour l'action des membres de l'équipe, ainsi que l'entrée d'entité d'arbitre et de gomme. Ainsi, un total de 4 boutons pour 4 entités système, les boutons de commutation connectés en mode INPUT_PULLUP sont utilisés. Appuyez sur le bouton pour envoyer le signal GND à la borne d'entrée numérique Arduino (signal de commutation Active-LOW). Les boutons à bascule sont utilisés, pas les boutons à bascule (ils ne répondraient pas à la logique du système, tous seraient toujours "pressés"). Le bouton DOMINATOR est disponible en deux versions : La version de base répond immédiatement à un bouton d'occupation de point. La version avancée vous oblige à maintenir le bouton enfoncé pendant 5 secondes pour réussir à occuper un point. Les temps sont affichés sur un afficheur LCD 16x2 ou 20x4 caractères, qui communique avec le microcontrôleur de contrôle via le bus I2C. Si une équipe d'une équipe ROUGE occupe un point en appuyant sur un bouton, un buzzer se déclenchera, qui annoncera un changement de point par un bip court. Ensuite, la LED de l'équipe ROUGE de cette station s'allumera et l'affichage commencera à ajouter du temps pour cette équipe.
Si le point est occupé par l'équipe GRE et que le membre de l'équipe appuie sur le bouton approprié, le buzzer retentit à nouveau, la LED de l'équipe GRE s'allume, le temps de l'équipe ROUGE est mis en pause et le Le temps de l'équipe GRE est calculé, quel point occupé. Si l'organisateur (l'arbitre) appuie sur son bouton, les deux temps sont mis en pause jusqu'à ce qu'un membre de l'une des équipes effectue une saisie de l'utilisateur. Ce type d'entrée est donc adapté pour démarrer une pause, mais peut également terminer le jeu pour évaluation. Bouton DOMINATOR a un quatrième bouton pour l'entité gomme, qui s'interrompt et réinitialise les deux fois aux valeurs initiales comme après le démarrage du chronomètre Button DOMINATOR. Utilisé pour redémarrer le jeu, initialiser un nouveau jeu. Le projet convient aux événements Airsoft, aux installations sportives ou aux équipes Airsoft, qui peuvent construire l'équipement. L'avantage du système Bouton DOMINATOR est qu'il peut être cloné et créer X points avec la même configuration via le code machine, qui peut être chargé dans un nombre illimité de cartes et de puces Arduino et garantit un fonctionnement identique de l'application. Les joueurs peuvent ainsi marquer plus de points dans le jeu, tandis qu'à la fin du jeu, le temps est ajouté tant que quel point a été occupé par quelle équipe. Il est également possible d'utiliser des boutons avec une bougie de préchauffage intégrée, ce qui améliore la lisibilité et révèle la couleur des boutons individuels dans l'obscurité.
Les boutons sont connectés en mode INPUT_PULLUP, ils utilisent une résistance PULLUP interne de 20 kΩ, qui maintient le niveau logique HIGH sur l'entrée numérique. Lorsque le bouton est enfoncé, le signal LOW est envoyé à l'entrée numérique. En fonction du type de bouton et de la version du micrologiciel utilisés, l'Arduino peut vérifier la durée du maintien du bouton et la logique du compteur est exécutée indépendamment. Lorsque la condition du changement au point est remplie, l'Arduino déclenche un bourdonnement, appliquant des états numériques aux LED. La logique système est exécutée toutes les 1000 ms - routine 1 Hz (temporisée via la fonction millis(), c'est-à-dire via Timer 0), quel que soit l'état des entrées numériques. Dans cette routine, une vérification d'équipe active est effectuée, suivie du temps. L'heure est tracée dynamiquement sur un écran LCD 20x4 ou 16x2 caractères. L'écran communique avec l'Arduino via un bus I2C avec un signal d'horloge (SCL) de 100 kHz - Vitesse standard. La réécriture de l'affichage prend ainsi jusqu'à environ 15 ms, tandis que seule la ligne de l'équipe donnée qui est active au point est écrasée. Avec un sérieux intérêt, le firmware de DOMINATOR peut être étendu à 3 ou 4 équipes.
Arduino Uno / Nano (ATmega328P) | Convertisseur I2C pour écran LCD |
GND | GND |
5V | Vcc |
A4 (Hardware SDA) | SDA |
A5 (Hardware SCL) | SCL |
Arduino Uno / Nano (ATmega328P) | Ronfleur |
GND | GND |
5V | Vcc |
D5 | IN |
Arduino Uno / Nano (ATmega328P) | LED |
GND | GND |
D4 | IN (RED) LED |
D3 | IN (GREEN) LED | Arduino Uno / Nano (ATmega328P) | Boutons (INPUT_PULLUP) |
GND | GND |
D6 | IN (GREEN) |
D7 | IN (ERASER) |
D8 | IN (Rozhodca) |
D9 | IN (RED) |
Nom du micrologiciel (dans le dossier button_dominator) | Conçu pour | Télécharger |
0x27.ino.hex | Le firmware du bouton de test du Bouton Dominator permet de mesurer un temps de 15 secondes pour chaque équipe. Conçu pour un affichage de caractères LCD 16x2 ou 20x4 avec convertisseur I2C, qui communique à l'adresse 0x27 | Télécharger le micrologiciel |
0x3F.ino.hex | Le firmware du bouton de test du Bouton Dominator permet de mesurer un temps de 15 secondes pour chaque équipe. Conçu pour un affichage de caractères LCD 16x2 ou 20x4 avec convertisseur I2C qui communique à 0x3F | Télécharger le micrologiciel |
La bibliothèque Wire est intégrée à l'IDE Arduino, aucune installation n'est requise. Le programme peut être compilé et vérifié la communication via le bus I2C avec affichage de caractères LCD. Le convertisseur I2C doit être connecté à Arduino aux bornes matérielles I2C (SCL à A5, SDA à A4) avant de charger le programme, cela suffit même sans affichage. L'adresse d'affichage récupérée doit être fournie pour une construction réussie pour Arduino et son architecture cible.
#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 }