Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Создайте игру памяти для Arduino

Компоненты и расходные материалы

Arduino UNO
× 1
резисторы SparkFun 330 Ом
нам нужно всего 4 из них
× 1
резисторы SparkFun 10 кОм
нам нужно всего 4 из них
× 1
Светодиоды SparkFun в ассортименте
нам нужно 4 светодиода разных цветов
× 1
Мини-динамик SparkFun
Вы можете обойтись без этого, если вам не важен звук
× 1
SparkFun BreadBoard (полный размер)
× 1
Перемычки (общие)
× 1

Приложения и онлайн-сервисы

IDE Arduino

Об этом проекте

Вы помните игру «Симон»? Многим людям моего возраста (родившимся в 70-х) приходилось терять много времени, играя в нее. Игра была простой, в ней было 4 кнопки разных цветов, которые загорались последовательно, и вам приходилось повторять последовательность. Каждый раз, когда вы все делали правильно, игра снова выдавала последовательность с дополнительным цветом в конце.

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

Став «взрослым», я открыл для себя радости Arduino и с этим получил возможность возродить моего давно потерянного друга, тратящего время впустую.

Из этого туториала Вы узнаете, как создать похожую игру, используя Arduino Uno, несколько светодиодов и резисторов и относительно простую схему.

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

Самый простой способ запустить эту игру - это.

1) Подключите схему точно так, как показано на схеме. Цвет проводов не имеет значения, так что если у вас закончатся черные провода, ничего страшного. :)

2) Вставьте исходный код в ваш любимый редактор Arduino и загрузите его на доску

3) Играйте в игру

Игра начнется примерно через 3 секунды, все светодиоды будут медленно мигать 5 раз.

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

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

После 5 миганий загорится один светодиод. Не могу сказать, какой именно, это сюрприз :) Нажмите кнопку этого светодиода. Этот светодиод снова загорится, а затем снова загорится новый. Последовательно нажимайте правильные кнопки ... Вы видите, к чему я клоню ...

Затем, довольно скоро, вы увидите, что все они быстро мигают. Значит, вы проиграли. :D

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

У вас есть 2 секунды на нажатие каждой кнопки.

Вот так! Удачи!

Хотите усложнить задачу? Почему бы не изменить верхнюю строку кода на другое значение?

  #define PLAYER_WAIT_TIME 2000  

Или вы можете добавить еще один светодиод, если он у вас есть ... Для этого вам сначала нужно воспроизвести эту часть схемы:

Оранжевый провод здесь подойдет к любому неиспользуемому контакту на вашем Arduino (однако избегайте 0 и 1)

Затем измените следующие строки кода:

  byte noPins =4byte pins [] ={2, 13, 10, 8};  

если вы добавите один светодиод на контакт 6, код станет

  byte noPins =5byte pins [] ={2, 13, 10, 8, 6};  

Небольшой совет по написанию кода Arduino:

  void setup () {задержка (3000); Serial.begin (9600); Перезагрузить(); }  

Установите короткую задержку в качестве первого оператора вашей функции setup (). Очень легко заставить Arduino зайти в бесконечный цикл или каким-то образом заблокировать его. Если это произойдет, эта короткая задержка позволит вам сбросить настройки Arduino и загрузить пустой скетч, прежде чем он снова заблокируется. .

В конце концов я взял эту маленькую идею и сделал ее портативной ...

Если вы хотите увидеть действительно классную идею для подобной (но намного более продвинутой) игры. Проверьте это https://www.instructables.com/id/Lego-Mini-Memory-Game Питера Кента. Он сделал игру для мобильных устройств с интерфейсом к автомобилю Lego. Это действительно здорово!

Код

  • Код игры на память
Код игры с памятью Arduino
Это весь код игры. Просто скопируйте и вставьте его в свою любимую среду IDE и загрузите в Arduino.
 #define PLAYER_WAIT_TIME 2000 // Время между нажатиями кнопок - последовательность байтов 2 секунды [100]; // Хранение байта световой последовательности curLen =0; // Текущая длина байта последовательности inputCount =0; // Количество раз, когда игрок нажимал (правильную) кнопку за данный ход байт lastInput =0; // Последний ввод от playerbyte expRd =0; // Светодиод, который должен гореть от playerbool btnDwn =false; // Используется для проверки, нажата ли кнопка bool wait =false; // Ожидает ли программа нажатия пользователем кнопки resetFlag =false; // Используется для указания программе, что однажды проигрыватель потерял байт soundPin =5; // Выходной байт динамика noPins =4; // Количество кнопок / светодиодов (пока я работал над этим, я использовал только 2 светодиода) // Вы можете усложнить игру, добавив дополнительную комбинацию светодиодов / кнопок / резисторов. Byte pins [] ={2, 13, 10 , 8}; // Входные контакты кнопок и выходные контакты светодиодов - измените эти значения, если вы хотите подключить свои кнопки к другим контактам // Количество элементов должно соответствовать noPins ниже long inputTime =0; // Переменная таймера для задержки между пользовательскими вводамиvoid setup () {delay (3000); // Это дает мне время передохнуть после подключения arduino - может быть удален, если вы хотите Serial.begin (9600); // Запуск последовательного монитора. Это также можно удалить, если вы удалите все ссылки на Serial ниже Reset ();} ////// Устанавливает все контакты как INPUT или OUTPUT на основе значения 'dir' /// void setPinDirection (byte dir) {для (байт i =0; i  быстро | большое число -> медленно /// пустая вспышка (короткая частота) {setPinDirection (OUTPUT); /// Сейчас мы активируем светодиоды для (int i =0; i <5; i ++) {writeAllPins (HIGH); beep (50); задержка (частота); writeAllPins (НИЗКИЙ); задержка (частота); }} ////// Эта функция сбрасывает все игровые переменные до значений по умолчанию /// void Reset () {flash (500); curLen =0; inputCount =0; lastInput =0; expRd =0; btnDwn =ложь; ждать =ложь; resetFlag =false;} ////// Пользователь потерян /// void Lose () {flash (50); } ////// Arduino показывает пользователю, что нужно запомнить. Светодиоды по очереди для (int i =0; i  PLAYER_WAIT_TIME) {// Если игрок берет больше, чем разрешено, DoLoseProcess (); // Все потеряно :( return;} if (! BtnDwn) {// expRd =sequence [inputCount]; // Находим значение, которое мы ожидаем от плеера Serial.print ("Expected:"); // Вывод последовательного монитора - Следует удалить, если вы удалили Serial.begin выше Serial.println (expRd); // Выход последовательного монитора - Следует удалить, если вы удалили Serial.begin выше для (int i =0; i  

Схема

simonsays_siKds3Jmk2.fzz

Производственный процесс

  1. Создание монитора Ambilight с помощью Arduino
  2. Игра с гироскопом Arduino с MPU-6050
  3. Удовольствие от гироскопа с кольцом NeoPixel
  4. Игра Arduino Pong - OLED-дисплей
  5. Игровой контроллер Arduino
  6. Игра Arduino Touch Breakout
  7. Pixie:наручные часы NeoPixel на базе Arduino
  8. Игра Pixel Chaser
  9. Автоматизированная игра Дино с использованием arduino
  10. Мобильная камера удаленного наблюдения