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

Tetris на Arduino Nano: самостоятельная сборка 16×8 LED-матрицы на 74HC595

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

Arduino Nano R3 1 шт.
Тактильные кнопки 12 мм 4 шт. (влево, вправо, вниз, вращение)
Сдвиговый регистр 74HC595 (Serial-to-Parallel) 2 шт. (по одному на цвет / половину матрицы)
Колодка переключателей (Slide Switch) 1 шт. (вкл/выкл)
Жёлтые светодиоды 5 мм 128 шт. (16 колонок × 8 строк)

Инструменты

Программное обеспечение

О проекте

Полностью рабочая реализация Tetris на самодельной 16×8 LED-матрице. Два 74HC595 управляют 16 столбцами (анодами), 8 строк (катодами) сканируются прямыми пинами Arduino. Добавлен звук пискера при нажатии кнопок. Проект — вторая работа автора, код может быть неоптимален, но полностью функционален.

Схема подключения

Код (Arduino IDE)

/* Tetris v2 на 16x8 матрице с 2х 74HC595
   Author: Jae Yeong Bae, UBC ECE, Jan 2013 */
unsigned char latchPin = 3, clockPin = 2, dataPin = 4, rowPin = 5;
long delays = 0; short delay_ = 500;
long bdelay = 0; short buttondelay = 150, btdowndelay = 30, btsidedelay = 80;
unsigned char blocktype, blockrotation;
int lines = 0;
boolean block[8][18], pile[8][16], disp[8][16];
boolean lib[10][5][7]; // шрифт цифр для вывода счёта

void setup() {
  // инициализация библиотеки фигур (lib) — см. полный код
  int seed = (analogRead(0)+1)*(analogRead(1)+1)*(analogRead(2)+1)*(analogRead(3)+1);
  randomSeed(seed); random(10,9610806); seed = seed*random(3336,15679912)+analogRead(random(4)); randomSeed(seed); random(10,98046);
  cli(); // stop interrupts
  TCCR1A = 0; TCCR1B = 0; TCNT1 = 0;
  OCR1A = 259; // 2 кГц @ 16 МГц / 1024
  TCCR1A |= (1<

Примечание: полный код объёмный — см. оригинал. Здесь приведена структура и ключевые функции.

Схема подключения

См. раздел «Schematics» оригинала: схема матрицы 16×8 с двумя 74HC595, кнопками и питанием.

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

  1. Создание игры в реальном времени на Arduino Nano с гироскопом MPU-6050 и OLED-дисплеем
  2. Цифровые кости на Arduino: генератор случайных чисел с LCD-дисплеем и кнопкой
  3. DIY Arduino TV-B-Gone: универсальный пульт для выключения любого телевизора
  4. DIY USB-геймпад на Arduino: собственный высокопроизводительный контроллер
  5. Сборка консоли Pong 24×16 на Arduino Nano и MAX7219
  6. Pixel Chaser: игра на один тап с NeoPixel Ring и Arduino Nano
  7. Arduino Flip Clock на матрице 8×8 LED — DIY проект реального времени
  8. NeoPixel Matrix Pong на Arduino Nano: неоновая игра Pong на матрице 15×10
  9. Ручной дозиметр (Гейгер-счетчик) на Arduino Nano: сборка в 3D-корпусе
  10. Never Ride Alone: умная система безопасности для велосипедистов