Мазмуну:

Arduino атуу оюну V3: 4 кадам
Arduino атуу оюну V3: 4 кадам

Video: Arduino атуу оюну V3: 4 кадам

Video: Arduino атуу оюну V3: 4 кадам
Video: Функция Arduino Millis поясняется 3 примерами 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'yу вибрация үчүн колдонуп жүргөм, бирок азыр Vibration Sensor Switch колдонулат, бирок бул оюндун менин эски версиясын түзсөңүз дагы деле Piezo колдоно аласыз.

Оюнда Raspberry Pi 7 сенсордук экраны бар, ал оюнду көзөмөлдөгөн желе тутумун камтыйт. Терминал принтери натыйжаларды басып чыгарат.

Жабдуулар

Бергичтер үчүн:

  • X Atmega328 Arduino Bootloader менен (Канча бутага жараша)
  • X Vibration Sensor Switch
  • X Blue Led
  • X Green Led
  • X Red 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 Unplorized Capacitors 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 колдондум)

Башка нерселер:

  • 12v күчү (менде 12 Ахта бар)
  • Тармак розеткасы (Тармакка туташууну оңой кылыңыз)
  • Кабелдер

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

Зымсыз сенсорлор
Зымсыз сенсорлор
Зымсыз сенсорлор
Зымсыз сенсорлор
Зымсыз сенсорлор
Зымсыз сенсорлор

Сенсорлорду жасай баштайлы. Мен бул оюн үчүн 4 сенсорду колдоном. Негизги система кодду жөнөткөндө, туура коду бар сенсор күйүп, максатка даяр болгондо сенсорлор 4 сан менен байланышат. Көгүлтүр жарык - бул сиз бутага ала турган объект экениңизди билдирүү.

Ошондой эле бизде жашыл жана кызыл LED бар. Жашыл сенсор күйүп тургандыгын билдирүү үчүн дайыма күйүп турат. Батарея 3.1Вдан аз болгондо гана кызыл күйөт (батареяда канча бар экенин эсептөө үчүн чипте камтылган функцияны колдонот).

Вибрация сенсору аналогдук пинге туташып, анын маанисин окуйт. Мааниси чөгүп баратканда, сенсордо дирилдөө пайда болот жана биз соккуну каттайбыз.

Максаттын коопсуз функциясы бар, сиз X секундада сокпойсуз (демейки 15 сек) же эгер берүү мүмкүн болбосо, алар баштапкы абалына кайтып келишет.

Мен сиз зымга кандайча бара жатканыңызды түшүндүрбөйм, электр баракты текшериңиз, муну кантип жасоо керектигин текшериңиз. Анда жок болгон бир нерсе - бул батарея, кубат которгуч жана заряддагыч. Муну кантип каалаарыңызды өзүңүз чечесиз.

NRF24L+ Модулу ЖӨНҮНДӨ ИМПОРТАЙНТ:

Аларды оор абалга алып келиши мүмкүн … алардын туруктуулугун камсыз кылуу, тегерегинде жакшы күч жана обочолонуу менен бирге, жана сиз аларды иштей турган код. Мен үчүн 10 UF конденсатору мага туруктуу жана жакшы байланышты берет, бирок сураныч, биринчиден, сизге 100 UF конденсатор керек. Ошондой эле кийлигишүүдөн коргоо үчүн аларды биринчи пластикалык фольга менен, андан кийин алюминий фольга менен ороп коюңуз

Ошондой эле коддо, маалымат ылдамдыгы сизге 250 Кбтан ашык эмес, андыктан көйгөй болбойт. Бирок ПА: myRadio.setPALevel (RF24_PA_MIN);

Мен MINге койгон коддо (Бул тест учурунда), бул эң төмөн жана анча күчтү колдонбойт, бирок диапазон ушунчалык көп болбойт. Эгер сиз аларга туруктуу жана жакшы күчкө ээ болсоңуз, анда эң узун диапазонду алуу үчүн RF24_PA_MAXке чейин барсаңыз болот, БИРОК алар үчүн GOOOOOD туруктуу кубаты керек. Жакшы баарлашууңузду көрүү үчүн LOW AND HIGH (MAX текстин гана өзгөртүү) аракет кылыңыз. Ошондой эле сиз снайпер болбой турган болсоңуз, LOW жана HIGH боюнча жакшы диапазонго ээ болосуз

Ошондой эле өткөргүчтөрдү жок дегенде бир метр аралыкта кармаңыз, жабуу сигналды начарлатышы мүмкүн

NRF24 китепканасындагы кээ бир пинг мисалы менен байланышты текшериңиз (GitHubдагы шилтеме)

Коддо ошол максат үчүн уникалдуу идентификациялык номерди коюу керек:

int targID = 3401; // Бул максаттуу ID

int sendID = 2401; // Бул жооп ID

Ошондой эле 3 DEFINE функциялары бар:

#аныктоо DEBUG

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

#define чайкоо // ЭСКИ ПИЕЗОНУН ОРДУНА КОЛДОНУЛСА

Мүчүлүштүктөрдү жоюу:

Тест учурунда бул аныкталган жакшы. Бирок сиз аларды жеткиликтүү кылганда, аны иштетпеңиз.

БАТАРЕЯ:

Эгер сиз батареяны текшергичтин болушун каалабасаңыз, анда бул аныктаманы алып салышыңыз керек.

Чайкоо:

Эгерде сизде менин эски версиям болсо, анда сизде пьезо сенсорлору бар, андан кийин алар үчүн туура кодду алуу үчүн муну алып салыңыз.

ATMEGA328 чипи

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

Кодекс

Мен кодду Arduino IDE ордуна PlatformIO менен жаздым. Бул программалоо үчүн жакшы программа. Ошентип, код бир аз башкача. Мен анын ордуна бул программаны колдонууну сунуштайм.

Максаттуу жана өткөргүч кутуча

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

2 -кадам: Оюн контроллери

Оюн контроллери
Оюн контроллери
Оюн көзөмөлдөөчүсү
Оюн көзөмөлдөөчүсү
Оюн көзөмөлдөөчүсү
Оюн көзөмөлдөөчүсү
Оюн көзөмөлдөөчүсү
Оюн көзөмөлдөөчүсү

Кийинки нерсе, сенсорлордун контроллерин жасашыбыз керек. Бул сенсорлор менен байланышуу үчүн NRF24L01 модулун колдонгон Arduino. Башка эч нерсе. Arduino андан кийин иштөө үчүн малина пи USB менен туташтырылган.

Бул кандайча иштейт. Бул эмне кылыш керек экенин билүү үчүн сериялык колдонот. Pi сериялык буйруктарды жөнөтөт. Биринчиден, орнотуу учурунда, сиз канча максат кошконуңузду жана идентификациялык номерлерди жөнөтөт. Андан кийин ал тесттик функцияны аткарат жана эгер алар бири -бири менен байланышса, малина пи -ге кабарлайт.

Сиз оюнду ойногондо, ал питтен кайсы оюндун түрүн жана канча раунд/хитти колдонууну жөнөтөт. Дал ушул.

NRF24L01 модулдарын малина пиинде колдонсо болот, бирок мен үчүн Arduino - бул күнөөнүн эң жакшы варианты, мен аларды малинада эч качан колдонбойм, ошондуктан алардын узак мөөнөттүү иштешин билбейм

Бергичтерге туура туруктуу кубат берүү үчүн 5 в колдонгон күч модулу бар. Сиз аларды Arduino менен колдоно аласыз (Сүрөттү караңыз) аты Socket Adapter Module Board

Сиз ойноп жатканда, максаттар туш келди бирден активдештирилет. Бири урганда, экинчиси жандандырылат.

Тест учурунда сиз #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 - бул эң сонун модуль, сиз пийди күйгүзүп, өчүрүп же өчүрө аласыз. Ошондой эле RTCRaspi убакытты жана күндү пи боюнча сактоо үчүн. Ошондой эле системага кээ бир жаңыртууларды киргизишим керек болгондо, жөн эле тармак кабелин плагинге салууга мүмкүндүк берди. Сиз аларды Lowpowerlabтан таба аласыз

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

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

ЭСКЕРТҮҮ: блютузга орнотулган малина пи менен термикалык принтерди колдоно турган болсоңуз, биринчиден, аны өчүрүп салышыңыз керек

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 &

Сураныч, python сценарийиңизди туура жерге алмаштырыңыз жана аягында & белгисин унутпаңыз

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

sudo apt-get 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 (screen_width * 0.1, screen_height * 0.9, 10000);

жана:

my_image = Image. Text (текст, 1, 1, 1); message_sprite. SetImage (my_image);

Эми биз жүктөө билдирүүлөрүн алып салабыз:

sudo nano /boot/cmdline.txt

"console = tty1" дегенди "console = tty3" менен алмаштырыңыз

жана саптын аягына кошуу:

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

Жана pi splashти өзүңүзгө алмаштырыңыз:

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

Эми сизде оюнуңуздун жеке жүктөөчү экраны бар. Сиздин пи компьютериңиз азыр оюнду башкарууга даяр. Ошентип, кийинки кадамга өтүңүз!

4 -кадам: Оюнду орнотуу

Бул учурда сиз азыр оюнду түздүңүз.

Биринчиден, веб -системаны орнотуу керек. Маалымат базасын mysql серверине жүктөө. Файл камтылган папкада жана database.sql деп аталат

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

Веб системасы көп тилге негизделген жана англис тилинде жазылган. Швед тилинде котормо бар. Көбүрөөк тил үчүн Poedit аттуу программалык камсыздоо керек.

Веб системасына көбүрөөк тил кошуу үчүн i18n_setup.phpди түзөтүп, массивге кошуу керек:

in_array кайтаруу ($ localale, ['en_US', 'sv_SE']); (23 -сап)

Ошондой эле демейки тилди өзгөртүү үчүн 27 -сапта өзгөртүү керек: $ lang = 'en_US'; en_US тилиңизди өзгөртүңүз.

тил файлдары/LANGCODE/LC_MESSAGES/тилдерине жайгаштырылып, main.mo аталышы керек (Лангкодду тилиңизге өзгөртүү)

selectplayers.php файлындагы клавиатураны өзгөртүү үчүн сиз тилди өзгөртөсүз: "en", // en for sv for sv layout: 'qwerty', // qwerty for english swedish-qwerty for swedish

Сиз аларды 218 жана 219 линиясынан таба аласыз

Жеткиликтүү тилдер папкада: активдер/js/клавиатура/тилдер жана макеттер активдер/js/клавиатура/макеттерде жана 118 жана 119 -сапка туура файлдарды кошуу (азыр ошол жерден тапканыңызды алмаштырыңыз)

Максат кошуу

Максаттарды кошуу үчүн localhost/ admin/ ге кирип, бута кошуу дегенди басыңыз.

Сиз максатка жана уникалдуу максаттуу IDге ат кошуп, ID жөнөтүшүңүз керек, ошончо максатыңыз бар.

Оюндарды кошуу

Ошондой эле кээ бир оюндарды кошуу керек. Localhost/ admin/ ге барып, оюнду кошууну чыкылдатыңыз

Сиз оюндун атын, сыпаттамасын, мин жана максималдуу оюнчуларга оюндун кайсы түрүн кошушуңуз керек, ошондой эле оюн 1ден 5ке чейин канчалык кыйын экенин жана оюн кандай экенин, андыктан rapidfire оюну үчүн сиз канча хит кошосуз (мисал 30) тез ойнотуу үчүн канча раунд (мисалы 8) жана канча убакыт ойной тургандыктары үчүн (мисалы, бир мүнөткө 60)

Оюнду баштаңыз

Оюнду иштеткенде, ал максаттуу тестирлөөнү аткарат. Ошентип, негизги системаны баштоодон мурун максаттар болушу керек. Эгерде баары тесттен өтсө, сиз системаны колдоно аласыз, бирок өтпөсө сиз колдоно албайсыз. Алар жооп алганга чейин байланышууга аракет кылат.

Жакшы ийгилик

Ооба, бул жөнүндө, кодду жаңыртуу жөнүндө колдоо жана маалымат үчүн, бул оюн үчүн менин Facebook баракчамды ээрчиңиз, андыктан мен сизге тез жооп бере алам. Сиз шилтемелерди бул жерден таба аласыз.

Сунушталууда: