Агуулгын хүснэгт:
- Хангамж
- Алхам 1: Утасгүй мэдрэгч
- Алхам 2: Тоглоомын хянагч
- Алхам 3: Raspberry Pi
- Алхам 4: Тоглоомыг тохируулах
Видео: Arduino буудлагын тоглоом V3: 4 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-31 10:22
Энэ тоглоом нь 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 GHz дээр ажилладаг (WiFi ажилладагтай адил)
Өмнөх төслүүддээ би чичиргээнд зориулж Piezo ашиглаж байсан бол одоо чичиргээ мэдрэгчийг ашиглаж байгаа боловч хэрэв та энэ тоглоомыг миний хуучин хувилбараар хийсэн бол Piezo -г ашиглаж болно.
Тоглоом нь Raspberry Pi 7 мэдрэгчтэй дэлгэцтэй бөгөөд таны тоглоомыг удирдах вэб системийг агуулдаг. Терминал принтер нь үр дүнг хэвлэдэг.
Хангамж
Дамжуулагчийн хувьд:
- X Atmega328 Arduino Bootloader -тэй (хичнээн олон зорилтоос хамаарна)
- X чичиргээ мэдрэгчийн унтраалга
- X Blue Led
- X Ногоон LED
- X Улаан Led
- 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 хувилбар, заавал биш)
- 5V хүч чадал сайтай (би 2.5 А хүчдэлтэй хуучин 12в USB ашигласан)
Бусад зүйлс:
- 12в хүч
- Сүлжээний залгуур (Сүлжээнд холбогдоход хялбар болгох)
- Кабель
Алхам 1: Утасгүй мэдрэгч
Мэдрэгч хийж эхэлье, би энэ тоглоомонд 4 мэдрэгч ашигладаг. Гэхдээ та илүү олон мэдрэгч нэмж болно. Гол систем нь зөв кодтой мэдрэгч ямар функцтэйгээр код илгээж, зорилтод бэлэн байх үед мэдрэгч нь 4 тооны кодтой холбогддог. Цэнхэр гэрэл бол таны онох гэж буй зорилт гэдгийг мэдээлэх явдал юм.
Бидэнд бас ногоон, улаан лед байдаг. Ногоон нь үргэлж асдаг бөгөөд мэдрэгч асаалттай байгааг мэдээлдэг. Зай нь 3.1 В -оос бага байх үед л улаан гэрэл асах болно (энэ нь батерейнд хичнээн их байгааг тооцоолохын тулд чипт суулгасан функцийг ашигладаг.
Чичиргээ мэдрэгч нь аналог зүүтэй холбогдсон бөгөөд түүний утгыг уншдаг. Утга буурах үед мэдрэгч нь чичиргээтэй байдаг бөгөөд энд бид цохилтыг бүртгэдэг.
Зорилго нь X секундын дотор цохилт өгөхгүй (анхдагч нь 15 секунд) эсвэл дамжуулах боломжгүй бол тэд анхны байрлал руугаа буцах болно.
Цахилгаан хуудсыг хэрхэн яаж хийх гэж байгаагаа би тайлбарлахгүй, гэхдээ үүнийг хийх гэж байгаа зүйл бол зай, цахилгаан унтраалга, цэнэглэгч юм. Үүнийг хэрхэн хүсч байгаагаа та өөрөө шийдэх болно.
NRF24L+ модулийн талаар мэдээлэл өгөхгүй байх:
Тэднийг тогтвортой байлгахын тулд эргэн тойрныхоо хүч чадал, тусгаарлалтыг хослуулан ашиглах код нь тэднийг ажиллуулахад хүргэдэг. Миний хувьд 10 uF конденсатор нь надад тогтвортой, сайн холболт өгөх болно, гэхдээ эхлээд шаардлагатай бол 100 uF конденсаторыг туршиж үзээрэй. Түүнчлэн хөндлөнгөөс оролцохоос хамгаалахын тулд эхлээд хуванцар тугалган цаас, дараа нь хөнгөн цагаан тугалган цаасаар боож өгнө
Мөн кодонд өгөгдөл дамжуулах хурд танд 250 Kb -аас хэтрэхгүй тул асуудал үүсгэхгүй. Гэхдээ ТХГН: myRadio.setPALevel (RF24_PA_MIN);
Миний MIN гэж тохируулсан код дээр (энэ нь туршилтын явцад), энэ нь хамгийн бага бөгөөд тийм их хүч зарцуулахгүй, гэхдээ хүрээ тийм ч урт биш байх болно. Хэрэв та тэдэнд тогтвортой, сайн хүч чадал өгсөн бол RF24_PA_MAX руу очиж хамгийн урт хугацааны хүрээг авах боломжтой, гэхдээ тэдэнд GOOOOOD тогтвортой хүч хэрэгтэй. Та харилцаа холбоо сайн байгаа эсэхийг мэдэхийн тулд LOW AND HIGH (зөвхөн MAX текстийг өөрчлөх) -г туршиж үзээрэй. Хэрэв та мэргэн буудагч болохгүй бол LOW болон HIGH -ийн сайн түвшинг авах болно
Дамжуулагчийг дор хаяж нэг метрийн зайтай байлга, ингэснээр дохио муу болно
NRF24 номын сан дахь ping жишээг ашиглан харилцаа холбоог туршиж үзээрэй (GitHub дээрх холбоос)
Кодод та энэ зорилтод зориулсан өвөрмөц таних дугаарыг тохируулах хэрэгтэй.
int targID = 3401; // Энэ бол зорилтот ID юм
int sendID = 2401; // Энэ бол хариултын ID юм
Мөн 3 DEFINE функц байдаг:
#DEBUG -ийг тодорхойлох
#баттерейг тодорхойлох
#define SHAKE // Хуучин пьезогийн оронд сэгсрэх түлхүүрийг ашиглавал
Дебаг хийх:
Туршилтын явцад үүнийг тодорхойлох нь зүйтэй юм. Гэхдээ та тэдгээрийг бэлэн болгохдоо үүнийг бүү идэвхжүүлээрэй.
ЗАЙ:
Хэрэв та зорилтот түвшний батерей шалгахыг хүсэхгүй байгаа бол энэ тодорхойлолтыг арилгах хэрэгтэй.
СЭРГЭЭ:
Хэрэв та миний хуучин хувилбарыг бүтээсэн бол танд пьезо мэдрэгч байгаа бол үүнийг зөв код авахын тулд үүнийг устгаарай.
ATMEGA328 чип
Arduino наногийн оронд би ATMEGA328 чип ашиглахаар шийдсэн (Uno ачаалагчтай), тэдгээрийг програмчлахад маш хялбар байдаг, энэ чипийг Arduino Uno -с салгаж, энэ чипийг нэмж код байршуулна уу. Зорилгоо хэрхэн яаж хийх талаар цахилгаан схемийг шалгана уу.
Код
Би кодыг Arduino IDE -ийн оронд PlatformIO ашиглан бичсэн. Энэ нь програмчлах илүү сайн програм юм. Тиймээс код нь арай өөр юм. Үүний оронд энэ програмыг ашиглахыг зөвлөж байна.
Зорилт ба дамжуулагчийн хайрцаг
Би мэдрэгч, цэнхэр туяаг зорилтот хэсэгт холбож, 2 м -ийн зайд 3, 5 мм -ийн фоно кабелиар холбож, атмега чип, батерей цэнэглэгч, ногоон, улаан туяа агуулсан дамжуулагч хайрцагт холбоно. Энэ нь түүнийг ган суманд цохиулахаас хамгаалахын тулд юм.
Алхам 2: Тоглоомын хянагч
Дараагийн хийх ёстой зүйл бол мэдрэгчийг хянагч болгох явдал юм. Энэ бол мэдрэгчтэй холбогдохын тулд NRF24L01 модулийг ашигладаг Arduino юм. Юу ч биш. Дараа нь Arduino нь бөөрөлзгөнө pi -д USB -ээр холбогдсон байна.
Энэ нь ингэж ажиллах болно. Энэ нь юу хийхээ мэдэхийн тулд цуваа ашигладаг бөгөөд pi нь цуваа командуудыг илгээх болно. Нэгдүгээрт, тохиргооны явцад та хичнээн олон зорилт, зорилтот дугаарыг илгээсэн болно. Дараа нь энэ нь туршилтын функцийг гүйцэтгэж, хэрэв тэд хоорондоо харилцдаг бол бөөрөлзгөнө пи -д мэдэгдэх болно.
Та тоглоом тоглож байхдаа ямар төрлийн тоглоом, хэдэн тойрог/цохилт ашиглахыг pi -ээс илгээнэ. Тийм л дээ.
NRF24L01 модулийг бөөрөлзгөнө pi дээр ашиглах боломжтой байдаг, гэхдээ миний хувьд Arduino бол бөөрөлзгөнө дээр хэзээ ч хэрэглэдэггүй нүгэл бол миний хувьд урт хугацааны туршид хэр сайн ажилладагийг нь мэдэхгүй юм
Дамжуулагчийг тогтвортой тогтвортой болгохын тулд 5 в хүчийг ашигладаг цахилгаан модуль байдаг. Та тэдгээрийг Arduino -той хамт ашиглаж болно (Зураг харна уу) нэр нь сокет адаптерийн модулийн самбар юм
Та тоглож байхдаа зорилтууд нэг нэгээр нь санамсаргүй байдлаар идэвхжих болно. Нэгийг нь цохиход нөгөөг нь идэвхжүүлнэ.
Туршилтын явцад та #DEFINE DEBUG -ийг идэвхжүүлж, хэрхэн ажилладагийг харах боломжтой боловч үүнийг pi компьютерт ашиглах үед ажиллахгүй.
Кодыг GitHub хуудаснаас татаж авна уу.
Алхам 3: Raspberry Pi
Бид одоо Raspberry Pi дээр ирлээ.
Би нэмэлт функцуудыг нэмж оруулсан тул цахилгаан товчлууртай болно. ATXRaspi 3 бол гайхалтай модуль бөгөөд та pi -г асаах, унтраах, товчлуураар дахин эхлүүлэх боломжтой. Мөн цаг, огноог pi дээр хадгалах RTCRaspi. Системийн зарим шинэчлэлтийг хийх шаардлагатай бол сүлжээний кабелийг залгах боломжтой болсон. Та тэдгээрийг Lowpowerlab дээрээс олох болно
Дулааны принтерийг sparkfun дээрээс олж авах боломжтой бөгөөд баркод уншигч нь Amazon дээр байдаг.
Pi компьютер нь ТҮЦ горимд ажилладаг тул хөтөч эхлэхэд нээгдэх болно. Юуны өмнө та pi компьютер дээр PHP 7 болон mysql програмтай вэб сервертэй байх хэрэгтэй. (Үүний тулд вэб дээр маш олон гарын авлага байдаг)
Анхаарна уу: хэрэв та блютүүт суурилуулсан бөөрөлзгөнө pi бүхий дулааны принтер ашиглах гэж байгаа бол эхлээд үүнийг идэвхгүй болгох хэрэгтэй
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 нь хэрэв та терминал принтер ашиглан хэвлэх гэж байгаа бол л хэрэгтэй болно.ean.py нь хэрэв танд байгаа бол л хэрэгтэй болно. бар код скан хийгчийг ашиглах гэж байна.
Тэднийг автоматаар эхлүүлэхийн тулд би засварлаж байна:
sudo нано /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 --kiosk https:// localhost
Бүх ачаалах текст болон бусад зүйлийг устгах дараагийн алхам бол өөрийн ачаалах дэлгэцээ энд нэмэх явдал юм.
sudo nano /boot/config.txt болон доод талд adddisable_splash = 1
Нэвтрүүлсэн зургийн доорх текст мессежийг устгах:
sudo нано /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 нано /boot/cmdline.txt
"консол = tty1" -ийг "консол = tty3" гэж орлуулах
ба мөрний төгсгөлд дараахь зүйлийг нэмнэ үү
чимээгүй plymouth.ignore-serial-consoles logo.nologo vt.global_cursor_default = 0
Мөн pi splash -ийг өөрийн гараар солино уу
sudo cp ~/my_splash-p.webp" />
Одоо та өөрийн тоглоомын ачаалах дэлгэцтэй боллоо. Таны pi компьютер тоглоомыг удирдахад бэлэн боллоо. Тиймээс дараагийн алхам руу орно уу!
Алхам 4: Тоглоомыг тохируулах
Энэ үед та тоглоомыг үүсгэсэн.
Юуны өмнө та вэб системийг тохируулах хэрэгтэй. Өгөгдлийн санг mysql сервер дээрээ байршуулна уу. Файл нь хавтас дотор байгаа бөгөөд database.sql нэртэй байна
Дараагийн алхам бол тохиргооны файлыг засах явдал юм, та үүнийг config.php хавтасны нэрээс олж болно. Өгөгдлийн сангийн нэвтрэх мэдээллийг өөрчил, ингэснээр скрипт ажиллах болно.
Вэб систем нь олон хэл дээр суурилсан бөгөөд англи хэл дээр бичигдсэн байдаг. Швед орчуулга байдаг бөгөөд илүү их хэлтэй болохын тулд танд Poedit нэртэй програм хангамж хэрэгтэй болно.
Вэб системд илүү их хэл нэмэхийн тулд i18n_setup.php файлыг засварлаж массивт нэмэх хэрэгтэй.
in_array буцаах ($ localale, ['en_US', 'sv_SE']); (23 -р мөр)
Мөн анхдагч хэлийг өөрчлөхийн тулд 27 -р мөрөнд өөрчлөх шаардлагатай: $ lang = 'en_US'; en_US хэлийг өөрчилнө үү.
хэлний файлуудыг locales/LANGCODE/LC_MESSAGES/хэсэгт байрлуулж, main.mo гэж нэрлэх ёстой (хэлний кодоо өөрийн хэл рүү өөрчлөх)
selectplayers.php файл дахь гарыг өөрчлөхийн тулд та хэлээ өөрчилдөг: "en", // en for sv for svada: "qwerty ', // qwerty for english swedish-qwerty for swedish-qwerty
Та тэдгээрийг 218 ба 219 -р мөрнөөс олж болно
Боломжтой хэлнүүд фолдерт байна: хөрөнгийн/js/гар/хэл & зохион байгуулалт нь хөрөнгийн/js/гар/байршилд байгаа бөгөөд зөв файлуудыг 118 ба 119 мөрөнд нэмж оруулаарай (одоо тэндээс олсон хэлээ солино уу)
Зорилго нэмэх
Зорилго нэмэхийн тулд та localhost/ admin/ руу очиж зорилт нэмэх дээр дарна уу.
Та зорилтот нэр, өвөрмөц зорилтот ID -г нэмж, ID илгээх, өөрт байгаа олон зорилгоо нэмэх хэрэгтэй.
Тоглоом нэмэх
Та бас хэдэн тоглоом нэмэх хэрэгтэй. Localhost/ admin/ руу ороод тоглоом нэмэх дээр дарна уу
Та тоглоомын нэр, тодорхойлолт, мин болон дээд түвшний тоглогчид ямар тоглоом байх ёстой, тоглоом 1-5 хооронд хэр хэцүү вэ, тоглоом ямар байна вэ, риффайр тоглоомын хувьд та хичнээн олон цохилт оруулах ёстой (жишээ 30) хурдан зургийн хувьд хэдэн тойрог хийх (жишээ нь 8), хэр удаан тоглохыг тооцоолох (жишээ нь нэг минутанд 60)
Тоглоомыг эхлүүлнэ үү
Тоглоомыг асаахад энэ нь зорилтот туршилтыг хийх болно. Тиймээс үндсэн системийг эхлүүлэхийн өмнө зорилтууд нь биелэх ёстой. Хэрэв бүх хүмүүс шалгалтанд тэнцсэн бол та системийг ашиглаж болно, гэхдээ чадахгүй бол та үүнийг ашиглаж чадахгүй. Тэд хариулт авах хүртэл харилцахыг хичээх болно.
Амжилт хүсье
Энэ бол энэ тухай юм, кодын шинэчлэлтийн талаархи дэмжлэг, мэдээллийг авахын тулд энэ тоглоомын талаар миний Facebook хуудсыг дагана уу, ингэснээр би танд хурдан хариу өгөх болно. Та эндээс линкүүдийг олох болно.
Зөвлөмж болгож буй:
Энэхүү өндөр хүчдэлийн клик-тоглоом тоглоом: 11 алхам (зурагтай)
Энэхүү өндөр хүчдэлийн клик-тоглоом тоглоомын чулуу: 70-аад оны үед ахлах сургуулиудад түгээмэл хэрэглэгддэг чимэг Click-Clack тоглоомын хоёр цахилгаан статик хувилбарыг энд оруулав. Хувилбар 1.0 бол хэт төсвийн загвар юм. Эд анги (цахилгаан хангамжийг оруулаагүй) бараг юу ч биш юм. Илүү үнэтэй, илүү үнэтэй зүйлийн тайлбар
ARDUINO + SCRATCH буудлагын тоглоом: 6 алхам
ARDUINO + SCRATCH Shooting Game: Бялуугаа хадгал !!! Энэ аюулд орлоо. Дөрвөн ялаа ойртох бөгөөд та ялаа буудаж, бялуугаа хадгалахад ердөө 30 секунд л хангалттай
Лазер буудлагын тоглоом (Оддын дайн): 5 алхам
Лазер буудлагын тоглоом (Оддын дайн): Энэ нийтлэлд би төсвөөр хийх боломжтой arduino дээр суурилсан оддын дайны төслийг хуваалцах болно. Энэхүү төсөл нь гар хийцийн бүтээгдэхүүн болох танд тохирох лазер буудлагын тоглоом юм. Энэхүү төсөл нь 2 дэд төслөөс бүрдэнэ: картоноос тэсэлгээ хийх
ESP32 VGA аркад тоглоом ба тоглоомын тоглоом: 6 алхам (зурагтай)
ESP32 VGA аркад тоглоом ба джойстик: Энэхүү зааварчилгаанд би VGA дэлгэцийн гаралттай ESP32 ашиглан дөрвөн тоглоомын тоглоом - Tetris - Snake - Breakout - Bomber - ийг хэрхэн яаж хуулбарлахыг үзүүлэх болно. Нарийвчлал нь 320 х 200 пиксел бөгөөд 8 өнгөөр хийгдсэн. Би өмнө нь хувилбарыг нь хийж байсан
Nerf -д зориулсан Arduino: Хронограф ба буудлагын тоолуур: 28 алхам (зурагтай)
Arduino for Nerf: Chronograph and Shot Counter: Миний өмнөх зааварчилгаа нь хэт улаан туяаны ялгаруулагч ба детектор ашиглан дартын хурдыг илрүүлэх үндсийг тусгасан болно. Энэхүү төсөл нь зөөврийн сумны тоолуур, хронограф хийхийн тулд хэвлэмэл хэлхээний самбар, дэлгэц, батерейг ашиглан алхам алхмаар урагшлах болно