Игра «Утиная охота» с использованием Arduino и Python | DIY-проект
Игра «Утиная охота» с использованием Arduino и Python | DIY-проект
Duck Hunt Game — это игра-стрелялка, основанная на pygame и использующая Arduino и датчик акселерометра. В этом проекте на экране делается указатель орудия, который перемещается по координатам x и y акселерометра, а для стрельбы по цели используется switch.
Указатель пистолета наводится путем наклона оборудования (акселерометра). Кнопка switch (S1) нажимается (нажимается как спусковой крючок) для выстрела и отправляет сигнал на ПК о том, что выстрел был произведен. Указатель пистолета перемещается в сторону птицы, и птица убивается if позиции совпадают.
Одновременно можно подстрелить двух и более птиц. Accuracy прицела уменьшает if, вы постоянно стреляете и перемещаете плату Arduino. Скриншот игры «Охота на уток» представлен на рис. 1.
Рис. 1: Скриншот игры «Охота на уток»
В этой игре используется базовая концепция взаимодействия между Arduino и Python с использованием пакета pyserial. Версия Python, используемая в этом проекте, — 3.4.4. Подробности о пакетах Python приведены в разделе программного обеспечения.
Цепь и работа
Принципиальная схема игры «Охота на уток» с использованием Arduino Uno и Python показана на рис. 2. Контакты x и y акселерометра подключены к аналоговым контактам A0 и A1 Arduino. Акселерометр может иметь разные значения в зависимости от производителя. Аналоговые значения x и y отображаются на последовательном мониторе Arduino IDE.
Рис. 2: Принципиальная схема игры «Охота на уток» с использованием Arduino Uno
Наклоните свое оборудование и запишите минимальное и максимальное значения x и y. Поместите эти значения в код Arduino. В программе это будет отображено от 0 до 20. Затем отправьте последовательные данные в Python и нажмите S1, чтобы подключить их к контакту 2 платы Board1, который используется для стрельбы из пистолета. Акселерометр питается от контакта 5 В платы Arduino. Акселерометр, использованный в этом проекте, показан на рис. 3, а авторский прототип — на рис. 4.
Загрузите пакеты перед компиляцией программы Python (duck_hunt.py). Их можно загрузить, набрав в Google «неофициальные двоичные файлы расширений Python для Windows». Загрузите версию Python 3.4.4.
В программе используются пакеты Python: pyserial, pygame, random, time и math, из которых вам нужно будет только загрузить pyserial и pygame; остальные предустановлены.
Игра разработана на основе библиотеки pygame, которая отображает изображения птиц и пистолета со всем графическим интерфейсом. Связь между кодом Python и Arduino осуществляется с помощью последовательной связи; поэтому вам необходимо добавить номер своего COM-порта после запуска программы. Это потребует от вас подтверждения. Нажмите y, чтобы начать игру. На экране программы появится кружок.
Птицы и утки появляются в случайных местах и в случайном направлении. Направления обозначаются цифрами, где 1 представляет собой север, 2 – северо-восток и движется по часовой стрелке к 8 – северо-западу.
Каждые 200 мс от Arduino отправляются 4-байтовые данные, которые включают в себя стартовый байт (*), за которым следуют координаты x и y в масштабе от 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. Скомпилируйте программу (скетч). Выберите нужную плату в меню «Инструменты» → «Плата» в Arduino IDE и загрузите эскиз.
Шаги тестирования
Шаг 1
Загрузите Python 3.4.4 со своего веб-сайта. Выберите 64- или 32-разрядное программное обеспечение в зависимости от конфигурации вашего ПК с Windows. Установите его.
Шаг 2
Перейдите в командную строку «Пуск» → «Выполнить». Введите cmd и измените каталог папки (где был установлен Python). В моем case он находился на диске C, поэтому я набрал «cd C:\Python34».
Шаг 3
Чтобы избежать ошибок, обновите модуль pip типа python -m pip install pip –upgrade. Будет загружена последняя версия pip.
Шаг 4
Загрузите пакеты Python с сайта www.lfd.uci.edu/~gohlke/pythonlibs/. Найдите в списке pyserial и pygame (эти два пакета обязательны) и загрузите версию cp34 или последнюю версию в pyserial. Кроме того, загрузите amd64 if, если у вас 64-разрядная версия Windows, или else загрузите 32-разрядную версию.
Шаг 5
Сохраните файлы .whl в папке и установите их с помощью pip. Введите «C:\Python34\Scripts\pip». Установите [[ПУТЬ]]\[[ИМЯ ФАЙЛА]].whl. И импортируйте пакет в оболочку Python. Должно работать правильно.
Шаг 6
После установки Python и его библиотек протестируйте код Python. Все просто — код, заданный вместе с набором изображений, нужно хранить в одной папке. Откройте код; есть переменная ПОРТ. Измените номер COM-порта в соответствии с вашим компьютером после подключения платы Arduino.
Шаг 7
Подключите кабель USB и после загрузки кода в Arduino запустите код Python, нажав F5. Откроется окно GUI с четырьмя летающими птицами на экране и видом оружия, как показано на рис. 1.
Шаг 8
Направление пистолета можно изменить, наклонив оборудование, а стрелять пулями можно с помощью S1.
Шаг 9
Когда вы стреляете в while в движении, прицел будет неточным. После убийства четырех птиц лимит времени if (150 секунд) истечет, на экране отобразится статус вашей игры.
Все ссылки на книги и журналы, представлены на этом сайте, исключительно для ознакомления, авторские права на эти публикации принадлежат авторам книг и издательствам журналов!
Подробно тут! Жалоба