Репозиторий проекта - условно-бесплатная прошивка для Button Dominator: Domination Timer firmware
Если вас интересует программная реализация проекта Секундомер доминирования, обращайтесь на английском языке: martinius96@gmail.com
Arduino LCD секундомер Кнопка Schematics Airsoft Paintball Секундомер доминирования

Кнопка Секундомер доминирования - секундомер для страйкбола | Пейнтбол


Сущности в проекте Кнопка Секундомер доминирования:

RED команда - кнопка ввода пользователяp
RED команда
GRE команда - кнопка ввода пользователя
GRE команда
Рефери - кнопка ввода пользователя
Рефери
Ластик - кнопка ввода пользователя
Ластик

Описание Проекта Кнопка Секундомер доминирования


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


Кнопка Секундомер доминирования использует ввод кнопки для действия по занятию точки членом команды, а также для ввода судьи и объекта ластика. Таким образом, всего используется 4 кнопки для 4 сущностей системы, кнопки переключения, подключенные в режиме INPUT_PULLUP. Нажатие кнопки подает сигнал GND на цифровой входной терминал Arduino (сигнал переключения Active-LOW). Кнопка Секундомер доминирования доступна в двух версиях: Базовая версия немедленно реагирует на нажатие кнопки занятости точки. Расширенная версия требует, чтобы вы удерживали кнопку в течение 5 секунд, чтобы успешно занять точку. Время отображается на символьном ЖК-дисплее размером 16x2 или 20x4, который связывается с управляющим микроконтроллером через шину I2C. Если член команды RED занимает точку, нажав кнопку, срабатывает зуммер, который сообщает об изменении точки коротким звуковым сигналом. Затем загорится RED светодиод команды на этой станции, и на дисплее начнется добавление времени для этой команды.


Если точка занята командой GRE и член команды нажимает соответствующую кнопку, снова звучит зуммер, загорается светодиодный индикатор команды GRE, RED командное время приостанавливается и Подсчитывается время команды GRE, какую точку он занял. Если организатор (судья) нажимает свою кнопку, оба раза приостанавливаются до тех пор, пока член одной из команд не введет данные пользователя. Таким образом, этот тип ввода подходит для начала перерыва, но также может завершить игру для оценки. Кнопка Секундомер доминирования имеет четвертую кнопку для объекта ластика, которая приостанавливает и сбрасывает оба раза до начальных значений, как после запуска секундомера Button DOMINATOR. Используется для перезапуска игры, инициализации новой игры. Проект подходит для мероприятий по страйкболу, спортивных сооружений или команд по страйкболу, которые могут собрать оборудование. Преимущество системы Button Секундомер доминирования заключается в том, что ее можно клонировать и создавать X-точки с одинаковой конфигурацией с помощью машинного кода, который может быть загружен в неограниченное количество плат и чипов Arduino и гарантирует идентичную работу приложения. Таким образом, игроки могут набрать больше очков в игре, а в конце игры время суммируется до тех пор, пока какая точка была занята какой командой.


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


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

Совместимое управляющее оборудование для кнопочного Секундомер доминирования:



Периферийные устройства для кнопочного Секундомер доминирования:



Принцип работы проекта Кнопка Секундомер доминирования на аппаратной стороне:


Кнопки подключены в режиме INPUT_PULLUP, они используют внутренний резистор PULLUP 20 кОм, который удерживает логический уровень ВЫСОКИМ на цифровом входе. При нажатии кнопки сигнал LOW подается на цифровой вход. В зависимости от типа кнопки и используемой версии прошивки Arduino может проверить длительность удержания кнопки, а логика счетчика выполняется независимо. Когда условие изменения в точке выполнено, Arduino запускает гудение, применяя цифровые состояния к светодиодам. Системная логика выполняется каждые 1000 мс – процедура 1 Гц (время с помощью функции millis(), т. е. с помощью Таймера 0), независимо от состояния цифровых входов. В этой процедуре выполняется активная командная проверка, за которой следует время. Время динамически отображается на символьном ЖК-дисплее 20x4 или 16x2. Дисплей взаимодействует с Arduino через шину I2C с тактовым сигналом (SCL) 100 кГц — стандартная скорость. Таким образом, перезапись дисплея занимает примерно 15 мс, при этом перезаписывается только активная в данный момент строка данной команды. При серьезном интересе прошивку для DOMINATOR можно расширить до 3-х или 4-х команд.

RFID Dominator - hra pre 4 tímy
Максимальный диапазон времени, который может быть указан в системе: 99 часов 59 минут и 59 секунд.
Потребление: около 20 мАч при питании 5 В. Удобно получать питание через внешний аккумулятор, зарядное устройство от телефона с выходом USB.

Кнопка Секундомер доминирования на лету в игре Airsoft - Очки захвата


Airsoft Dominator RFID

Кнопка Секундомер доминирования - демонстрация функциональности и логики системы


Таблица подключения клемм - Кнопка Секундомер доминирования - полностью соответствует схеме подключения:

Arduino Uno / Nano (ATmega328P) Конвертер I2C для ЖК-дисплея
GND GND
5V Vcc
A4 SDA
A5 SCL
Arduino Uno / Nano (ATmega328P) Зуммер
GND GND
5V Vcc
D5 IN
Arduino Uno / Nano (ATmega328P) Светодиоды
GND GND
D4 IN (RED)
D3 IN (GREEN)
Arduino Uno / Nano (ATmega328P) Кнопки (INPUT_PULLUP)
GND GND
D6 IN (GREEN)
D7 IN (ERASER)
D8 IN (Rozhodca)
D9 IN (RED)

Схема подключения - кнопка Секундомер доминирования:


Airsoft Dominator RFID

Тестовая программа (Условно-бесплатная) - Кнопка Секундомер доминирования с машинным кодом


Условно-бесплатная версия (.hex) доступна для проекта Button Секундомер доминирования. Эта версия позволяет измерять максимум 15 секунд игры для каждой команды. Цель версии - проверить совместимость с вашим оборудованием. Машинные коды на основе адреса преобразователя 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):
  • avrdude -CC: avrdude.conf -v -patmega328p -carduino -PCOM21 -b115200 -D -Uflash: w: sketch.ino.hex: i
  • XLoader - это приложение Windows (исполняемый инструмент .exe) с простым графическим интерфейсом , которое позволяет вам выбирать прошивку - машинный код (.hex), целевую платформу и может динамически отображать COM-порт, на котором находится устройство.
  • Если просто щелкнуть «Загрузить», машинный код может быть загружен автоматически (XLoader использует инструмент AVRDUDE, аналогичный Arduino IDE). Окно XLoader сообщает об успешной загрузке в виде списка загруженных байтов.
  • Прошивку можно скачать из репозитория проекта: здесь. Прошивка находится в папке / firmware /, разделенной по адресу преобразователя I2C (вы узнали из вывода сканера I2C на интерфейс UART).

    Доступные прошивки - кнопка Секундомер доминирования

    Название прошивки (в папке button_dominator) Предназначен для Скачать
    0x27.ino.hex Символьный ЖК-дисплей размером 16x2 или 20x4 с конвертером I2C, который обменивается данными по адресу 0x27 Скачать прошивку
    0x3F.ino.hex Символьный ЖК-дисплей размером 16x2 или 20x4 с конвертером I2C, который обменивается данными по адресу 0x3F Скачать прошивку
    Для последних китайских клонов Arduino Nano, которые имеют "старый загрузчик", необходимо загрузить машинный код со скоростью 57600 бод / с! Для других версий с более новым загрузчиком 115200 бод / с (эта скорость также используется в команде AVRDUDE для загрузки машинного кода).

    Загрузка условно-бесплатной версии проекта Button Секундомер доминирования в Arduino через XLoader


    XLoader - Arduino - AVRDUDE - Tlačidlový DOMINATOR - testovací program

    Общий видеоурок по загрузке прошивки в Arduino через XLoader



    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
    }