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

Игра Pixel Chaser

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

Arduino Nano R3
× 1
Кольцо Adafruit NeoPixel:светодиод WS2812 5050 RGB
× 1
половинный размер макетной платы без пайки
× 1
Резистор 10 кОм
× 1
Кнопочный переключатель SparkFun, 12 мм
× 1
Перемычки (общие)
× 1

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

IDE Arduino

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

Раньше я был разработчиком игр, и один из святых Граалей в разработке мобильных игр - сделать лучшую игру «в одно касание».

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

Представляем PIXEL CHASER!

Это довольно простая сборка, так что давайте перейдем к ней!

Какие детали нам нужны?

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

  • Arduino Nano (или любой микроконтроллер с 2 доступными выводами ввода-вывода)
  • Кольцо или полоска RGB "NeoPixel"
  • Мгновенная кнопка
  • резистор 10 кОм
  • Макеты
  • Провода

Шаг 1

Поместите Nano на один конец макета так, чтобы разъем USB находился на краю.

Шаг 2

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

Шаг 3

Добавьте резистор 10 кОм между одной из сторон кнопки и шиной GND макета. Это будет НИЗКОЕ состояние кнопки по умолчанию. Мы используем резистор, чтобы гарантировать отсутствие короткого замыкания между VCC и GND при нажатии кнопки, так как это может повредить микроконтроллер и другие компоненты.

Шаг 4

Подключите перемычку с противоположной стороны кнопки к рейке VCC. При нажатии кнопка поднимается вверх.

Шаг 5

Подключите перемычку со стороны GND кнопки к D3 на Nano. Мы будем читать D3, чтобы определить состояние кнопки.

Шаг 6

Подключите полоску / кольцо RGB к макетной плате. Подключите провод VCC к шине питания VCC, провод GND к шине питания GND и провод DI (Data In) к D4 на Nano. Мы будем контролировать пиксели с помощью D4.

Шаг 7

Подключите перемычку от контакта 5V на Nano к шине питания VCC, затем подключите перемычку от контакта GND на Nano к шине питания GND.

Шаг 8

Загрузите код и играйте!

Надеюсь, вам понравился этот проект!

Вы можете найти больше интересных проектов на моем канале YouTube.

Следуй за мной:

http://twitter.com/unexpectedmaker

https://www.facebook.com/unexpectedmaker/

https://www.instagram.com/unexpectedmaker/

https://www.patreon.com/unexpectedmaker

https://www.tindie.com/stores/seonr/

Код

  • Игра Pixel Chaser - Код Arduino
Игра Pixel Chaser - Код Arduino Arduino
Добавьте этот код в Arduino и следуйте инструкциям по сборке!
 / * ---------------------------------- ----------------------------------------- Игра Pixel Chaser - v1.0.0 - 24 /03/2019.AUTHOR/LICENSE:Создано Сеоном Розенблюмом - [email protected] Авторские права 2016 Лицензия:GNU GPL v3 http://www.gnu.org/licenses/gpl-3.0.html ССЫЛКИ:Блог:unknownmaker.comYOUTUBE:youtube .com / c / unknownmaker ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ:Это программное обеспечение предоставляется на условиях «как есть», без технической поддержки и без каких-либо гарантий, явных или подразумеваемых, в отношении его полезности для каких-либо целей. ЦЕЛЬ:Этот контроллер представляет собой программное обеспечение, работающее на Reflow Master. контроллер духовки тостера от Unexpected Maker ИСТОРИЯ:24/03/2019 v1.0.0 - Первоначальный выпуск.ПРИМЕЧАНИЕ:работа над ним продолжается ...------------------- -------------------------------------------------- ------ * /// Нам нужны эти библиотеки, установленные из диспетчера библиотек # include  #include "OneButton.h" // К какому GPIO подключена полоса # define PIXELPIN 4 // Сколько Ne oПиксели в полосе #define NUMPIXELS 24 // К какому GPIO подключена кнопка? #define BUTTON_TAP 3 // Инициализируйте кнопку со значением по умолчанию lowOneButton buttonTAP (BUTTON_TAP, false); // Инициализируйте полосу пикселей , PIXELPIN, NEO_GRB + NEO_KHZ800); // Куча переменных int playerIndex =-1; int playerIndexTrail =-1; int playerDirection =1; float nextMove =0; float currentPlayerSpeed ​​=150; unsigned long countdown =0; int вражескийIndex =- 1; int coinIndex =-1; int score =0; int bestScore =0; int lastScore =0; bool gameOver =false; void setup () {// сделать вывод кнопки входным pinMode (BUTTON_TAP, INPUT); // Прикрепляем функции щелчка к кнопке buttonTAP.attachClick (singleClick); buttonTAP.attachLongPressStart (longClick); // Инициализируем полосу и устанавливаем ее яркость на 20% пикселей .begin (); pixel.setBrightness (20); // устанавливаем 2-секундный обратный отсчет до того, как игрок появится и начнет движение countdown =millis () + 2000;} void loop () {// Каждый цикл нам нужно отмечать состояние кнопки buttonTAP.tick (); // Если игра находится в состоянии завершения игры, досрочно выходим из цикла if (gameOver) return; // Устанавливаем состояние отображения уровня пикселей // Устанавливаем позицию врага и позицию монеты SetLevel (); // ждем секунду, пока игрок подготовится if (countdown> millis ()) {pixels.show (); возвращение; } // Здесь все отображение, движения и игровая логика игрока DisplayPlayer (); // Это отправляет обновленный цвет пикселя на оборудование. pixel.show ();} // Очищаем уровень, устанавливая для всех пикселей значение blackvoid ClearLevel () {for (int i =0; i  =0) pixels.setPixelColor (playerIndexTrail, pixels.Color (0, 0, 0)); если (playerIndex> =0) {пикселей.setPixelColor (playerIndex, pixels.Color (0, 100, 0)); playerIndexTrail =playerIndex; } // Перемещаем игрока в текущем направлении playerIndex + =playerDirection; // Оборачиваем игрока по краям полосы if (playerIndex <0) playerIndex =NUMPIXELS - 1; иначе, если (playerIndex ==ЧИСЛО) playerIndex =0; пикселей.setPixelColor (playerIndex, pixels.Color (0, 255, 0)); // Игрок ударил монету? // Если это так, увеличиваем счет, сбрасываем позиции монеты и врага и очищаем уровень // В следующем цикле SetLevel () сбрасывает врага и монету // Скорость игрока также увеличивается с каждым попаданием монеты if (playerIndex ==coinIndex) {ownIndex =-1; coinIndex =-1; оценка ++; currentPlayerSpeed ​​=ограничение (currentPlayerSpeed ​​- 10, 50, 150); ClearLevel (); пикселей.setPixelColor (playerIndex, pixels.Color (0, 255, 0)); } // Игрок ударил врага? // Устанавливаем последний / лучший результат и вызываем игру поверх else if (playerIndex ==enemyIndex) {lastScore =score; если (оценка> =bestScore) bestScore =оценка; Игра закончена(); gameOver =true; ownIndex =-1; coinIndex =-1; playerIndex =-1; }}} // Нажатие одной кнопкиvoid singleClick () {// Нет ввода, пока игрок не станет видимым if (countdown> millis ()) return; // переключаем направление игрока playerDirection =-playerDirection;} // Длительное нажатие кнопкиvoid longClick () {// Переключаем состояние игры // Если игра закончилась, запустить игру, в противном случае отменить игру в процессе gameOver =! gameOver; если (gameOver) {противникIndex =-1; coinIndex =-1; playerIndex =-1; currentPlayerSpeed ​​=150; ClearLevel (); } еще {ClearLevel (); оценка =0; currentPlayerSpeed ​​=150; обратный отсчет =миллис () + 2000; }} 

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

  1. Игра с гироскопом Arduino с MPU-6050
  2. Цифровые игральные кости Arduino
  3. Игра Arduino Pong - OLED-дисплей
  4. Рулетка DIY 37 LED
  5. Игровой контроллер Arduino
  6. Игра Arduino Touch Breakout
  7. Игра Arduino Nano Tetris на самодельной матрице 16x8
  8. Отталкивающая электромагнитная левитация Arduino
  9. Автоматизированная игра Дино с использованием arduino
  10. Домашний контроллер Arduino, активированный Alexa