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

Сборка клона Arduboy размером с кредитную карту: Arduino Nano + I2C OLED

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

Необходимые инструменты и оборудование

О проекте

Arduboy — миниатюрная игровая система размером с кредитную карту. Изначально оснащена классической 8-битной игрой, перепрограммируется из библиотеки открытых игр. Основана на микроконтроллере ATmega32U4 и OLED-дисплее 128x64. Проект открытый — можно учиться программировать и создавать свои игры.

Представленная ниже консоль построена на Arduino Nano и I2C-версии OLED-дисплея, которые легче найти и дешевле. Необходимые библиотеки и код:

https://github.com/harbaum/Arduboy2

Если есть 3D-принтер, можно напечатать корпус (STL-файлы на том же сайте). Питание — литий-ионный аккумулятор 3.7V, работает отлично.

Протестировано множество игр — все работают отлично:

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

Код: ArduBreakout Game

/* Breakout Copyright (C) 2011 Sebastian Goscik
 * Modifications by Scott Allen 2016
 * GNU Lesser General Public License v2.1 or later
 */
#include <Arduboy2.h>

#define EE_FILE 2  // блок EEPROM для хранения рекордов

Arduboy2 arduboy;
BeepPin1 beep;

const unsigned int FRAME_RATE = 40;
const unsigned int COLUMNS = 13;
const unsigned int ROWS = 4;

int dx = -1, dy = -1;      // начальное движение мяча
int xb, yb;                // позиция мяча
boolean released = false;  // мяч выпущен игроком
boolean paused = false;    // игра на паузе
byte xPaddle;              // позиция ракетки
boolean isHit[ROWS][COLUMNS]; // массив кирпичей
boolean bounced = false;   // защита от двойного отскока
byte lives = 3;            // жизни
byte level = 1;            // уровень
unsigned int score = 0;    // счёт
unsigned int brickCount;   // сбито кирпичей
boolean pad, pad2, pad3;   // буферы кнопок
boolean oldpad, oldpad2, oldpad3;
char text_buffer[16];
boolean start = false;     // в меню или в игре
boolean initialDraw = false;
char initials[3];          // инициалы для рекорда

// Границы мяча и кирпичей для коллизий
byte leftBall, rightBall, topBall, bottomBall;
byte leftBrick, rightBrick, topBrick, bottomBrick;
byte tick;

void setup() {
  arduboy.begin();
  beep.begin();
  arduboy.setFrameRate(FRAME_RATE);
  arduboy.initRandomSeed();
}

void loop() {
  if (!(arduboy.nextFrame())) return;
  beep.timer();

  // Титр и рекорды до нажатия FIRE
  while (!start) {
    start = titleScreen();
    if (!start) start = displayHighScores(EE_FILE);
  }

  // Начальная отрисовка уровня
  if (!initialDraw) {
    arduboy.clear();
    level = 1; newLevel(); score = 0; initialDraw = true;
  }

  if (lives > 0) {
    drawPaddle();
    // Пауза по FIRE
    pad = arduboy.pressed(A_BUTTON) || arduboy.pressed(B_BUTTON);
    if (pad && !oldpad && released) { oldpad2 = false; pause(); }
    oldpad = pad;
    
    drawBall();
    if (brickCount == ROWS * COLUMNS) { level++; newLevel(); }
  } else {
    drawGameOver();
    if (score > 0) enterHighScore(EE_FILE);
    arduboy.clear(); initialDraw = false; start = false; lives = 3; newLevel();
  }
  arduboy.display();
}

// ... (остальные функции: movePaddle, moveBall, drawBall, drawPaddle, 
// drawGameOver, pause, Score, newLevel, pollFireButton, displayHighScores,
// titleScreen, enterInitials, enterHighScore, playTone, playToneTimed)
// Полный код доступен в репозитории Arduboy2

3D-модели корпусов

Архив с STL-файлами: 3d_parts_ThLGvJvWga.rar

Схемы

Схемотехнический диаграмм подключения компонентов к Arduino Nano.

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

  1. Бесшовная I2C-интеграция Arduino и Raspberry Pi 2 для IoT-проектов с датчиками
  2. Сборка портативной игровой консоли-клона Arduboy на Arduino Micro с проектированием PCB
  3. Создание классической игры Pong на Arduino UNO с OLED-дисплеем: пошаговый урок
  4. Монитор температуры и реальные часы на Arduino Due с TFT-дисплеем 3.2"
  5. Простой ИК-датчик препятствий на Arduino: ИК-светодиод и фотодиод
  6. Интерактивный HMI-проект на Nextion с Arduino Mega и датчиками
  7. Управление двумя шаговыми двигателями через джойстик на Arduino Nano — простой урок (Visuino)
  8. Сборка вольтметра на Arduino с дисплеем Nokia 5110 — Пошаговое руководство
  9. Клеточный автомат «Жизнь» Конвея на Arduino Nano с OLED 128x64
  10. Гальванически разделённый аналоговый вход для Arduino на LM331 и оптопаре 4N25