Руководство для начинающих по использованию Raspberry Pi с макетной платой для создания игры Simon

Макетная плата позволяет создавать схемы, не прибегая к пайке. Это отличный инструмент для экспериментов с электроникой, но он может немного пугать. Создание проекта может помочь вам сохранить мотивацию во время обучения.

Есть много простых игр, которые помогут вам создавать отличные проекты для начинающих, использующих Raspberry Pi. Одна из простых игр, с которой вы можете начать, - это Simon. Игра Саймона игра на запоминание Серия огней мигает в случайном порядке, и игрок должен запомнить последовательность. По мере продвижения игрока длина последовательности увеличивается.

Руководство для начинающих по использованию Raspberry Pi с макетом для создания игры Simon — учебные пособия по Raspberry Pi

Необходимые компоненты

Для начала вам понадобятся следующие вещи:

  • Устройство Raspberry Pi.
  • карта microSD Flash была сделана для операционной системы Распбиан О.С. На ней.
  • 4 светодиода разных цветов.
  • 4 резистора (от 220 Ом до 1 кОм).
  • 4 кнопки.
  • 1 х Экспериментальная доска.
  • Подключите кабели, чтобы все соединить.

Вы можете использовать любую модель Raspberry Pi для этого проекта, но модели Pi Zero не легко подключаются к макетным платам без некоторой пайки. Какую бы модель вы ни использовали, вам также понадобятся блок питания, монитор, клавиатура и мышь.

Если вы раньше не настраивали Raspberry Pi, вы можете узнать, как настроить все для этого руководства, на Руководство для начинающих по Raspberry Pi.

В этом руководстве вы напишете код Python, вы можете использовать любой текстовый редактор для его написания, но вы можете найти более простой редактор кода. Многие из них уже установлены в ОС Raspberry Pi, и Thonny разработан, чтобы быть удобным для новичков. Что бы вы ни использовали, вам нужно будет сохранить и запустить код, чтобы следовать этому руководству.

Начало работы с макетной платой

Raspberry Pi имеет два ряда контактов ввода / вывода общего назначения (GPIO). Эти контакты позволяют подключать к Raspberry Pi различные внешние компоненты. Некоторые контакты отправляют информацию, другие обеспечивают питание, а некоторые заземляют ваши электронные устройства.

Руководство для начинающих по использованию Raspberry Pi с макетом для создания игры Simon — учебные пособия по Raspberry Pi

Начнем с добавления светодиода на нашу макетную плату.

Начните с подключения вывода GPIO к вашей плате. Неважно, какой вывод, если это вывод GPIO, а не вывод питания или заземления. Выше представлена ​​схема контактов GPIO, которая поможет вам решить, какой контакт использовать. В этом руководстве используется контакт Pin 18, также называемый GPIO 24.

Штырь обеспечит некоторое питание макетной платы и позволит Raspberry Pi обмениваться данными с компонентами на плате. Затем подключите контакт 6 Pi к заземляющему проводу макетной платы. Это заземлит плату и позволит создавать электрические цепи.

Руководство для начинающих по использованию Raspberry Pi с макетом для создания игры Simon — учебные пособия по Raspberry Pi

Мощность от Raspberry слишком высока для прямого подключения светодиода. Использование резистора снижает уровень мощности и предотвращает перегорание светодиода. Подключите одну сторону резистора к той же линии, к которой был подключен вывод GPIO, а конец - к другой стороне платы. Затем поместите положительный полюс светодиода после электрического резистора. Отрицательную клемму светодиода можно подключить непосредственно к отрицательной стороне. Конечный результат должен выглядеть как на графике выше. Тщательно проверьте свои провода и включите Pi. Лампа должна загореться.

Теперь вы создали схему с вашим Raspberry Pi, которой вы можете управлять с помощью своего кода.

Используйте код Python для управления освещением

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

Сейчас питание идет на светодиод, но мы хотим контролировать, когда он включается и выключается. Следующий код Python позволит нам общаться с доской.

import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
red = 18
GPIO.setup(red, GPIO.OUT)
GPIO.output(red, GPIO.LOW)

Первые несколько строк определяют вещи. Библиотека Raspberry Pi GPIO импортирована. где это позволяет нам как GPIO Обращайтесь к переменной RPi.GPIO как к GPIO, чтобы немного сэкономить. Режим вывода GPIO настроен на СОВЕТ. Вам не обязательно использовать эту настройку, но может быть проще ссылаться на контакты по их порядку в строках GPIO.

Наконец, мы устанавливаем предупреждения на false. Это остановит ненужные предупреждения.

Последние три строки управляют светодиодом. Красный светодиод подключен к контакту 18 GPIO. Вместо того, чтобы запоминать это, он сохранит переменную. red Место. После этого сообщается Настройка GPIO Наше программное обеспечение отправляет информацию на красный штифт. Наконец, мы устанавливаем GPIO.output на красном контакте на низкокачественными. Когда вы запустите эту программу, свет погаснет. Чтобы снова включить его, переключите GPIO.НИЗКИЙ мне GPIO ВЫСОКИЙ , и снова запустите программу.

Сохраните код и нажмите трудоустройство Чтобы увидеть его в действии. Если в редакторе кода нет кнопки запуска, сохраните ее с любым именем (myfilename) и запустите команду python имя_файла.py в окне Терминала. Сначала вам нужно будет перейти в тот же каталог, что и новый файл Python.

Добавьте больше светодиодных фонарей

Для создания игры Саймона нам понадобится четыре светодиода разного цвета. Те же шаги, которые вы использовали для настройки красного светодиода, можно использовать для настройки остальных трех. Ваша проводка должна выглядеть как на схеме ниже:

Руководство для начинающих по использованию Raspberry Pi с макетом для создания игры Simon — учебные пособия по Raspberry Pi

Ваш код должен выглядеть так:

import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
red = 18
yellow = 22
green = 24
blue = 26
GPIO.setup(red, GPIO.OUT)
GPIO.setup(yellow, GPIO.OUT)
GPIO.setup(green, GPIO.OUT)
GPIO.setup(blue, GPIO.OUT)
GPIO.output(red, GPIO.HIGH)
GPIO.output(yellow, GPIO.HIGH)
GPIO.output(green, GPIO.HIGH)
GPIO.output(blue, GPIO.HIGH)

После проверки светодиодов установите GPIO.выход على GPIO.НИЗКИЙ Чтобы снова включить каждый светодиод.

Хотя цвет проводов, которые вы используете, не имеет значения, постарайтесь использовать разумные цвета, чтобы облегчить чтение содержимого доски. Например, для заземления часто используются черные провода. В этой схеме вы можете согласовать цвет провода с цветом светодиода.

Управление подсветкой с помощью кнопок

Начните с добавления кнопки на вашу панель. Кнопка должна быть подключена как к заземляющему разъему, так и к контакту GPIO. Электрическая схема должна выглядеть так:

Руководство для начинающих по использованию Raspberry Pi с макетом для создания игры Simon — учебные пособия по Raspberry Pi

Чтобы заставить кнопку управлять светодиодом, нам нужно добавить код в наш код. Настройка кнопки аналогична настройке светодиода, за исключением того, что вывод GPIO настроен как вход, а не выход. Этот код также настраивает внутренний подтягивающий резистор на Pi, который необходим для правильной работы кнопки.

GPIO.setup(32, GPIO.IN, pull_up_down=GPIO.PUD_UP)

Теперь нам нужен код, который проверяет, была ли нажата кнопка.

game = True
while game:
 redButtonState = GPIO.input(32)
 if redButtonState == 0:
 GPIO.output(red, GPIO.HIGH)
 time.sleep(1)
 GPIO.output(red, GPIO.LOW)

Мы хотим, чтобы наша программа продолжала проверять, нажата ли кнопка, поэтому необходимо использовать команду повтора. в то время как. Поскольку итерация никогда не является ложной, код продолжает работать и проверять кнопку, пока мы не завершим программу вручную, нажав кнопку остановки или используя сочетание клавиш. Ctrl + C.

Затем, чтобы упростить указание ввода, который отправляет нам вывод GPIO, мы сохраняем эту информацию в переменной красныйButtonState. Если значение нашей кнопки изменится на 0, мы знаем, что кнопка была нажата.

Если кнопка нажата, загорится красный светодиод. Затем, через секунду, светодиод погаснет. Чтобы добавить эту продолжительность, мы используем функцию время сна (1). Чтобы это работало, вам нужно будет импортировать библиотеку времени поверх вашего кода.

После включения одной кнопки вы можете добавить еще три кнопки, по одной для каждого светодиода. Ваш код должен выглядеть так:

import random 
import time
import RPi.GPIO as GPIO
GPIO.setmode (GPIO.BOARD)
GPIO.setwarnings(False)
red = 18
yellow = 22
green = 24
blue = 26
GPIO.setup(red, GPIO.OUT)
GPIO.setup(yellow, GPIO.OUT)
GPIO.setup(green, GPIO.OUT)
GPIO.setup(blue, GPIO.OUT)
GPIO.setup(32, GPIO.IN, pull_up_down=GPIO.PUD_UP) 
GPIO.setup(36, GPIO.IN, pull_up_down=GPIO.PUD_UP) 
GPIO.setup(38, GPIO.IN, pull_up_down=GPIO.PUD_UP) 
GPIO.setup(40, GPIO.IN, pull_up_down=GPIO.PUD_UP) 
game = True 
while game:
 redButtonState = GPIO.input(32)
 if redButtonState == 0:
 GPIO.output(red, GPIO.HIGH)
 time.sleep(1)
 GPIO.output(red, GPIO.LOW)
 
 yellowButtonState = GPIO.input(36)
 if yellowButtonState == 0: 
 GPIO.output(yellow, GPIO.HIGH)
 time.sleep(1) 
 GPIO.output(yellow, GPIO.LOW)
 greenButtonState = GPIO.input(38)
 if greenButtonState == 0:
 GPIO.output(green, GPIO.HIGH)
 time.sleep(1)
 GPIO.output(green, GPIO.LOW)
 blueButtonState = GPIO.input(40)
 if blueButtonState == 0:
 GPIO.output(blue, GPIO.HIGH)
 time.sleep(1)
 GPIO.output(blue, GPIO.LOW)

И макет должен выглядеть как на этой иллюстрации:

Руководство для начинающих по использованию Raspberry Pi с макетом для создания игры Simon — учебные пособия по Raspberry Pi

Все электронные устройства готовы. Если у вас возникли проблемы, проверьте свой код на наличие ошибок. Помните, что вы можете скачать полный код из Pastebin Если вы застряли!

Создать игру

В этом проекте уже описаны все основы, которые вам нужно знать, чтобы начать работу с макетной платой. Но превращение этих навыков в игру действительно продемонстрирует, на что вы способны!

В игре Саймона игрок видит серию мигающих огней и должен запомнить узор. Это легко начинается с одного света. Каждый уровень добавляет случайный свет к узору, чтобы сделать игру более сложной.

Создать стиль

Этот шаг довольно прост. Один массив будет нести наш световой узор (описания). Второй массив будет хранить контакты GPIO наших светодиодов (огней). На каждой итерации игры в конец набора паттернов будет добавляться новый случайный источник света. Мы будем использовать функцию. random.randent () Для выбора числа от 0 до 3, которое соответствует 4 светодиодам.

pattern = []
lights = [red, yellow, green, blue]
while game:
 pattern.append(random.randint(0,3))

Затем нам нужно включить свет, чтобы показать узор.

while game:
 pattern.append(random.randint(0,3))
 
 for x in pattern:
 GPIO.output(lights[x], GPIO.HIGH)
 time.sleep(1)
 GPIO.output(lights[x], GPIO.LOW)
 time.sleep(0.5)

Важно остановиться между двумя лампами. Это позволяет легко увидеть, используется ли один и тот же свет последовательно в шаблоне.

Получить информацию от игрока

Затем игра должна дождаться, пока игрок угадывает порядок огней. Программное обеспечение должно проверять каждый свет в шаблоне и ждать, пока игрок не нажмет кнопку. Для этого требуются вложенные итераторы:

for x in pattern:
 
 waitingForInput = True
 
 while waitingForInput:
 redButtonState = GPIO.input(32)
 yellowButtonState = GPIO.input(36)
 greenButtonState = GPIO.input(38)
 blueButtonState = GPIO.input(40)
 
 if redButtonState == 0:
 GPIO.output(red, GPIO.HIGH)
 waitingForInput = False
 time.sleep(1)
 GPIO.output(red, GPIO.LOW)
 
 if yellowButtonState == 0:
 GPIO.output(yellow, GPIO.HIGH)
 waitingForInput = False
 time.sleep(1)
 GPIO.output(yellow, GPIO.LOW)
 
 if greenButtonState == 0:
 GPIO.output(green, GPIO.HIGH)
 waitingForInput = False
 time.sleep(1)
 GPIO.output(green, GPIO.LOW)
 
 if blueButtonState == 0:
 GPIO.output(blue, GPIO.HIGH)
 waitingForInput = False
 time.sleep(1)
 GPIO.output(blue, GPIO.LOW)

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

Проверить ввод игрока

Отсюда очень легко проверить, правильно ли введен игрок. Каждый раз, когда нажимается кнопка, игра может проверить, правильная ли это кнопка. Для этого добавьте фразу if Другое для каждой кнопки:

if redButtonState == 0:
 GPIO.output(red, GPIO.HIGH)
 waitingForInput = False
 if x != 0:
 game = False
 time.sleep(1)
 GPIO.output(red, GPIO.LOW)

Переменная x повторения для У него следующий световой номер. Красный светодиод находится в первой позиции или под номером 0. Если игрок нажимает кнопку красного светодиода, когда у нас есть 0 в нашем шаблоне, он прав! В противном случае он проигрывает. приведет к конфигурации переменной игра على ложный Чтобы остановить игровой цикл и завершить программу.

наш конец! Я создал игру с нуля!

Создание игры добавляет в этот проект больше кода, чем просто добавление светодиодов и кнопок. Работа над финальным проектом, который вы можете показать своим друзьям и семье, поможет вам сохранить мотивацию.

Эта игра довольно проста. Испытайте себя, чтобы улучшить базовый дизайн. Может быть, лампочки могут мигать, если проигрыватель проиграет. Вы можете испытать себя, чтобы добавить звуки в игру. Ваше воображение - единственный предел!

Что ж, ваше воображение и оборудование, которое вы должны использовать. Теперь вы можете просмотреть Лучшие проекты по созданию смарт-телевизора с Raspberry Pi

Перейти к верхней кнопке