INHOUDSOPGAWE:
- Voorrade
- Stap 1: Die draadlose sensors
- Stap 2: Die spelbeheerder
- Stap 3: Framboos Pi
- Stap 4: Stel die spel op
Video: Arduino -skietspel V3: 4 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-31 10:16
Hierdie speletjie is vir u wat airsoft of co2 gebruik om op teikens te skiet. Dit is 'n spel.
Vir die nuutste inligting oor die spel en ondersteuning:
www.facebook.com/arduinoshooting/
Vir my blogblad oor die spel:
shootinggameblog.wordpress.com
Vir die kodes oor die spel:
github.com/shootinggame82/Shooting-game-v3
Skietwedstryd is x teikens wat draadloos is; elke teiken het 'n vibrasiesensor wat trillings waarneem wanneer 'n treffer gemaak word. Die draadlose sensors is 'n Atmega328-chip (Arduino Uno-chip) en het 'n herlaaide Li-Po-battery.
Die hoofbeheerder vir hierdie speletjie word beheer deur 'n Arduino en word seriële beheer vanaf 'n Framboos Pi.
So, hoe werk hierdie speletjie? Wel, dit is drie spelmetodes:
QuickTime: Speel X -rondtes en skiet so vinnig dat jy kan op elke teiken.
Tydsmodus: skiet soveel teikens as moontlik op X sekondes.
Rapidfire: Skiet X -skote op die vinnigste tyd.
Die stelsel gebruik ons NRF24L01 senders om 'n goeie afstand van die hoofbeheerder te kry. Hulle werk op 2,6 GHz (dieselfde as wat WiFi gebruik)
In my vorige projekte gebruik ek Piezo vir die vibrasie, maar nou word die vibrasiesensor skakelaar gebruik, maar u kan steeds Piezo gebruik as u my ou weergawe van hierdie speletjie gemaak het.
Die spel het 'n Raspberry Pi 7 -skerm wat die webstelsel waarmee u die spel beheer, kan hou. 'N Terminale drukker druk die resultate af.
Voorrade
Vir senders:
- X Atmega328 met Arduino Bootloader (Afhangend van hoeveel teikens)
- X Skakelaar vir trillingsensor
- X Blou Led
- X Groen Led
- X Rooi Led
- X 3.7v Li-Po battery
- X FC-75 Li-Po Charger module (of 'n ander model)
- X 100 uF kondensator
- X Omhulsels vir die sensors
- X LD1117V33 (maak 'n veilige 3,3 V -sender)
- X NRF24L01 modules
- X x 3 220 Ohm weerstande (3 is nodig vir een teiken)
- X 16 MHz kristal
- X x 2 Ongepaste kondensators 22 pF (2 is nodig vir een teiken)
Vir die belangrikste Arduino:
- 1 Arduino (Nano of Uno word aanbeveel, moet USB hê)
- 1 NRF24L01 -module
- 1 10 uF kapasitor
Vir framboos Pi:
- Framboos Pi (ek het 3B gebruik)
- 7 "raakskerm
- ATXRaspi (opsioneel, maar 'n goeie aan / uit -knoppie -module)
- RTCRaspi (opsioneel, maar 'n goeie RTC -module om tyd en datum te hou)
- Termiese drukker (opsioneel, maar nodig om te kan druk)
- Strepieskodeskandeerder (USB -weergawe wat soos 'n sleutelbord werk, opsioneel)
- Goeie 5V -krag (ek het 'n ou 12V USB met 'n 2,5 A -krag gebruik)
Ander goed:
- 12V krag (ek het een by 12 Ah)
- Netwerksok (maak dit maklik om aan te sluit op netwerk)
- Kabels
Stap 1: Die draadlose sensors
Laat ons begin om die sensors te maak. Ek gebruik 4 sensors vir hierdie speletjie. Maar u kan maklik meer sensors byvoeg. Die blou lig is om in te lig dat dit die teiken is wat u gaan bereik.
Ons het ook 'n groen en 'n rooi LED. Die groen brand altyd om aan te dui dat die sensor aan is. Die rooi sal slegs brand as die battery minder as 3.1V is (dit gebruik die ingeboude funksie in die skyfie om te bereken hoeveel daar in die battery is.
Die vibrasiesensor is gekoppel aan die analoog pen en lees die waarde daarvan. As die waarde daal, het die sensor 'n vibrasie, en dit is waar ons die treffer registreer.
Die doelwit het 'n mislukte funksie, as u nie binne X sekondes slaan nie (standaard is 15 sekondes), of as u nie kan stuur nie, gaan hulle terug na die beginposisie.
Ek gaan nie verduidelik hoe u met draad gaan nie, kyk na die elektriese plaat om te sien hoe u dit gaan doen. Dit is aan u om te besluit hoe u dit wil hê.
BELANGRIK OOR DIE NRF24L+ -module:
Dit kan pyn in die … wees om dit stabiel te kry, gekombineer met goeie krag en isolasie daar rondom, en die kode waarmee u dit kan laat werk. Vir my gee 10 uF -kondensator my 'n stabiele en goeie verbinding, maar probeer eers as u 'n 100 uF -kondensator benodig. Omhul dit ook met eers plastiekfoelie en dan aluminiumfoelie om dit te voorkom dat dit inmeng
Ook in die kode het die datatempo wat u nie meer as 250 Kb nodig het nie, so dit is nie die probleem nie. Maar die PA: myRadio.setPALevel (RF24_PA_MIN);
In die kode wat ek op MIN gestel het (dit is tydens die toets), is dit die laagste en gebruik dit nie soveel krag nie, maar die reikafstand is nie so lank nie. As u 'n stabiele en goeie krag vir hulle het, kan u na RF24_PA_MAX gaan om die langste reikafstand te kry, maar hulle benodig GOOOOOD stabiele krag daarvoor. Probeer ook LAAG EN HOOG (verander slegs MAX -teks) om te sien of u goeie kommunikasie kry. U kry ook 'n goeie bereik op LAAG en HOOG, tensy u 'n sluipskutter gaan wees
Hou ook die senders minstens een meter uitmekaar, want as u dit sluit, kan die sein sleg wees
Toets die kommunikasie met 'n paar ping -voorbeelde in die NRF24 -biblioteek (skakel op GitHub)
In die kode moet u die unieke identifikasienommer vir die teiken stel:
int targID = 3401; // Dit is die teiken -ID
int sendID = 2401; // Dit is die antwoord -ID
Daar is ook 3 DEFINE funksies:
#define DEBUG
#definieer BATTERY
#define SHAKE // AS SHAKE SWITCH GEBRUIK WORD PLEK VAN DIE OU PIEZO
DEBUG:
Tydens die toets is dit goed om dit te definieer. Maar as u dit beskikbaar stel, moet u dit nie aktiveer nie.
BATTERY:
As u nie 'n batterykontroleerder vir die doelwitte wil hê nie, moet u hierdie definisie verwyder.
SKUD:
As u my ou weergawe gebou het, het u piëzo -sensors, en verwyder dit om die regte kode daarvoor te kry.
ATMEGA328 Chip
In plaas van 'n Arduino -nano, het ek besluit om die ATMEGA328 -chip te gebruik (met Uno -laaier), dit is eenvoudig om te programmeer, maar verwyder die chip uit 'n Arduino Uno en voeg die chip by en laai kode op. Gaan die elektriese skema na oor hoe om die teikens te bou.
Die kode
Ek het die kode met PlatformIO in plaas van Arduino IDE geskryf. Dit is 'n beter sagteware om in te programmeer. Die kode is dus 'n bietjie anders. Ek beveel aan dat u hierdie sagteware eerder gebruik.
Die doel- en senderkas
Ek het die sensor en die blou led op die teiken aangebring, en met 'n 3, 5 mm -fonokabel op 2 m kan ek dit aanmekaar koppel in die senderkas wat die atmega -chip, batterylaaier en die groen en rooi led bevat. Dit is bedoel om te voorkom dat dit met staalkoeëls getref word.
Stap 2: Die spelbeheerder
Die volgende ding wat ons moet doen, is om die kontroleerder vir die sensors te maak. Dit is 'n Arduino wat 'n NRF24L01 -module gebruik om met die sensors te kommunikeer. Niks anders nie. Die Arduino word dan met die USB in die framboos -pi verbind om te werk.
Dit is hoe dit sal werk. Dit gebruik reeks om te weet wat om te doen. Die pi sal reeksopdragte stuur. Tydens die opstelling stuur dit eers hoeveel teikens u bygevoeg het, en die teikens se identifikasienommers. Dan sal dit die toetsfunksie verrig en die framboospi in kennis stel as hulle wel met mekaar kommunikeer.
As u die speletjie speel, stuur dit van pi watter tipe spel en hoeveel rondes/treffers u moet gebruik. Dis dit.
Dit is moontlik om die NRF24L01 modules in die framboos pi te gebruik, maar vir my is die Arduino 'n beter opsie, maar ek gebruik dit nooit in framboos nie, so ek weet nie hoe goed dit op lang termyn werk nie
Daar is 'n kragmodule wat 5 v gebruik om die stabiele krag van die senders korrek te maak. U kan dit saam met u gebruik Arduino (sien die prentjie), die naam is Socket Adapter Module Board
As u speel, word die teikens willekeurig een vir een geaktiveer. As een getref word, sal 'n ander een geaktiveer word.
Tydens die toets kan u #DEFINE DEBUG laat aktiveer om te sien hoe dit werk, maar nie as u dit op die pi -rekenaar gebruik nie; dit werk dan nie.
Laai die kode af op die GitHub -bladsy.
Stap 3: Framboos Pi
Ons het nou by die Raspberry Pi gekom.
Ek het 'n paar ekstra funksies bygevoeg sodat ek 'n aan / uit -knoppie kan hê. Die ATXRaspi 3 is 'n uitstekende module; u kan die pi met 'n knoppie aan, afskakel en herlaai. Ook 'n RTCRaspi om die tyd en datum op die pi te hou. Dit het dit ook moontlik gemaak om net 'n netwerkkabel aan te sluit, want ek moet 'n paar opdaterings aan die stelsel doen. U vind hulle op Lowpowerlab
Die termiese drukker vind u op sparkfun en die strepieskode -leser is op Amazon beskikbaar.
Die Pi -rekenaar werk in die kiosk -modus, sodat die blaaier by die begin oopmaak. Eerstens moet u 'n webserver met PHP 7 en mysql op die pi -rekenaar hê. (Daar is baie gidse op die internet hiervoor)
LET WEL: as u 'n termiese drukker gaan gebruik met framboospi wat ingeboude bluetooth het, moet u die een eers deaktiveer
Die python-skrip benodig pyserial en u installeer dit: sudo apt-get install python-serial
Om die mysql te laat werk, moet u die volgende installeer:
sudo apt-get install mysql-python sudo apt-get install python-mysql.connector
Soek apt-get installeer pymysql
Nou kan u u Arduino deur middel van die reeks beheer en ook die mysql -databasis opdateer.
Die volgende stap is om 'n python -script te maak om aan te sluit op mysql.
In al drie die python -skrif verander die verbinding met u mysql -databasis.
Die volgende stap is om die python -skrip aan die begin te laat loop.
Daar is drie python script.game.py is die belangrikste prentjie van almal, die een wat die spelfunksie bevat.print.py Dit is slegs nodig as u 'n termdrukker gaan gebruik om te print.ean.py is slegs nodig as u gaan die strepieskodeskandeerder gebruik.
Om hulle outomaties te begin, wysig ek:
sudo nano /etc/rc.local
en voeg die volgende onderaan by voor afrit 0:
sudo python /home/pi/Gamefiles/game.py & sudo python /home/pi/Gamefiles/print.py & sudo python /home/pi/Gamefiles/ean.py &
Verander asseblief die regte plek vir u python -script en vergeet nie die & teken aan die einde nie
Nou moet ons 'n kioskmodus vir die webblaaier maak, eers die wyser verwyder:
sudo apt-get install unclutter
sudo nano/etc/xdg/lxsession/LXDE-pi/autostart
vind en lewer kommentaar in die lêer:
@xscreensaver -no -splash # lewer kommentaar op hierdie lyn om screensaver uit te skakel
Hieronder voeg dit by:
@xset s off @xset -dpms @xset s noblank @chromium-browser --noerrdialogs --force-device-scale-factor = 1.25-kiosk https:// localhost
Die volgende stap om alle opstarttekste en ander dinge te verwyder, voeg ook u eie opstartskerm by, hier is 'n vinnige gids:
sudo nano /boot/config.txt en onderaan adddisable_splash = 1
Verwyder teksboodskap onder die spatprent:
sudo nano /usr/share/plymouth/themes/pix/pix.script
Soek en verwyder (of lewer kommentaar):
message_sprite = Sprite (); message_sprite. SetPosition (screen_width * 0.1, screen_height * 0.9, 10000);
en:
my_image = Image. Text (teks, 1, 1, 1); message_sprite. SetImage (my_image);
Nou verwyder ons opstartboodskappe:
sudo nano /boot/cmdline.txt
vervang “console = tty1” deur “console = tty3”
en voeg aan die einde van die reël by:
spat stil plymouth.ignore-serial-consoles logo.nologo vt.global_cursor_default = 0
En vervang die pi -spat deur u eie:
sudo cp ~/my_splash-p.webp" />
Nou het u u eie opstartskerm vir u spel. U pi -rekenaar is nou gereed om die spel te hanteer, dus gaan na die volgende stap!
Stap 4: Stel die spel op
Op hierdie stadium het u die spel nou geskep.
Eerstens moet u die websisteem instel. Laai die databasis op na u mysql -bediener. Die lêer is in die map met die naam database.sql
Die volgende stap is om die config -lêer te wysig; u kan dit vind in die mapnaam config.php Verander die aanmeldinligting van die databasis sodat die script sal werk.
Die webstelsel is in meer tale gebaseer en is in Engels geskryf. Daar is 'n Sweedse vertaling beskikbaar. Om meer taal te maak, benodig u 'n sagteware met die naam Poedit.
Om meer taal by die webstelsel te voeg, moet u i18n_setup.php wysig en in die skikking voeg:
gee terug in_array ($ locale, ['en_US', 'sv_SE']); (Reël 23)
Om die standaardtaal te verander, moet u ook in reël 27 verander: $ lang = 'en_US'; verander die en_US na u taal.
die taallêers moet in locales/LANGCODE/LC_MESSAGES/geplaas word en main.mo genoem word (Verander langcode in u taal)
om die sleutelbord in lêer selectplayers.php te verander, verander u taal: "en", // en vir Engels sv vir Sweedse uitleg: 'qwerty', // qwerty vir Engels swedish-qwerty vir Sweeds
U vind dit op lyn 218 en 219
Die beskikbare tale is in die vouer: bates/js/sleutelbord/tale en uitlegte is in bates/js/sleutelbord/uitlegte en voeg die korrekte lêers by reël 118 en 119 (vervang die een wat u nou daar vind)
Voeg teikens by
Om doelwitte by te voeg, gaan u na localhost/ admin/ en klik op voeg teikens by.
U moet 'n naam vir die teiken en die unieke teiken -ID byvoeg en ID stuur, soveel doelwitte as wat u het, byvoeg.
Voeg speletjies by
U moet ook 'n paar speletjies byvoeg. Gaan na localhost/ admin/ en klik op Voeg speletjie by
U moet 'n naam vir die spel, 'n beskrywing, min en maksimum spelers byvoeg, watter tipe spel, ook hoe moeilik die spel is tussen 1 en 5. En hoe die spel is, sodat u vir die quickfire -spel hoeveel treffers kan byvoeg (voorbeeld 30) vir die vinnige trek hoeveel rondes (byvoorbeeld 8) en vir tydsduur hoe lank hulle gaan speel (byvoorbeeld 60 vir een minuut)
Begin die spel
As u die spel aanskakel, sal dit die teikentoetsing doen. Die teikens moet dus wees voordat u met die hoofstelsel begin. As almal die toets slaag, kan u die stelsel gebruik, maar as dit nie die geval is nie, kan u dit nie gebruik nie. Dit sal probeer kommunikeer totdat hulle reaksie kry.
Sterkte
Wel, dit is omtrent dit; volg my Facebook -bladsy vir hierdie speletjie vir ondersteuning en inligting oor die opdatering van die kode, sodat ek u vinnig kan reageer. Hier vind u skakels bo -aan.
Aanbeveel:
Arduino Halloween Edition - Zombies pop -out skerm (stappe met foto's): 6 stappe
Arduino Halloween Edition - Zombies pop -out skerm (stappe met foto's): wil u u vriende skrik en 'n skreeu geraas maak tydens Halloween? Of wil u net 'n goeie grap maak? Hierdie pop-up skerm van Zombies kan dit doen! In hierdie instruksies sal ek u leer hoe u maklik Zombies kan spring deur Arduino te gebruik. Die HC-SR0
Arduino Uno visvoerder in 6 goedkoop en maklike stappe !: 6 stappe
Arduino Uno Fish Feeder in 6 goedkoop en maklike stappe !: 'n Bietjie agtergrond kan dus nodig wees vir hierdie projek. Mense met troeteldiervisse het waarskynlik dieselfde probleem as ek gehad: vakansies en vergeetagtigheid. Ek het voortdurend vergeet om my vis te voer, en ek het altyd probeer om dit te doen voordat dit gebeur het
Akoestiese opheffing met Arduino Uno stap-vir-stap (8-stappe): 8 stappe
Akoestiese levitasie met Arduino Uno Stap-vir-stap (8-stappe): ultrasoniese klankomvormers L298N Dc vroulike adapter kragbron met 'n manlike DC-pen Arduino UNOBreadboard Hoe werk dit: Eerstens laai u kode op na Arduino Uno (dit is 'n mikrobeheerder toegerus met digitale en analoog poorte om kode (C ++) om te skakel
Brandalarmstelsel met Arduino [in 'n paar maklike stappe]: 3 stappe
Brandalarmstelsel met Arduino [in 'n paar maklike stappe]: wil u 'n eenvoudige en interessante projek maak met Arduino wat terselfdertyd baie nuttig en moontlik lewensreddend kan wees? Indien wel, het u op die regte plek gekom om te leer iets nuuts en vernuwend. In hierdie pos gaan ons
Goedkoopste Arduino -- Kleinste Arduino -- Arduino Pro Mini -- Programmering -- Arduino Neno: 6 stappe (met foto's)
Goedkoopste Arduino || Kleinste Arduino || Arduino Pro Mini || Programmering || Arduino Neno: …………………………. Teken asseblief in op my YouTube -kanaal vir meer video's ……. .Die projek handel oor hoe om 'n kleinste en goedkoopste arduino ooit te koppel. Die kleinste en goedkoopste arduino is arduino pro mini. Dit is soortgelyk aan arduino