Мазмұны:

Arduino ату ойыны V3: 4 қадам
Arduino ату ойыны V3: 4 қадам

Бейне: Arduino ату ойыны V3: 4 қадам

Бейне: Arduino ату ойыны V3: 4 қадам
Бейне: Мұқа-Бұқа🤣🔥🔥 #қызықtimes #shorts #қапқарашымкент 2024, Шілде
Anonim
Image
Image
Arduino ату ойыны V3
Arduino ату ойыны V3
Arduino ату ойыны V3
Arduino ату ойыны V3
Arduino ату ойыны V3
Arduino ату ойыны V3

Бұл ойын нысандарға ату үшін airsoft немесе co2 қолданатындар үшін. Бұл ойын.

Ойын мен қолдау туралы соңғы ақпарат алу үшін:

www.facebook.com/arduinoshooting/

Менің блог туралы ойын туралы:

shootinggameblog.wordpress.com

Ойын туралы кодтар үшін:

github.com/shootinggame82/Shooting-game-v3

Түсіру ойыны - бұл сымсыз х нысана, әр мақсатта діріл сенсоры бар, ол соққы кезінде түсетін дірілді сезеді. Сымсыз сенсорлар-Atmega328 чипі (Arduino Uno чипі) және Li-Po батареясы бар.

Бұл ойынның негізгі контроллері Arduino -мен басқарылады және Raspberry Pi -ден сериялық басқарылады.

Бұл ойын қалай жұмыс істейді? Бұл 3 ойын режимі:

Quicktime: X раундта ойнаңыз және әр нысанаға тез атуға болады.

Уақыт режимі: X секунд ішінде мүмкіндігінше көп нысанаға түсіңіз.

Rapidfire: X кадрларын жылдам түсіріңіз.

Негізгі контроллерден жақсы қашықтықты алу үшін жүйе NRF24L01 таратқыштар. Олар 2,6 ГГц жиілігінде жұмыс істейді (WiFi қосылған сияқты)

Бұрынғы жобаларымда мен діріл үшін Piezo қолдандым, бірақ қазір діріл сенсоры қосқышы қолданылады, бірақ егер сіз бұл ойынның ескі нұсқасын жасаған болсаңыз, сіз әлі де Piezo қолдана аласыз.

Ойында Raspberry Pi 7 дюймдік сенсорлы экраны бар, ол сіздің ойынды басқаратын веб -жүйені сақтайды. Терминалды принтер нәтижелерді басып шығарады.

Жабдықтар

Таратқыштар үшін:

  • X Atmega328 Arduino жүктеушісімен (қанша мақсатқа байланысты)
  • X діріл сенсорының қосқышы
  • X Blue Led
  • X Green Led
  • X Қызыл светодиод
  • X 3.7V Li-Po батареясы
  • X FC-75 Li-Po зарядтау модулі (немесе басқа модель)
  • X 100 uF конденсаторы
  • X сенсорларға арналған корпустар
  • X LD1117V33 (таратқышқа қауіпсіз 3,3 В құрайды)
  • X NRF24L01 модульдері
  • X x 3 220 Ом резисторлары (бір мақсат үшін 3 қажет)
  • X 16 МГц кристалл
  • X x 2 Ашықтандырылмаған конденсаторлар 22 pF (бір мақсат үшін 2 қажет)

Негізгі Arduino үшін:

  • 1 Arduino (Nano немесе Uno ұсынылады, USB болуы керек)
  • 1 NRF24L01 модулі
  • 1 10 uF конденсатор

Таңқурай Pi үшін:

  • Raspberry Pi (мен 3B қолдандым)
  • 7 «сенсорлық экран
  • ATXRaspi (Қосымша, бірақ жақсы қуат түймесі модулі)
  • RTCRaspi (Қосымша, бірақ уақыт пен күнді сақтау үшін жақсы RTC модулі)
  • Терминалды принтер (міндетті емес, бірақ басып шығару үшін қажет)
  • Штрих -код сканері (пернетақта сияқты жұмыс істейтін USB нұсқасы, міндетті емес)
  • Жақсы 5В қуаты (мен 2,5 А қуаты бар ескі 12В USB қолдандым)

Басқа заттар:

  • 12 вольтты қуат (менде 12 Ах)
  • Желілік розетка (желіге қосылуды жеңілдетіңіз)
  • Кабельдер

1 -қадам: сымсыз сенсорлар

Сымсыз сенсорлар
Сымсыз сенсорлар
Сымсыз сенсорлар
Сымсыз сенсорлар
Сымсыз сенсорлар
Сымсыз сенсорлар

Сенсорларды жасай бастайық, мен бұл ойынға 4 сенсор қолданамын. Негізгі жүйе кодты жіберетін кезде сенсорлар 4 цифрлық кодпен байланысады, ал сенсор қандай функциямен дұрыс кодты қосады және мақсатқа дайын болады. Көгілдір жарық - бұл сіз соққыңыз келетін нысананы білдіреді.

Бізде жасыл және қызыл светодиод бар. Сенсор қосулы екенін хабарлау үшін жасыл түс әрқашан жанып тұрады. Қызыл түс тек аккумулятор 3,1 В -тан төмен болған кезде ғана жанады (батареяда қанша бар екенін есептеу үшін чипте орнатылған функцияны қолданады).

Діріл сенсоры аналогтық істікке қосылады және оның мәнін оқиды. Мән батып бара жатқанда, сенсорда діріл пайда болады, біз соққыны тіркейміз.

Мақсатта X секунд ішінде соқпайтын (әдепкі 15 секунд) немесе жіберу мүмкін болмаса, олар бастапқы күйге оралады.

Мен сізге электр сымын қалай қосуға болатынын түсіндірмеймін, оны қалай жасау керектігін білу үшін электрлік парақты тексеріңіз. Онда жоқ нәрсе - бұл батарея, қуат қосқышы және зарядтағыш. Мұны қалай қалауды өзіңіз шешесіз.

NRF24L+ модулі туралы білмеу:

Жақсы қуат пен оқшауланумен үйлесімділікке ие болу үшін оларды ауыртпалық тудыруы мүмкін, және сіз оларды жұмыс істей аласыз. Мен үшін 10 uF конденсаторы маған тұрақты және жақсы қосылым береді, бірақ алдымен сізге қажет, мысалы 100 uF конденсатор. Сондай -ақ оларды кедергі жасамау үшін алдымен пластикалық фольгамен, содан кейін алюминий фольгамен ораңыз

Сондай -ақ, кодта 250 Kb -тан артық ақпарат қажет емес, бұл мәселе болмайды. Бірақ PA: myRadio.setPALevel (RF24_PA_MIN);

Мен MIN -ге орнатқан кодта (бұл тестілеу кезінде), бұл ең төмен және көп қуат жұмсамайды, бірақ диапазон онша ұзақ болмайды. Егер сізде оларға тұрақты және жақсы қуат болса, RF24_PA_MAX дейін ең ұзақ диапазонды алуға болады, БІРАҚ олар үшін GOOOOOD тұрақты қуаты қажет. Жақсы қарым -қатынас орнатылғанын білу үшін LOW AND HIGH (тек MAX мәтінін өзгерту) көріңіз. Сондай -ақ, сіз мерген болмасаңыз, LOW және HIGH бойынша жақсы диапазонға ие боласыз

Сонымен қатар таратқыштарды бір метрден кем емес қашықтықта ұстаңыз, бұл сигналды нашарлатуы мүмкін

NRF24 кітапханасындағы кейбір ping мысалымен байланысты тексеріңіз (GitHub сілтемесі)

Кодта осы мақсат үшін бірегей сәйкестендіру нөмірін орнату қажет:

int targID = 3401; // Бұл мақсатты идентификатор

int sendID = 2401; // Бұл жауап идентификаторы

Сонымен қатар 3 DEFINE функциясы бар:

#DEBUG анықтаңыз

#аккумуляторды анықтаңыз

#define ШАЙҚАУ // ЕСКЕРТКЕН ПИЕЗОНЫҢ ОРНЫНА ШАЙҚАУ ОРНАТУЫ ҚОЛДАНЫЛСА

ҚАТЕЛДІРУ:

Тест кезінде бұл анықталған жақсы. Бірақ сіз оларды қол жетімді етсеңіз, оны іске қоспаңыз.

БАТАРЕЯ:

Егер сіз мақсаттарға арналған батарея тексергіші болғыңыз келмесе, сіз бұл анықтаманы алып тастауыңыз керек.

ШАЙҚАУ:

Егер сізде менің ескі нұсқам болса, сізде пьезо сенсорлары бар, содан кейін олар үшін дұрыс кодты алу үшін оны алып тастаңыз.

ATMEGA328 чипі

Arduino наносының орнына мен ATMEGA328 чипін қолдануды шештім (Uno жүктеушісі бар), олар қарапайым Arduino Uno чипін алып тастап, осы чипті және жүктеу кодын қосады. Нысандарды қалай салу керектігі туралы электр схемасын тексеріңіз.

Кодекс

Мен кодты Arduino IDE орнына PlatformIO көмегімен жаздым. Бұл бағдарламалауға жақсы бағдарлама. Сондықтан код сәл өзгеше. Мен оның орнына осы бағдарламалық жасақтаманы қолдануды ұсынамын.

Мақсатты және жіберуші қорап

Мен сенсор мен көгілдір сымды нысанаға бекітемін, ал 2 м 3, 5 мм фоно кабельмен оны атмега чипі, зарядтау құрылғысы мен жасыл және қызыл сымды ұстайтын таратқыш қорабына қосамын. Бұл оны болат оқтармен ұрудан қорғау үшін жасалған.

2 -қадам: Ойын контроллері

Ойын контроллері
Ойын контроллері
Ойын контроллері
Ойын контроллері
Ойын контроллері
Ойын контроллері
Ойын контроллері
Ойын контроллері

Келесі нәрсе - сенсорлардың контроллерін жасау. Бұл сенсорлармен байланысу үшін NRF24L01 модулін қолданатын Arduino. Басқа ештеңе. Содан кейін Arduino жұмыс істеу үшін таңқурайдағы USB -ге қосылады.

Бұл осылай жұмыс істейтін болады. Не істеу керектігін білу үшін сериялық қолданады. Pi сериялық командаларды жібереді. Алдымен орнату кезінде ол сіз қосқан мақсатты және мақсатты сәйкестендіру нөмірлерін жібереді. Содан кейін ол тестілік функцияны орындайды және егер олар бір -бірімен байланысатын болса, таңқурайға pi хабарлайды.

Сіз ойынды ойнаған кезде ол пи -ден ойынның қай түрін және неше раундты/хиттерді жіберетінін жібереді. Міне бітті.

NRF24L01 модульдерін таңқурай пи -де қолдануға болады, бірақ мен үшін Arduino - бұл жақсы нұсқа, мен оларды таңқурайда ешқашан қолданбаймын, сондықтан олардың қаншалықты жақсы жұмыс істейтінін білмеймін

Таратқыштарға тұрақты тұрақты қуат беру үшін 5 вольтты қолданатын қуат модулі бар. Сіз оларды Arduino -мен бірге пайдалана аласыз (суретті қараңыз) - бұл розетка адаптерінің модульдік тақтасы

Сіз ойнаған кезде нысандар кездейсоқ бір -бірден қосылады. Біреуі соққанда, екіншісі іске қосылады.

Сынақ кезінде оның қалай жұмыс істейтінін көру үшін #DEFINE DEBUG белсендіруге болады, бірақ оны pi компьютерінде қолданбаған кезде, ол жұмыс істемейді.

GitHub бетіндегі кодты жүктеңіз.

3 -қадам: Raspberry Pi

Raspberry Pi
Raspberry Pi
Raspberry Pi
Raspberry Pi
Raspberry Pi
Raspberry Pi
Raspberry Pi
Raspberry Pi

Біз қазір Raspberry Pi -ге келдік.

Мен бірнеше қосымша функцияларды қостым, осылайша қуат түймесі болуы мүмкін. ATXRaspi 3 - бұл керемет модуль, сіз түймені қосуға, өшіруге және қайта жүктеуге болады. Уақыт пен күнді pi -де сақтауға арналған RTCRaspi. Сондай -ақ, жүйеге бірнеше жаңартуларды енгізу қажет болған жағдайда, желілік кабельді қосуға мүмкіндік берді. Сіз оларды Lowpowerlab -те таба аласыз

Жылулық принтерді сіз sparkfun -да таба аласыз, штрих -кодты оқу құралы Amazon -да қол жетімді.

Pi компьютері киоск режимінде жұмыс істейді, сондықтан браузер іске қосылады, ең алдымен pi компьютерінде PHP 7 және mysql бар веб -сервер болуы керек. (Бұл үшін ғаламторда көптеген нұсқаулықтар бар)

НАЗАР АУДАРЫҢЫЗ: егер сіз bluetooth орнатылған таңқурай пи бар термалды принтерді қолданғыңыз келсе, алдымен оны өшіруіңіз керек

Python сценарийіне pyserial қажет және сіз оны орнатасыз: sudo apt-get install python-serial

MySQL жұмысын жасау үшін келесі әрекеттерді орындаңыз:

sudo apt-get mysql-python орнату sudo apt-get install python-mysql.connector

suso apt-get pymysql орнатыңыз

Енді сіз Arduino -ны сериялық арқылы басқара аласыз, сонымен қатар mysql дерекқорын жаңарта аласыз.

Келесі қадам - mysql -ге қосылу үшін python сценарийін жасау.

Барлық үш python сценарийінде mysql дерекқорымен байланысты өзгерту.

Келесі қадам - python сценарийін басында іске қосу.

Үш python script.game.py бар, оларда ойын функциясы бар.print.py - бұл терминалды принтерді print.ean.py үшін қажет болса, қажет болған жағдайда ғана қажет. штрих -код сканерін қолданады.

Оларды автоматты түрде іске қосу үшін мен өңдеймін:

sudo nano /etc/rc.local

және 0 шығудан бұрын төмендегілерді қосыңыз:

sudo python /home/pi/Gamefiles/game.py & sudo python /home/pi/Gamefiles/print.py & sudo python /home/pi/Gamefiles/ean.py &

Питон сценарийі үшін дұрыс орынды өзгертіңіз және соңында & белгісін ұмытпаңыз

Енді біз веб -шолғышқа киоск режимін жасауымыз керек, алдымен жүгіргіні алып тастаңыз:

sudo apt-get install unclutter

sudo nano/etc/xdg/lxsession/LXDE-pi/autostart

енді бұл файлдан табыңыз және түсініктеме беріңіз:

@xscreensaver -no -splash # экран сақтағышты өшіру үшін осы жолға түсініктеме беріңіз

Төменде мыналар қосылады:

@xset s off @xset -dpms @xset s noblank @chromium-browser --noerrdialogs --force-device-scale-factor = 1.25-киоск https:// localhost

Барлық жүктелетін мәтіндер мен материалдарды жоюдың келесі қадамы, сонымен қатар жүктеу экранын қосуға болады - бұл жылдам нұсқаулық:

sudo nano /boot/config.txt және төменгі жағында adddisable_splash = 1

Суреттің астындағы мәтіндік хабарды алып тастаңыз:

sudo nano /usr/share/plymouth/themes/pix/pix.script

Табыңыз және алып тастаңыз (немесе түсініктеме беріңіз):

message_sprite = Sprite (); message_sprite. SetPosition (экранның ені * 0,1, экранның биіктігі * 0,9, 10000);

және:

my_image = Image. Text (мәтін, 1, 1, 1); message_sprite. SetImage (my_image);

Енді біз жүктеу хабарламаларын алып тастаймыз:

sudo nano /boot/cmdline.txt

«console = tty1» дегенді «console = tty3» дегенге ауыстырыңыз

және жолдың соңына қосыңыз:

тыныш plymouth.ignore-serial-consoles logo.nologo vt.global_cursor_default = 0

Ал pi шашыратқышты өзіңізбен алмастырыңыз:

sudo cp ~/my_splash-p.webp" />

Енді сіздің ойынға арналған жеке жүктеу экраны бар. Сіздің компьютеріңіз ойынды басқаруға дайын, келесі қадамға өтіңіз!

4 -қадам: Ойынды орнату

Осы сәтте сіз қазір ойын құрдыңыз.

Алдымен веб -жүйені орнату қажет. MySQL серверіне дерекқорды жүктеңіз. Файл қамтылған қалтада және database.sql деп аталады

Келесі қадам - конфигурация файлын өңдеу, оны config.php қалтасының атауынан табасыз Сценарий жұмыс істеуі үшін дерекқорға кіру ақпаратын өзгертіңіз.

Веб -жүйе көп тілді және ағылшын тілінде жазылған. Швед аудармасы бар, көп тілді алу үшін сізге Poedit атты бағдарламалық жасақтама қажет.

Веб -жүйеге қосымша тіл қосу үшін i18n_setup.php өңдеп, массивке қосу қажет:

in_array қайтару ($ locale, ['en_US', 'sv_SE']); (23 -жол)

Сонымен қатар әдепкі тілді өзгерту үшін 27 -жолда өзгерту қажет: $ lang = 'en_US'; en_US тілін өзіңізге өзгертіңіз.

тіл файлдары/LANGCODE/LC_MESSAGES/тілдерінде орналасуы керек және main.mo деп аталуы керек (тіл кодын тілге өзгерту)

selectplayers.php файлындағы пернетақтаны өзгерту үшін сіз тілді өзгертесіз: «en», // en for sv for svout layout: 'qwerty', // qwerty for english swedish-qwerty for Шведше

Сіз оларды 218 және 219 жолдарынан таба аласыз

Қол жетімді тілдер қалтада: активтер/js/пернетақта/тілдер мен орналасулар активтерде/js/пернетақтада/орналасуда болады және 118 және 119 жолдарына дұрыс файлдарды қосады (қазір табылған тілді ауыстырыңыз)

Мақсаттарды қосыңыз

Мақсатты қосу үшін localhost/ admin/ бөліміне өтіп, мақсатты қосу түймесін басыңыз.

Сізге мақсатты және бірегей мақсатты идентификаторды қосу және идентификаторды жіберу қажет.

Ойындарды қосыңыз

Сіз сондай -ақ бірнеше ойындар қосуыңыз керек. Localhost/ admin/ бөліміне өтіп, ойын қосу түймесін басыңыз

Сіз ойынның атын, сипаттамасын, минималды және максималды ойыншыларды, ойынның қандай түрін, сонымен қатар ойынның 1 -ден 5 -ке дейін қаншалықты қиын екенін қосуыңыз керек. мысал 30) неше раундқа (мысалы, 8) және қанша уақыт ойнайтынына уақыт бойынша (мысалы, бір минутқа 60)

Ойынды бастаңыз

Сіз ойынды қосқанда, ол мақсатты тестілеуді жасайды. Сондықтан негізгі жүйені бастамас бұрын, мақсатқа жету керек. Егер бәрі тестілеуден өтсе, сіз жүйені қолдана аласыз, бірақ олай болмаса, сіз оны пайдалана алмайсыз. Олар жауап алғанша хабарласуға тырысады.

Іске сәт

Бұл туралы, кодты жаңарту туралы қолдау мен ақпарат алу үшін осы ойынға арналған менің Facebook парақшама кіріңіз, сондықтан мен сізге тез жауап бере аламын. Сіз сілтемелерді жоғарыдан таба аласыз.

Ұсынылған: