Игра ' Утиная охота' с использованием Arduino и Python

Это игра-стрелялка, основанная на Pygame, с использованием Arduino и датчика акселерометра.
В этом проекте на экране прицел перемещается по координатам x и y акселерометра, а для стрельбы по цели используется кнопка.
Прицел пистолета управляется наклоном акселерометра.
Кнопка (S1) работает как курок и одновременно отправляет сигнал на ПК, что выстрел был сделан. Прицел пистолета наводится на птицу, и птица погибает, если позиции прицела и птицы совпадают.
Две или более птицы могут быть убиты одновременно. Точность прицеливания снижается, если вы непрерывно стреляете и перемещаете плату Arduino. Скриншот экрана игры "Утиная охота" показан на рис. 1.



Эта игра использует основную концепцию взаимодействия Arduino и Python с использованием пакета pyserial. Версия Python, используемая в этом проекте, 3.4.4. Подробности о пакетах Python приведены в разделе программного обеспечения.

Схема и работа

Принципиальная схема игры Duck Hunt (Утиная охота) с использованием Arduino Uno и Python приведена на рис. 2.





Контакты x и y акселерометра подключены к аналоговым контактам A0 и A1 Arduino. Акселерометр может иметь разные значения контактов x и y в зависимости от разных производителей.
Аналоговые значения x и y отображаются на последовательном мониторе Arduino IDE.
Наклоните ваш акселерометр и запишите минимальное и максимальное значения для x и y.
Поместите эти значения в код Arduino. Это будет отображаться в программе в интервале от 0 до 20 .
Затем отправьте последовательные данные в Python и нажмите S1, чтобы подключить их к контакту 2 из Board1,который используется для стрельбы из пистолета. Акселерометр питается от 5-вольтовой платы Arduino.
Акселерометр, использованный для этого проекта, показан на рис. 3.



Программное обеспечение

Пакеты Python. Загрузите пакеты перед компиляцией программы Python (duck_hunt.py).
Их можно скачать, набрав в Google ‘unofficial windows binaries Python extension packages’ («неофициальные двоичные пакеты расширения Python для Windows»). Скачать версию 3.4.4 Python.
Пакеты Python, используемые в программе, это pyserial, pygame, random, time и math, из которых вам нужно будет только загрузить pyserial и pygame; остальные предварительно установлены.
Игра спроектирована на основе библиотеки Pygame, которая показывает изображения птицы и прицел пистолета со всем графическим интерфейсом.
Связь между кодом Python и Arduino осуществляется с помощью последовательной связи; поэтому вам нужно добавить номер вашего COM-порта после запуска программы. Нажмите y, чтобы начать игру. Экран программы появится вместе с прицелом.
Утки появляются в случайных местах со случайными направлениями. Направления изображены с использованием чисел, где 1 представляет север,2 представляет северо-восток и т.д. по часовой стрелке до 8, что представляет северо-запад.
Через каждые 200 мс от Arduino отправляются 4-байтовые данные, которые включают начальный байт (*), с последующим расположением координат x и y в масштабе от 0 до 20, масштабированные от 0 до 20 заканчивающийся 0 или 1, где 1 показывает, что пистолет был инициализирован с использованием S1.
Байт 1 отправляется непрерывно, чтобы данные не терялись.После того, как код Python обнаруживает стрельбу из пистолета, он отправляет данные в Arduino, и байт изменяется на 0. Кадры птиц берутся из файла .GIF, и они загружаются одна за другой на экран, чтобы показать движение птиц ,
В конце концов,   общий счет отображается на экране вместе с затраченным временем и точностью стрельбы.
  Можно убить двух или более птиц-монстров за один выстрел, и за это начисляются дополнительные очки.
Код Arduino. Программное обеспечение (duck_hunt.ino) написано на языке программирования Arduino.
  Arduino Uno Board1 программируется с использованием программного обеспечения Arduino IDE. Подключите плату Arduino к ПК и выберите правильный COM-порт в Arduino IDE.
Скомпилируйте программу (скетч). Выберите правильную плату из меню Tools>Board (Инструменты) > Меню платы в IDE Arduino и загрузите скетч.

Шаги для тестирования

Шаг 1. Загрузите Python 3.4.4 с веб-сайта. Выберите 64- или 32-разрядный формат вашего ПК с Windows. Установите его.

Шаг 2. Перейдите в командную строку Пуск > Выполнить. Введите cmd и измените каталог вашей папки (где был установлен Python). В моем случае это был диск C, поэтому я набрал «cd C: \ Python34».

Шаг 3. Чтобы избежать ошибок, обновите модуль pip типа python -m pip install pip upgrade. Это позволит загрузить последнюю версию pip.

Шаг 4. Загрузите пакеты Python с www.lfd.uci.edu/~gohlke/pythonlibs/. Найдите py-serial и pygame (требуются эти два пакета ) из списка и загрузите версию cp34 или последнюю версию в pyserial.
Кроме того, загрузите amd64, если у вас 64-битная версия Windows.

Шаг 5. Сохраните .whl файлы в папку и установите с помощью pip. Введите «C:\Python34\Scripts\pip». Установите [[PATH]]\[[FILENAME]].Whl.и импортируйте пакет в оболочку Python. Это должно работать должным образом.

Шаг 6. После установки Python и его библиотек протестируйте код Python.
Это просто - код, данный с набором изображений, должен храниться в той же папке.
  Откройте код; найдите переменную с именем PORT. Измените этот номер COM-порта в соответствии с вашим ПК, после того как вы подключили плату Arduino.

[ Скачать файлы (1.58 Mb) ]
 
Просмотров: 42 | Добавил: viktorovich57 | 15.06.2019
Теги: python, arduino uno
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
авторизация
Логин:
Пароль:
Комментарии
Tiny зарядное устройство NiMH
01.12.2019 - exersizze:
Не знаю, может автор набивает руку в переводе и написании материала. А там посмо...
Tiny зарядное устройство NiMH
01.12.2019 - forter:
Поддерживаю коллегу artcore!
В сети полно сайтов с радиолюбительской тема...
Tiny зарядное устройство NiMH
28.11.2019 - artcore:
Ребятки! Жизнь этого сайта начиналась с самоделок на камнях ATMEL. Сейчас сущест...
Семисегментный индикатор. Организация динамической индикации
27.11.2019 - toddy_123:
Привет! я вот написал вот такой вот код, который по плану будет управлять синтез...
Беспроводная система оповещения с датчиком движения
19.11.2019 - exersizze:
Да, устройство вышло очень даже годным. Основные параметры из характеристик на п...
Счетчик оборотов
18.11.2019 - exersizze:
Схема построена на жесткой логике и герконе. Только так, только хардкор!
Счетчик оборотов
18.11.2019 - artcore:
OMG... ребята... Геркон??.... куда катится мир.......
Беспроводная система оповещения с датчиком движения
18.11.2019 - blackvall:
доброго времени суток ! тема заинтересовала!!!
подскажите как ваш проэкт ...
Регулятор температуры и влажности
13.11.2019 - exersizze:
iurgher, могу лишь посоветовать взять стандартный дисплей на контроллере ...