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

Сборка консоли Pong 24×16 на Arduino Nano и MAX7219

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

Компонент Количество Примечание
Arduino Nano R3 1
Модуль матрицы 8x8 с MAX7219 6 Готовые модули с AliExpress вместо самодельных плат
Потенциометр 10 кОм (вращающийся) 2 Управление ракетками
Зуммер 1 Звук

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

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

О проекте

Собрал небольшую консоль Pong на массиве из 6 шт. матриц 8x8 по инструкции и коду с Instructables.

Вместо самодельных плат использовал дешёвые готовые модули 8x8 с MAX7219 с AliExpress.

Пины «Clock» и «Load» всех модулей соединены параллельно. «Din» первого модуля — к Arduino, «Dout» — к «Din» следующего и так далее. Управление ракетками — два потенциометра 10 кОм на аналоговых входах A0 и A1. Зуммер на D9.

В итоге устройство помещено в пластиковый коробок, контроллеры — в коробки для электроустановки.

Библиотеку LedControl можно скачать здесь: https://github.com/wayoda/LedControl

Код

Полный скетч (Arduino) — см. ниже. Основные моменты:

Скетч (Arduino)

// Всегда подключаем библиотеку
#include "LedControl.h"

byte rightscore;
byte leftscore;
int toneloop=1000;
byte pongdisplay[]={ ... }; // Заставка "Pong"
byte zero[]={ ... }; // Цифры 0-5 для счёта
byte one[]={ ... };
byte two[]={ ... };
byte three[]={ ... };
byte four[]={ ... };
byte five[]={ ... };

byte displayevens=0;
byte displayrow=0;
byte displayindex=0;
byte displayodds=1;
unsigned long time;
unsigned long currenttime;

byte mode;
byte deflect;
byte carry;
int line;
LedControl lc=LedControl(12,11,10,6); // DIN=12, CLK=11, LOAD=10, 6 устройств

long randnumber;
byte dir;
int startpos;
byte row;
byte column;
long randNumber;
byte start;
byte diry;
int pass;
byte limit;

#define leftpaddle 0
#define rightpaddle 1

int directionpong;
int rightpongval;
int leftpongval;
byte blinkx;
byte pong[48]; // Позиции мяча и ракеток (48 строк = 6 матриц x 8 строк)

void setup(){
  pinMode(leftpaddle, INPUT);
  pinMode(rightpaddle, INPUT);
  Serial.begin(9600);
  // Инициализация 6 матриц
  for(int i=0;i<6;i++){
    lc.shutdown(i,false);
    lc.setIntensity(i,1);
    lc.clearDisplay(i);
  }
  // Показ заставки "Pong"
  while(displayevens<5){
    while(displayrow<=7){
      lc.setRow(displayevens,displayrow,pongdisplay[displayindex]);
      displayrow++; displayindex+=2;
    }
    displayrow=0; displayevens+=2;
  }
  displayrow=0; displayindex=1;
  randomSeed(analogRead(4));
  start=1;
  time=millis(); currenttime=millis();
  // Выбор режима левым потенциометром (3 секунды)
  while(currenttime-time<3000){
    leftpongval=analogRead(leftpaddle);
    leftpongval=map(leftpongval,1023,20,2,0);
    if(leftpongval==0){ lc.setLed(3,2,7,true); lc.setLed(3,3,7,false); lc.setLed(3,4,7,false); mode=1; limit=2; }
    if(leftpongval==1){ lc.setLed(3,2,7,true); lc.setLed(3,3,7,true); lc.setLed(3,4,7,false); mode=2; limit=1; }
    if(leftpongval==2){ lc.setLed(3,2,7,true); lc.setLed(3,3,7,true); lc.setLed(3,4,7,true); mode=3; limit=2; }
    delay(50); lc.clearDisplay(3); currenttime=millis();
  }
}

void loop(){
  paddles();
  pongsim();
  displayscreen();
}

void paddles(){
  // Чтение потенциометров, отображение ракеток в массиве pong[0..47]
  // ... (подробный код в оригинале)
}

void pongsim(){
  // Физика мяча: движение, отскоки от стен, ракеток, переход между матрицами
  // ... (подробный код в оригинале)
}

void displayscreen(){
  // Вывод массива pong на 6 матриц
  // ... (подробный код в оригинале)
}

void clearscreen(){ ... }
void ball_meets_paddle(){ ... }
void scoreleft(){ ... }
void scoreright(){ ... }
void setscore(){ ... }

Схемы

Сборка консоли Pong 24×16 на Arduino Nano и MAX7219

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

  1. Создание игры в реальном времени на Arduino Nano с гироскопом MPU-6050 и OLED-дисплеем
  2. Создание классической игры Pong на Arduino UNO с OLED-дисплеем: пошаговый урок
  3. DIY USB-геймпад на Arduino: собственный высокопроизводительный контроллер
  4. Умная копилка: управление монетоприёмником на Arduino Nano
  5. Сборка консоли Pong 24×16 на Arduino Nano и MAX7219
  6. Tetris на Arduino Nano: самостоятельная сборка 16×8 LED-матрицы на 74HC595
  7. Управление светодиодом по Bluetooth с Arduino: простой DIY-гид
  8. Pixel Chaser: игра на один тап с NeoPixel Ring и Arduino Nano
  9. Мастерство 8×8 LED-матрицы с Arduino Uno: Пошаговое руководство
  10. NeoPixel Matrix Pong на Arduino Nano: неоновая игра Pong на матрице 15×10