Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevok: 1 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 17.02.14
Prihlásený: 18.01.24
Príspevky: 450
Témy: 198
Bydlisko: Poprad-okolie
Príspevok NapísalOffline : 07.03.2021 22:54

DOMINATOR (nazýva sa aj DOMINATION Timer) je zariadenie - stopky so sekundovým rozlíšením, ktoré umožňujú merať čas (dobu) obsadenia bodu. Stopky majú dva časy pre 2 tímy, ktoré proti sebe hrajú, vizualizujú ich na LCD znakový displej. Vždy sa pripočítava čas iba jednému z tímov, alebo ani jednému, ak je bod (DOMINATOR) neutrálny. Každý z tímov sa snaží o obsadenie bodu, ten má určitý typ vstupu, ktorým sa obsadenie realizuje (RFID karta, náramok alebo hardvérové tlačidlá pre používateľský vstup). Cieľom hry je udržať bod obsadený čo najdlhšie. Hra môže byť ukončená časovým limitom, ktorý je potrebné dosiahnuť, alebo rozhodcom, ktorý manuálne čas zastaví stlačením svojho tlačidla.
Tlačidlový DOMINATOR s konfiguráciou - Airsoft | Paintball
Staršia verzia tlačidlového projektu DOMINATOR pôvodne využívala 4 spínacie tlačidlá, pričom umožňovala používateľský vstup pre Tím 1 (RED), Tím 2 (GRE), Rozhodcu a Erasera. Táto verzia projektu DOMINATOR neoverovala dĺžku stlačenia (držania) tlačidla a na stlačenie reagovala okamžite. Na základe spätnej väzby od hráčov Airsoftu vznikla obdobná verzia tlačidlového DOMINATOR-a, ktorá využíva iba 2 tlačidlové vstupy pre entity tímov --> Tím 1 (RED), Tím 2 (GRE) a rozhodcu (ak stlačí obe tlačidlá zároveň). Verzia je rozšírená o rotačný enkóder 360° , ktorým je možné v konfigurovateľnom menu zmeniť a prispôsobiť si viacero možných - meniteľných údajov pre hru a potreby hráčov.

Použité hardvérové komponenty:
    Arduino Uno / Nano / samostatný AVR čip AtMega328P
    LCD znakový displej 16x2 / 20x4
    I2C prevodník pre LCD displej
    2x tlačidlá (spínacie)
    Rotačný enkóder 360° - napr. KY-040
    2x LED diódy
    Voliteľný - buzzer (hlásič)

Schéma zapojenia Konfigurovateľného DOMINATOR-a:
    Buzzer sa pripája na D10 Arduina (nie je obsiahnutý v schéme zapojenia)
Tlačidlový DOMINATOR s konfiguráciou - Airsoft | Paintball

Funkčnosť:
Po spustení mikrokontroléru Arduino (ale i reštarte, power-on cykle) sa zobrazí hlavné menu na LCD znakovom displeji 16x2 / 20x4.
V tomto menu je možné prepínať (otáčaním enkódera) medzi týmito položkami menu:
    Štart hry (DOMINATOR)

    Nastavenie času stlačenia tlačidla pre obsadenie

    Nastavenie maximálneho času hry

    Konfigurácia buzzra (hlásiča)

    Nastavenie odpočtu - COUNTDOWN

    Štart hry (COUNTDOWN)

Tlačidlový DOMINATOR s konfiguráciou - Airsoft | Paintball
Ako je z položiek menu zrejmé, táto verzia DOMINATOR-a je rozšírená aj o herný režim COUNTDOWN (odpočet), ktorým je možné spustiť hru v režime Útočiaci a brániaci tím. Po začiatku hry sa začne odpočítavať nastavený čas, nastavuje sa v minútach. Počas tohto času musí člen útočiaceho tímu stlačiť a držať obe tlačidlá po nastavenú dobu stlačenia tlačidiel z menu.
Vždy pri zmene (otočení enkódera o krok do +, resp. do -) sa na LCD znakovom displeji 16x2 respektíve 20x4 vypíše aktuálna položka menu. Arduino komunikuje s displejom cez I2C zbernicu s rýchlosťou 100 kHz - Standard speed. Programovo sú jednotlivé texty menu prepínané cez switch - vetvenie, ktoré reaguje na hodnotu počítadla otáčok. Pri menu však musíme rozlišovať ešte režim v ktorom sa používateľ nachádza. Rozlišujeme režim hlavných menu, konfiguračný režim, režim hry. V režime hry systém vôbec nereaguje na enkóder, v režime hlavných menu a konfiguračných režimov nereaguje na tlačidlá použité v hre. Daná položka menu sa potvrdzuje cez tlačidlo, ktoré má enkóder integrované. Zároveň sa pri stlačení tlačidla vykonáva aj logika (zmena režimu, uloženie...). Rovnako tak programová implementácia využíva switch aj pre režimy a funguje ako jednoduchý stavový automat. V určitom stave systém reaguje na konkrétny typ vstupných periférii - tlačidlá, enkóder, vizualizuje počítadlo času a podobne. Všetky konfigurovateľné hodnoty sú uložené do EEPROM pamäte Arduina. Predstavme si jednotlivé položky hlavného menu bližšie:

Štart hry (DOMINATOR):
Na displeji sa vyobrazia dva časy pre tím RED a tím GRE, pričom sú nastavené na nulové hodnoty pre 00 hodín, 00 minút, 00 sekúnd. Systém reaguje na dve tlačidlá, ktorými sa zadáva používateľský vstup (vyžadujú držanie) po dobu, ktorá je nastaviteľná v menu "Nastavenie času stlačenia tlačidla pre obsadenie". Po držaní dostatočnej doby sa rozsvieti LED dióda daného tímu a začne sa mu pripočítavať čas v sekundách.

Fragment zdrojového kódu - režim hry riešený cez stavový automat premennej rezim:
Tlačidlový DOMINATOR s konfiguráciou - Airsoft | Paintball
Ak DOMINATOR obsadí druhý tím, držaním svojho tlačidla po potrebnú dobu sa zastaví pripočítavanie času pre predchádzajúci tím, zhasne jeho LED dióda. Rozsvieti sa LED dióda aktuálneho tímu a tomu tímu sa začne pripočítavať i čas. Programová implementácia môže byť rozšírená o stav, kedy v prípade držania tlačidla minimálne 50% a menej ako 100% času sa zastaví pripočítavanie času (bod prejde do neutrálneho stavu) pre tím, ktorý na danom bode bol vedený ako aktívny.

Oba časy je možné zastaviť rozhodcom, ktorý prostredníctvom krátkeho stlačenia oboch tlačidiel zároveň čas zastaví. Reset hry a vynulovanie aktuálnych časov sa realizuje reštartovaním celej Arduino dosky cez RST tlačidlo, prípadne odpojením a pripojením napájania. Tlačidlá sú pripojené v režime INPUT_PULLUP, kedy je digitálny vstup pripojený cez interný 20kohm rezistor k 5V. Spínaním tlačidla sa privádza GND na vstup - Active LOW signál. V prípade potreby pri dlhšom vedení káblov k tlačidlám je možné využiť softvérový vstup INPUT a využiť externý - nižší pullup rezistor. Schéma zapojenia počíta so spínacími tlačidlami, nie rozpínacími, ktoré by v programovej implementácii nefungovali (tvárili by sa ako stlačené v normálnom stave, čas by bol zastavený - vstup rozhodcu).

Nastavenie času stlačenia tlačidla pre obsadenie
Prvým z konfigurovateľných parametrov v systéme je doba obsadenia bodu. Udáva čas (v sekundách), ako dlho musí používateľ držať stlačené tlačidlo, pokým dôjde k obsadeniu bodu a spusteniu logiky pre prípočet času pre daný tím. Prostredníctvom rotačného enkóderu je možné nastaviť požadovaný čas v rozlíšení sekúnd a tlačidlom enkódera voľbu potvrdiť.

Hodnota času (INT) sa po stlačení tlačidla uloží do internej EEPROM pamäte na offset (adresu) 10. V prípade, že chce používateľ opätovne uložiť rovnakú hodnotu, ako je v EEPROM zapísaná, nezapíše sa, Arduino nevykonáva zbytočné prepisy. Hodnota je tak k dispozícii a je nezmenená aj po reštarte / odpojení a pripojení napájania k Arduino doske. Túto hodnotu zohľadňuje herný režim DOMINATOR i COUNTDOWN.

Nastavenie maximálneho času hry
Druhým konfigurovateľným parametrom je maximálny čas hry vyjadrený v hodinách. Hodnota sa nastavuje otáčaním rotačného enkóderu a potvrdzuje sa stlačením tlačidla. Minimálna hodnota pre obmedzený čas je 1 hodina, pričom je možné na pozícii počítadla 0 nájsť aj hodnotu BEZ OBMEDZENIA, kedy hra nie je limitovaná a počíta čas od nekonečna, respektíve do vizualizovanej hodnoty 99 hodín, 59 minút, 59 sekúnd, na ktorú je prispôsobený displej rozmeru 16x2. Túto hodnotu zohľadňuje iba herný režim DOMINATOR. Hodnota je uložená do internej EEPROM pamäte na offset 20. Táto hodnota udáva automatický koniec hry pri dosiahnutí tohto času jedným z tímov v hre DOMINATOR. Po dosiahnutí daného času v hre akýmkoľvek tímom sa hra ukončí a DOMINATOR prestáva počítať čas a nereaguje na tlačidlový vstup.
Tlačidlový DOMINATOR s konfiguráciou - Airsoft | Paintball

Konfigurácia buzzra (hlásiča)
Buzzer (hlásič) je možné softvérovo zapnúť / vypnúť otáčaním rotačného enkódera. Frekvenciu hlásiča nie je možné konfigurovať, je štandardne nastavená na 2000 Hz.
V hernom režime DOMINATOR buzzer pípa iba v momente obsadzovania bodu. Pri hernom režime COUNTDOWN pípa buzzer každú sekundu s dĺžkou beepu 50 ms. V prípade, že čas dôjde na 0 sekúnd, 0 minút, 0 hodín, buzzer sa prepne na frekvenciu 500 Hz a pípa (vydáva nepretržitý tón) oznamujúci koniec hry - čaká na reštart.

Nastavenie odpočtu - COUNTDOWN
Posledný konfigurovateľný parameter nastavovaný v minútach. Nastavuje sa dĺžka odpočtu pre herný režim countdown.

Ukážka automatického zastavenia času pri nastavení ukončenia hry v čase 1 hodina obsadenia bodu:
Tlačidlový DOMINATOR s konfiguráciou - Airsoft | Paintball

Celá programová implementácia tohto riešenia zaberá cca 7 kilobajtov flash pamäte a 480 bajtov pamäte RAM. Nakoľko má Arduino k dispozícii 32kB (28kB pre program) flash pamäť a 2kB RAM, je systém možné rozšíriť o mnoho ďalších funkcionalít. Nakoľko sa v programovej implementácii využíva aj dosť textových reťazcov - názvy položiek menu atď, využil som F makro, ktorým je možné tieto statické reťazce presunúť do flash pamäte.

Zbytočne tak nezaberajú miesto v RAM pamäti, ktorá tak môže byť využitá efektívnejšie pre zložitejšiu funkcionalitu projektu a ďalšie herné režimy, ktoré môžu byť implementované v budúcnosti. Programová logika počítadla sa vykonáva každých 100ms. Čas je tak možné rátať a vypísať na displej aj v desatinách sekundy, avšak z pohľadu použitia projektu DOMINATOR, ktorý sa organizuje na niekoľko hodinových, alebo až dňových akciách, je výpis s rozlíšením na sekundy viac než dostačujúci.

V menu i konfiguračných podmenu sú ošetrené hodnoty, ktoré nadobúda enkóder - počítadlo, kedy nie je možné nastaviť hodnotu menšiu ako 0, nenastane ani overflow hodnoty. Nakoľko sa v režime hry overuje dĺžka držania tlačidla, využíva sa cyklus while, ktorý neustále monitoruje hodnotu stavu vstupného GPIO. Programová logika počítadla času musí byť taktiež do tohto cyklu vložená, aby nenastalo zastavenie času. Nakoľko je Arduino jednojadrová platforma, nedokáže obsluhovať dve slučky / tasky súčasne. V prípade dvojjadrových platforiem, napríklad ESP32 je možné využiť systém taskov - úhloh, ktoré môžu byť pridelené každému jadru a ESP32 tak dokáže obsluhovať obe slučky zároveň.

Viac o projekte Konfigurovateľný DOMINATOR je možné nájsť na:
https://martinius96.github.io/Airsoft-DOMINATOR-RFID/dominator-encoder.html

K projektu Konfigurovateľný DOMINATOR (stopky) existuje programová implementácia dostupná v strojovom kóde (.hex) pre platformu Arduino Uno / Nano, respektíve samostatný čip AtMega328P. Cieľom programu - Shareware verzie projektu je overiť kompatibilitu komponentov (displeja komunikujúceho po I2C zbernici, funkčnosť spínacích tlačidiel, reakciu rotačného enkódera) pre následne použitie plnej verzie projektu.

Shareware verzia obsahuje 30 sekundovú inicializáciu systému (lazy loading) a následne možné testovanie stopiek po maximálny merateľný čas 1 minútu. Stopky prestávajú počítať čas a nereagujú na používateľské tlačidlá od momentu, kedy ktorýkoľvek z týmov dosiahne obsadenie bodu 1 minútu. Z pohľadu konfigurácie v tejto free Shareware verzii je možné konfigurovať iba dobu obsadenia bodu. Cieľový čas systému - herný čas nie je možné uložiť do EEPROM - je to súčas iba plnej verzie projektu. Súčasťou Shareware verzie NIE je herný režim COUNTDOWN.

Firmvér je možné do Arduina nahrať cez AVRDUDE - konzolovú aplikáciu, ktorú využíva pre nahrávanie skompilovaného (strojového kódu) programu aj prostredie Arduino IDE. Príkaz pre nahratie programu sketch.ino.hex na COM port 21 (nutné upraviť podľa názvu firmvéru a COM portu, kde sa nachádza vaše Arduino): avrdude -CC: avrdude.conf -v -patmega328p -carduino -PCOM21 -b115200 -D -Uflash:w:sketch.ino.hex:i V prípade, že s AVRDUDE nemáte skúsenosti, vyskúšajte XLoader, ktorý umožňuje v jednoduchom grafickom rozhraní vybrať cieľový firmvér, cieľovú platformu a COM port na ktorom sa vaša Arduino doska nachádza. V prípade Arduina Nano s OLD Bootloaderom je nutné prepnúť rýchlosť nahrávania na 57600 baud/s. Pri novších bootloaderoch je podporovaná rýchlosť nahrávania 115200 baud/s.

Shareware firmvér projektu Konfigurovateľný DOMINATOR (navrhnutý podľa schémy zapojenia v tomto článku):
https://github.com/martinius96/Airsoft-DOMINATOR-RFID/tree/master/firmware/encoder_dominator

Informácie o predchádzajúcej verzii - Tlačidlový DOMINATOR aj RFID verzii môžete nájsť na:
https://martinius96.github.io/Airsoft-DOMINATOR-RFID/index.html


Odpovedať na tému [ Príspevok: 1 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. Airsoft / Paintball DOMINATOR - Arduino + RFID

v Články

0

1518

09.03.2019 13:16

martinius96 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Airsoft DOMINATOR - Tlačidlový - Arduino + I2C LCD

v Články

0

674

21.02.2020 23:03

martinius96 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. DOMINATOR cez Arduino pre Airsoft / Paintball / Nerf Wars

v Články

2

2409

30.11.2018 21:41

eon5 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Airsoft & Paintball

[ Choď na stránku:Choď na stránku: 1 ... 26, 27, 28 ]

v Šport a pohyb

827

35625

26.08.2021 10:35

hkckoo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. P: RFID DOMINATOR pre Airsoft

v Predám

1

529

03.01.2024 1:38

martinius96 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Tlacidlovy mobil

v Mobilné zariadenia

6

507

30.07.2016 21:56

SKiLEX Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Paintball v BA

v Voľný čas a hobby

4

806

24.06.2009 21:11

Andreso Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Slusny tlacidlovy telefon

v Mobilné zariadenia

14

797

23.05.2019 6:44

SKiLEX Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Tlacidlovy telefon pre rodicov

v Mobilné zariadenia

7

584

23.03.2016 21:32

ac.milan Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Gotcha! paintball (pc hra) internet

v Počítačové hry

0

906

07.03.2010 11:48

Nick_177 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Tlačidlový telefón pre seniora do 70€

v Mobilné zariadenia

4

487

19.04.2017 12:02

martanus Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Problem s konfiguraciou LAN

v Operačné systémy Microsoft

12

525

13.02.2008 21:57

shiro Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Airsoft-AK47

v Šport a pohyb

28

2037

30.10.2009 18:06

Svolo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Problem s konfiguraciou alebo routrom ?

v Siete

1

271

11.05.2015 22:44

mirom Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Novy book s lepsou konfiguraciou

v Notebooky a netbooky

3

275

26.05.2014 16:31

nescafe Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. problem s konfiguraciou (nastavenim) firewallu

v Bezpečnosť a firewally

4

368

13.01.2013 12:02

german3131997 Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra