Оглавление:

Игра на быструю реакцию: дистанционная версия: 5 шагов (с изображениями)
Игра на быструю реакцию: дистанционная версия: 5 шагов (с изображениями)

Видео: Игра на быструю реакцию: дистанционная версия: 5 шагов (с изображениями)

Видео: Игра на быструю реакцию: дистанционная версия: 5 шагов (с изображениями)
Видео: К чему приводят компьютерные игры … 2024, Ноябрь
Anonim
Игра быстрой реакции: дистанционная версия
Игра быстрой реакции: дистанционная версия

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

Как и все проекты Arduino, эта игра потребует множества электрических компонентов в цепи Arduino. Основные компоненты, кроме проводки и самой Arduino, включают макетную плату, серводвигатель, ЖК-дисплей, светодиод RGB и датчик расстояния.

При использовании https://abra-electronics.com цена без учета проводов и Arduino составляет 32,12 канадских доллара.

Шаг 1: Шаг 1: Датчик расстояния

Шаг 1: датчик расстояния
Шаг 1: датчик расстояния

Первый шаг - установить ультразвуковой датчик расстояния на макетной плате и подключить его к Arduino. Точное положение датчика на самом деле не имеет значения, но в идеале это близко к краю, чтобы было место для других компонентов, как показано на рисунке выше. На датчике четыре контакта; GND, VCC, TRIG и ECHO. GND и VCC должны быть подключены к шинам заземления и питания соответственно, а два других контакта должны быть подключены к двум контактам на Arduino. Я использовал два вывода: 12 для ECHO и 11 для TRIG. Используйте два других провода для питания шины питания и заземления шины заземления, подключив шину питания к контакту 5 В, а шину заземления - к контакту GND.

Шаг 2: Шаг 2: серводвигатель

Шаг 2: серводвигатель
Шаг 2: серводвигатель

Следующим шагом является настройка серводвигателя. В этом проекте серводвигатель работает как таймер. Он будет начинаться с 1 градуса и за период времени, в течение которого пользователь должен расставлять руки, будет вращаться на 180 градусов. Я использовал 2 секунды, когда пользователь узнает, как далеко им нужно расставить руки, поэтому сервопривод поворачивается на 179 градусов за 2 секунды, вращаясь с короткими интервалами. Серводвигатель имеет три провода; обычно желтый, красный и коричневый. Красный идет в шину питания, которая уже подключена к 5 В, а коричневая входит в шину заземления, уже подключенную к GND. Последний провод подключается к контакту Arduino. Я выбрал для этого контакт №9. Затем вам понадобится конденсатор, соединяющий ту же шину, к которой подключены провода питания и заземления серводвигателя, как показано на рисунке выше.

Шаг 3: Шаг 3: светодиод RGB

Шаг 3: светодиод RGB
Шаг 3: светодиод RGB

Функция светодиода в этом случае - действовать как шкала для оценки. Когда счет игрока составляет около 0, индикатор будет белым и станет более красным, если счет игрока уменьшается, и зеленым, если счет игрока увеличивается. У этого светодиода четыре ножки; ветвь красного света, ветвь синего света, ветвь зеленого света и общий катод, общий для трех других ветвей. Общий катод, самая длинная ветвь, подключен к шине питания, поэтому на него подается 5 вольт. Присоедините резисторы 330 Ом к трем другим цветным ножкам, а другие концы этих резисторов подключите к цифровым выводам PWM на Arduino. Я использовал цифровые контакты 3, 5 и 6 для красной, зеленой и синей ножек соответственно.

Шаг 4: Шаг 4: ЖК-дисплей

Шаг 4: ЖК-дисплей
Шаг 4: ЖК-дисплей

Последний компонент - ЖК-дисплей, обозначающий жидкокристаллический дисплей. Цель этого - сообщить игроку его текущий счет, а также расстояние, на котором ему нужно убрать руки от датчика. Здесь четыре контакта; GND, VCC, SDA и SCL. GND и VCC будут подключены к шинам заземления и питания макетной платы соответственно. Вывод SDA должен быть подключен к аналоговому выводу A4, а вывод SCL должен быть подключен к аналоговому выводу A5. В отличие от других компонентов, вы должны подключить контакты SDA и SCL к A4 и A5.

Шаг 5: Шаг 5: Код

Теперь, когда мы подключили все компоненты, мы можем написать код. Первая часть кода - импортировать необходимые библиотеки и объявить наши переменные и то, к каким контактам подключены компоненты. Нам нужно импортировать библиотеки Wire, LiquidCrystal_I2C и Servo для этого кода.

#включают

#включают

#включают

Серво myServo;

int const trigPin = 11;

int const echoPin = 12;

int redPin = 3;

int greenPin = 5;

int bluePin = 6;

int score = 0;

int tim = 500;

int текущий = случайный (8, 16); // случайное значение, при котором пользователь должен убрать руку от датчика

LiquidCrystal_I2C lcd (0x27, 16, 2); // Настройка ЖК-дисплея

Теперь нам нужно использовать void setup (), чтобы объявить наши типы контактов и настроить другие необходимые компоненты.

недействительная настройка () {myServo.attach (9); Serial.begin (9600); pinMode (trigPin, ВЫХОД); pinMode (echoPin, ВХОД); pinMode pinMode (redPin, ВЫХОД); pinMode (greenPin, ВЫХОД); pinMode (bluePin, ВЫХОД); lcd.init (); lcd.backlight (); lcd.begin (16, 2); lcd.clear (); // Настройка ЖК-дисплея}

Теперь нам нужно настроить код светодиода RGB с помощью функции и ШИМ:

void setColor (int red, int green, int blue) {

red = 255 - красный;

green = 255 - зеленый;

blue = 255 - синий;

analogWrite (redPin, красный);

analogWrite (greenPin, зеленый);

analogWrite (bluePin, синий);

}

Теперь нам нужно добавить цикл void (). Здесь мы собираемся генерировать случайные целые числа и использовать серию операторов if для управления игрой для игрока. Текущая переменная, указанная выше, предназначена для текущего расстояния, на которое игрок должен дистанцироваться от датчика.

Поскольку код в void loop () очень длинный, я собираюсь вставить ссылку на документ с этим кодом:

docs.google.com/document/d/1DufS0wuX0N6gpv…

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

long microsecondsToInches (длинные микросекунды) {

вернуть микросекунды / 74/2;

}

Теперь мы подключаем проводную Arduino к компьютеру с кодом, настраиваем порты и запускаем! В этой игре есть два режима. Либо вы можете использовать только ЖК-дисплей, серводвигатель, датчик и светодиод RGB, и вы знаете только расстояние, которое вам нужно от датчика, что является более сложным режимом. Более простой режим предполагает использование монитора последовательного порта в меню «Инструменты»> «Монитор последовательного порта», который каждую секунду будет обновлять вам информацию о том, как далеко вы находитесь от датчика, чтобы вы могли внести необходимые корректировки.

Спасибо за прочтение!

Рекомендуемые: