Репозиторий проекта - условно-бесплатная прошивка для настраиваемого доминатора: Domination Timer firmware
Если вы заинтересованы в покупке прошивки для конфигурируемого ДОМИНАТОРА, пожалуйста, обращайтесь (на английском языке) по адресу: martinius96@gmail.com
Arduino LCD Поворотный энкодер Секундомер Схема Кнопка Menu Paintball DOMINATOR

Настраиваемый ДОМИНАТОР - секундомер для страйкбола | Paintball


Сущности в проекте настраиваемый DOMINATOR:

RED команда
RED команда
Судья - комбинация обеих кнопок останавливает время
Рефери / STOP
GRE команда
GRE команда

Описание Проекта:


DOMINATOR - это устройство - секундомер для таких видов спорта, как страйкбол, пейнтбол, которые позволяют измерять время нахождения точки с разрешением до секунд. Секундомер оснащен символьным ЖК-дисплеем 16x2 / 20x4. После включения устройства можно переключаться между пунктами меню на дисплее с помощью поворотного энкодера - KY-040. С помощью предметов можно запустить игровой режим DOMINATOR, который реагирует на пользовательские кнопки (вводы), или можно установить время пребывания команды перед игрой в настраиваемом режиме. Этот параметр представляет собой требуемую продолжительность удерживания кнопки до тех пор, пока команда не займет точку. Этот настраиваемый параметр реализуется для количества секунд. Второй настраиваемый параметр - это автоматическое завершение игры для достижения определенного количества часов секундомера с опцией UNLIMITED - когда секундомер ведет счет до бесконечности или после максимального времени отображения на дисплее - 99 часов, 59 минут, 59 секунд. В секундомере используется управляющий микроконтроллер Arduino (Arduino Uno / Nano) или отдельный чип (Atmel) ATmega328P, который контролирует всю системную логику. В игре 2 команды - RED команда a GRE команда, которые играют друг против друга и занимают воображаемую точку, образованную этим устройством - ДОМИНАТОР. В начале игры на дисплее отображается время 00 часов, 00 минут, 00 секунд для RED команда, GRE команда.

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

Кнопка ДОМИНАТОР использует ввод кнопки для действия по занятию точки членом команды, а также для ввода объекта судьи. Таким образом, всего используются 2 кнопки для 3 сущностей системы, кнопки переключения, подключенные в режиме INPUT_PULLUP. Нажатие кнопки подает сигнал GND на цифровой входной терминал Arduino (сигнал переключения Active-LOW). Используются кнопки переключения, а не кнопки переключения (они не будут реагировать на системную логику, все программное обеспечение всегда будет «нажато»). Настраиваемый DOMINATOR реагирует на длину нажатия, которая устанавливается в меню конфигурации с помощью кодировщика. Требуется удерживать кнопку заданное время. Система не реагирует на короткие нажатия. В расширенной версии также можно установить точку нейтрализации (остановка времени активной команды в точке, если член другой команды удерживает кнопку хотя бы 50% необходимого времени) Время отображается на символьном ЖК-дисплее размером 16x2 или 20x4, который связывается с управляющим микроконтроллером через шину I2C. Если член команды RED команды занимает точку, нажав кнопку, срабатывает зуммер, который сообщает об изменении точки коротким звуковым сигналом. Затем загорится светодиод RED команды на этой станции, и на дисплее начнется добавление времени для этой команды.


Если точка занята командой GRE и член команды нажимает соответствующую кнопку, снова раздается звуковой сигнал, загорается светодиодный индикатор команды GRE, время RED цвета приостанавливается и вычисляется время команды GRE, занявшей точку. Судья должен остановить обе кнопки одновременно, чтобы остановить оба раза. Время останавливается до тех пор, пока точка не будет повторно занята некоторыми командами в системе. Таким образом, этот тип ввода подходит для начала перерыва, но он также может завершить игру для ее оценки. В случае режима игры COUNTDOWN комбинация обеих кнопок предназначена для остановки обратного отсчета времени! Новая игра реализована путем сброса всей платы Arduino с помощью кнопки RST или путем отключения и повторного подключения источника питания. В меню также есть возможность настроить активность / неактивность зуммера, который также можно включить в игру. В игровом режиме DOMINATOR используется зуммер, чтобы объявить о текущем занятии точки. Ластик не существует в DOMINATOR этого типа. В системе может быть реализована вторая игра - обратный отсчет, которая позволяет установить минутный обратный отсчет, пока он должен быть остановлен. Игрок останавливает обратный отсчет, удерживая обе кнопки в течение определенного времени (в зависимости от меню настройки продолжительности нажатия на DOMINATOR).


Список времен - DOMINATION:


Список времен на символьном ЖК-дисплее 20х4 - Arduino Domination Timer - DOMINATOR

Список времен - COUNTDOWN:


Список времен на символьном ЖК-дисплее 20х4 - Arduino Domination Timer - COUNTDOWN

Совместимое оборудование управления - настраиваемый ДОМИНАТОР:



Совместимые периферийные устройства - настраиваемый DOMINATOR:



Схема подключения - настраиваемый ДОМИНАТОР


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

Настраиваемый режим игры DOMINATOR - DOMINATION


Konfigurovateľné stopky - Arduino pre Airsoft, Paintball

Подключение клемм - Конфигурируемый ДОМИНАТОР - полностью соответствует схеме подключения:

Arduino Uno / Nano (ATmega328P) Конвертер I2C для ЖК-дисплея
GND GND
5V Vcc
A4 SDA
A5 SCL
Arduino Uno / Nano (ATmega328P) Поворотный энкодер - KY-040
GND GND
5V +
D3 CLK
D4 DT
D5 SW
Arduino Uno / Nano (ATmega328P) LED диоды
GND GND
D6 IN (RED)
D7 IN (GREEN)
Arduino Uno / Nano (ATmega328P) Кнопки (INPUT_PULLUP)
GND GND
D8 IN (RED)
D9 IN (GRE)
Arduino Uno / Nano (ATmega328P) Зуммер
D10 IO
GND GND

Тестовая программа (условно-бесплатная) - Настраиваемый ДОМИНАТОР с машинным кодом


Для проекта Configurable DOMINATOR доступна условно-бесплатная версия (.hex). Версия позволяет отмерить максимум 60 секунд для каждой команды. По достижении этого времени секундомер останавливается. Цель версии - проверить совместимость с вашим оборудованием..Машинные коды, основанные на I2C-адресе преобразователя для ЖК-дисплея, доступны в репозитории Github. Наиболее часто используемые адреса - 0x27 и 0x3F. Если вы не знаете адрес вашего преобразователя, используйте встроенный пример в Arduino IDE -> I2C Scanner, который запишет адрес в интерфейс UART (Serial monitor). Машинный код может быть загружен в микроконтроллер Arduino Uno через программное обеспечение AVRDUDE - часть Arduino IDE или с графическим интерфейсом через XLoader - проще в использовании.

  • AVRDUDE должен запускаться через CMD (командную строку), установленную с Arduino IDE. Находится в C:/Users/User/Documents/ArduinoData/packages/arduino/tools/avrdude/6.X.X-arduino/bin
  • Пример команды для загрузки программы в Arduino Uno / Nano (ATmega328P):
  • Для прошивки с отображаемым адресом I2C 0x27 (например, COM-порт 21 и 115200 бод / с): avrdude -CC: avrdude.conf -v -patmega328p -carduino -PCOM21 -b115200 -D -Uflash:w:encoder_0x27.ino.hex:i
  • Для прошивки с отображаемым адресом I2C 0x3F (например, COM-порт 21 и 115200 бод / с): avrdude -CC: avrdude.conf -v -patmega328p -carduino -PCOM21 -b115200 -D -Uflash:w:encoder_0x3F.ino.hex:i
  • XLoader - это приложение Windows (исполняемый инструмент .exe) с простым графическим интерфейсом , которое позволяет выбирать прошивку - машинный код (.hex), целевую платформу и может динамически отображать COM-порт, на котором установлено устройство. расположен.
  • Простым щелчком на «Загрузить» машинный код может быть загружен автоматически (XLoader использует инструмент AVRDUDE, аналогичный Arduino IDE). Окно XLoader информирует об успешной загрузке в виде списка количества загруженных байтов.
  • Прошивку можно скачать из репозитория: Здесь. Прошивка разделена по адресу преобразователя I2C (вы узнали по выходу сканера I2C на интерфейс UART).

    Доступная прошивка - Настраиваемая кнопка DOMINATOR

    Название прошивки (в папке encoder_dominator) Предназначен для Скачать
    encoder_0x27.ino.hex Символьный ЖК-дисплей размером 16x2 или 20x4 с преобразователем I2C, который обменивается данными по адресу 0x27 Скачать прошивку
    encoder_0x3F.ino.hex Символьный ЖК-дисплей размером 16x2 или 20x4 с преобразователем I2C, который обменивается данными по адресу 0x3F Скачать прошивку

    I2C Scanner - программа для чтения адреса конвертера I2C для ЖК-дисплея


    Ожидаемый результат I2C Scanner:


    Výpis I2C adresy, na ktorej komunikuje I2C prevodník pre displej 16x2 / 20x4

    Библиотека Wire встроена в IDE Arduino, установка не требуется. Программа может быть скомпилирована и проверена связь через шину I2C с символьным ЖК-дисплеем. Конвертер I2C должен быть подключен к Arduino к аппаратным клеммам I2C (SCL к A5, SDA к A4) перед загрузкой программы, этого достаточно даже без дисплея. Полученный адрес дисплея должен быть предоставлен для успешной сборки для Arduino вместе с UID карт RFID.

    #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
    }