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 строк) |
Инструменты
- Паяльник
Программное обеспечение
- Arduino IDE
О проекте
Полностью рабочая реализация Tetris на самодельной 16×8 LED-матрице. Два 74HC595 управляют 16 столбцами (анодами), 8 строк (катодами) сканируются прямыми пинами Arduino. Добавлен звук пискера при нажатии кнопок. Проект — вторая работа автора, код может быть неоптимален, но полностью функционален.
Схема подключения
- 74HC595 #1: Data→D4, Clock→D2, Latch→D3
- 74HC595 #2: каскадирован с первого (Q7' → Data второго), те же Clock/Latch
- Строки (Row anodes): D5–D12 (8 пинов)
- Кнопки (аналоговые входы как цифровые): A4=Left, A5=Down, A6=Right, A7=Up/Rotate
Код (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, кнопками и питанием.
Производственный процесс
- Создание игры в реальном времени на Arduino Nano с гироскопом MPU-6050 и OLED-дисплеем
- Цифровые кости на Arduino: генератор случайных чисел с LCD-дисплеем и кнопкой
- DIY Arduino TV-B-Gone: универсальный пульт для выключения любого телевизора
- DIY USB-геймпад на Arduino: собственный высокопроизводительный контроллер
- Сборка консоли Pong 24×16 на Arduino Nano и MAX7219
- Pixel Chaser: игра на один тап с NeoPixel Ring и Arduino Nano
- Arduino Flip Clock на матрице 8×8 LED — DIY проект реального времени
- NeoPixel Matrix Pong на Arduino Nano: неоновая игра Pong на матрице 15×10
- Ручной дозиметр (Гейгер-счетчик) на Arduino Nano: сборка в 3D-корпусе
- Never Ride Alone: умная система безопасности для велосипедистов