Projekt-Repository - Shareware-Firmware für konfigurierbaren Dominator: Domination Timer firmware
Wenn Sie Firmware für den konfigurierbaren Stoppuhr der Dominanz erwerben möchten, wenden Sie sich an: martinius96@gmail.com
Arduino LCD Drehcodierer Stoppuhr Planen Taste Menu Paintball Stoppuhr der Dominanz

Konfigurierbarer Stoppuhr der Dominanz - Stoppuhr für Airsoft | Paintball


Entitäten im Projekt konfigurierbar Stoppuhr der Dominanz:

RED mannschaft
RED mannschaft
Schiedsrichter - eine Kombination beider Tasten stoppt die Zeit
Schiedsrichter / STOP
GRE mannschaft
GRE mannschaft

Projektbeschreibung:


Stoppuhr der Dominanz ist ein Gerät - eine Stoppuhr für Sportarten wie Airsoft oder Paintball, mit der Sie die Zeit der Besetzung eines Punktes mit einer Auflösung von Sekunden messen können. Die Stoppuhr ist mit einer 16x2 / 20x4 LCD-Zeichenanzeige ausgestattet. Nach dem Einschalten des Gerätes kann mit dem Drehgeber - KY-040 - zwischen den Menüelementen auf dem Display umgeschaltet werden. Über die Gegenstände ist es möglich, den Stoppuhr der Dominanz-Spielmodus zu starten, der auf Benutzertasten (Eingaben) reagiert, oder die Zeit der Teambelegung vor dem Spiel im konfigurierbaren Modus einzustellen. Dieser Parameter gibt die erforderliche Länge des Haltens der Taste an, bis das Team den Punkt erfolgreich belegt. Dieser konfigurierbare Parameter wird für die Anzahl der Sekunden implementiert. Der zweite konfigurierbare Parameter ist das automatische Ende des Spiels, um mit der Option UNLIMITED eine bestimmte Anzahl von Stunden der Stoppuhr zu erreichen - wenn die Stoppuhr bis unendlich zählt oder nach der maximalen Anzeigezeit auf dem Display - 99 Stunden, 59 Minuten, 59 Sekunden. Die Stoppuhr verwendet einen Arduino-Steuerungs-Mikrocontroller (Arduino Uno / Nano) oder einen separaten Chip (Atmel) ATmega328P, der die gesamte Systemlogik steuert. Es gibt 2 Teams im Spiel - RED mannschaft un GRE mannschaft, die gegeneinander spielen und den imaginären Punkt einnehmen, der von diesem Gerät gebildet wird - DOMINATOR. Zu Beginn des Spiels zeigt das Display die Zeiten 00 Stunden, 00 Minuten, 00 Sekunden für an RED mannschaft, GRE mannschaft.

Konfigurovateľný DOMINATOR - výber konfigurovateľného parametra Konfigurovateľný DOMINATOR - menu pre nastavenie maximálnej dĺžky hry

Taste Stoppuhr der Dominanz verwendet die Tasteneingabe für die Besetzung eines Punktes durch ein Teammitglied sowie für die Eingabe einer Schiedsrichterentität. Somit werden insgesamt 2 Tasten für 3 Systementitäten verwendet, wobei die im INPUT_PULLUP-Modus verbundenen Schalttasten verwendet werden. Durch Drücken der Taste wird das GND-Signal dem digitalen Arduino-Eingangsanschluss (Active-LOW-Schaltsignal) zugeführt. Schalttasten werden verwendet, keine Schalttasten (sie würden nicht auf die Systemlogik reagieren, die gesamte Software würde immer "gedrückt" werden). Der konfigurierbare Stoppuhr der Dominanz reagiert auf die Länge der Presse, die im Konfigurationsmenü über einen Encoder eingestellt wird. Es ist erforderlich, die Taste für eine bestimmte Zeit gedrückt zu halten. Das System reagiert nicht auf kurzes Drücken. In der erweiterten Version können Sie auch die Punktneutralisierung festlegen (Anhalten der Zeit des aktiven Teams an dem Punkt, an dem ein Mitglied des anderen Teams die Taste mindestens 50% der erforderlichen Zeit gedrückt hält) Die Zeiten werden auf einer 16x2- oder 20x4-LCD-Zeichenanzeige angezeigt, die über den I2C-Bus mit dem Steuermikrocontroller kommuniziert. Wenn ein Teammitglied des ROTEN Teams per Knopfdruck einen Punkt belegt, wird ein Summer ausgelöst, der mit einem kurzen Piepton eine Änderung des Punktes ankündigt. Dann leuchtet die LED des ROTEN Teams an dieser Station auf und die Anzeige fügt Zeit für dieses Team hinzu.


Wenn der Punkt vom GRE-Team belegt ist und das Teammitglied die entsprechende Taste drückt, ertönt der Summer erneut, die GRE-Team-LED leuchtet auf, die ROTE Zeit wird angehalten und die Zeit des GRE-Teams, das den Punkt belegt hat, wird gezählt. Der Schiedsrichter muss beide Tasten gleichzeitig anhalten, um beide Male anzuhalten. Die Zeiten werden angehalten, bis der Punkt von einigen Teams im System erneut belegt wird Diese Art der Eingabe eignet sich daher zum Starten einer Pause, kann aber auch das Spiel für die Auswertung beenden. Beim COUNTDOWN-Spielmodus soll die Kombination beider Tasten die Countdown-Zeit stoppen! Das neue Spiel wird implementiert, indem das gesamte Arduino-Board über die RST-Taste zurückgesetzt oder die Stromversorgung getrennt und wieder angeschlossen wird. Im Menü ist es auch möglich, die Aktivität / Inaktivität des Summers zu konfigurieren, die auch im Spiel enthalten sein kann. Der Stoppuhr der Dominanz-Spielmodus verwendet einen Summer, um die aktuelle Besetzung eines Punktes anzukündigen. Radiergummi existiert in diesem Stoppuhr der Dominanz-Typ nicht. Ein zweites Spiel kann im System implementiert werden - Countdown, mit dem Sie einen Minuten-Countdown einstellen können, während dieser gestoppt werden muss. Der Player stoppt den Countdown, indem er beide Tasten eine bestimmte Zeit lang gedrückt hält (basierend auf dem Konfigurationsmenü für die Dauer des Drückens von Stoppuhr der Dominanz).


Liste der Zeiten - DOMINATION:


Liste der Zeiten auf der LCD-Zeichenanzeige 20x4 - Arduino Stoppuhr der Dominanz - DOMINATOR

Liste der Zeiten - COUNTDOWN:


Liste der Zeiten auf der LCD-Zeichenanzeige 20x4 - Arduino Stoppuhr der Dominanz - COUNTDOWN

Kompatible Steuerungshardware - Konfigurierbarer Stoppuhr der Dominanz:



Kompatible Peripheriegeräte - Konfigurierbarer Stoppuhr der Dominanz:



Schaltplan - Konfigurierbarer Stoppuhr der Dominanz


Konfigurovateľný Domination Timer - schéma zapojenia - Arduino / Airsoft, stopwatch, DOMINATION

Konfigurierbarer Stoppuhr der Dominanz - Spielmodus DOMINATION


Konfigurovateľné stopky - Arduino pre Airsoft, Paintball

Die Verdrahtung der Klemmen - Konfigurierbarer Stoppuhr der Dominanz - entspricht vollständig dem Schaltplan:

Arduino Uno / Nano (ATmega328P) I2C-Wandler für LCD-Anzeige
GND GND
5V Vcc
A4 SDA
A5 SCL
Arduino Uno / Nano (ATmega328P) Drehcodierer - KY-040
GND GND
5V +
D3 CLK
D4 DT
D5 SW
Arduino Uno / Nano (ATmega328P) LED Dioden
GND GND
D6 IN (RED)
D7 IN (GREEN)
Arduino Uno / Nano (ATmega328P) Taste (INPUT_PULLUP)
GND GND
D8 IN (RED)
D9 IN (GRE)
Arduino Uno / Nano (ATmega328P) Summer
D10 IO
GND GND

Testprogramm (Shareware) - Konfigurierbarer Stoppuhr der Dominanz mit Maschinencode


Für das Projekt Configurable Stoppuhr der Dominanz ist eine Shareware-Version (.hex) verfügbar. Mit der Version können Sie maximal 60 Sekunden für jedes Team messen. Wenn diese Zeit erreicht ist, stoppt die Stoppuhr. Ziel der Version ist es, die Kompatibilität mit Ihrer Hardware zu überprüfen. Maschinencodes, die auf der I2C-Konverteradresse für das LCD-Display basieren, sind im Github-Repository verfügbar. Die am häufigsten verwendeten Adressen sind 0x27 und 0x3F. Wenn Sie die Adresse Ihres Konverters nicht kennen, verwenden Sie das in Arduino IDE -> I2C Scanner integrierte Beispiel, das die Adresse in die UART-Schnittstelle (serieller Monitor) schreibt. Der Maschinencode kann über die AVRDUDE-Software - Teil der Arduino IDE - oder über den XLoader mit einer GUI-Schnittstelle einfacher auf den Arduino Uno-Mikrocontroller hochgeladen werden.

  • AVRDUDE muss über das mit der Arduino IDE installierte CMD (Befehlszeile) ausgeführt werden. Gelegen in C:/Users/[User]/Documents/ArduinoData/packages/arduino/tools/avrdude/6.X.X-arduino/bin
  • Beispielbefehl zum Hochladen eines Programms auf Arduino Uno / Nano (ATmega328P):
  • Für Firmware mit I2C-Anzeigeadresse 0x27 (Beispiel COM-Port 21 und 115200 Baud / s): avrdude -CC: avrdude.conf -v -patmega328p -carduino -PCOM21 -b115200 -D -Uflash:w:encoder_0x27.ino.hex:i
  • Für Firmware mit I2C-Anzeigeadresse 0x3F (Beispiel COM-Port 21 und 115200 Baud / s): avrdude -CC: avrdude.conf -v -patmega328p -carduino -PCOM21 -b115200 -D -Uflash:w:encoder_0x3F.ino.hex:i
  • XLoader ist eine Windows-Anwendung (ausführbares EXE-Tool) mit einer einfachen grafischen OberflächeDies ermöglicht die Auswahl von Firmware - Maschinencode (.hex), der Zielplattform und kann dynamisch den COM-Port anzeigen, an dem sich das Gerät befindet.
  • Durch einfaches Klicken auf Hochladen kann der Maschinencode automatisch hochgeladen werden (XLoader verwendet das AVRDUDE-Tool ähnlich der Arduino IDE). Das XLoader-Fenster informiert über den erfolgreichen Upload in Form einer Liste der Anzahl der hochgeladenen Bytes.
  • Die Firmware kann aus dem Repository heruntergeladen werden: HIER. Die Firmware ist nach der Adresse des I2C-Konverters unterteilt (Sie haben dies anhand der Ausgabe des I2C-Scanners auf der UART-Schnittstelle herausgefunden).

    Verfügbare Firmware - Konfigurierbarer Druckknopf Stoppuhr der Dominanz

    Firmware-Name (im Ordner encoder_dominator) Designed für Herunterladen
    encoder_0x27.ino.hex LCD-Zeichenanzeigegröße 16x2 oder 20x4 mit I2C-Wandler, der unter der Adresse 0x27 kommuniziert Firmware herunterladen
    encoder_0x3F.ino.hex LCD-Zeichenanzeigegröße 16x2 oder 20x4 mit I2C-Wandler, der unter der Adresse 0x3F kommuniziert Firmware herunterladen

    I2C-Scanner - ein Programm zum Lesen der Adresse des I2C-Wandlers für das LCD-Display


    Erwartete Ausgabe des I2C-Scanners:

    Výpis I2C adresy, na ktorej komunikuje I2C prevodník pre displej 16x2 / 20x4
    Die Wire-Bibliothek ist in die Arduino IDE integriert. Eine Installation ist nicht erforderlich. Das Programm kann sofort hochgeladen werden. Es wird empfohlen, den Hardware-I2C-Konverter für die 16x2 / 20x4-Anzeige auch ohne Anzeige anzuschließen, bevor Sie das Programm starten.
    #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
    }