Сборка 7×7×7 LED-куба: пошаговый проект на Arduino
Компоненты и расходные материалы
| Компонент | Количество |
|---|---|
| Arduino UNO | 1 |
| Сдвиговый регистр 74HC574 (8-битный D-триггер) | 7 |
| Декодер/демультиплексор 74HC138 (3-в-8) | 1 |
| Резистор 220 Ом | 49 |
| Кварцевый резонатор 16 МГц | 1 |
Необходимые инструменты
- Паяльная станция / паяльник
О проекте
Автор давно хотел построить свой LED-куб и делится подробной инструкцией. Проект реализует 7×7×7 куб (343 светодиода) с мультиплексированием для управления каждым слоем отдельно.
Шаг 1: Создание LED-матриц
Сначала собираются семь матриц 7×7. Аноды и катоды распаяны по строкам и столбцах — в итоге у каждой матрицы 7 анодов и 7 катодов.
Шаг 2: Аппаратная часть управления
Это самый сложный этап. Используются:
- 7 шт. 74HC574 — 8-битные D-триггеры (память) для хранения образа каждого слоя
- 7 NPN-транзисторов — для выбора активного слоя
- 1 шт. 74LS138 — 3-в-8 декодер для управления тактированием триггеров всего 3 пинами Arduino
Принцип: мультиплексирование по слоям. Загружаем данные в триггеры для одного слоя, включаем его на короткое время, переходим к следующему. Благодаря инерции зрения создаётся впечатление статичного 3D-образа.
Автор собрал схему на отдельной плате, используя standalone ATmega328P (без платы Arduino). Приведена принципиальная схема.
Шаг 3: Механическая конструкция
Каркас сделан из деревенных заготовок. Сiete матриц устанавливаются одна за другой, катоды каждого слоя соединены с соответствующим транзистором.
Шаг 4: Программирование
Код реализует базовые анимации. Приведён пример простейшей анимации «по слоям» с ускорением. С комментариями на английском, логика понятна: загрузка данных во все слои, циклическое включение каждого со задержкой.
Исходный код (фрагмент)
// Базовая анимация для LED-куба
int temp = 50, cont = 0;
void load_all(void) {
// Последовательная активация 8 слоев через пины A0-A2 (3 бита -> 74HC138)
for (int layer = 0; layer < 8; layer++) {
digitalWrite(A2, layer & 4);
digitalWrite(A1, layer & 2);
digitalWrite(A0, layer & 1);
delay(1);
}
}
void scrolling(int t) {
PORTB = 0x00;
for (int pin = 7; pin <= 13; pin++) {
digitalWrite(pin, HIGH);
delay(t);
digitalWrite(pin, LOW);
}
}
void one(void) {
PORTD = 0xff; // все 8 бит PORTD = 1 (аноды)
load_all();
while (1) {
scrolling(temp);
temp -= 2;
if (temp <= 0) {
temp = 1;
cont++;
if (cont == 1000) { cont = 0; temp = 100; }
}
}
}
void setup() {
DDRD = 0xff; // PORTD - выходы (аноды)
DDRB = 0xff; // PORTB - выходы (управление слоями)
DDRC = 0xff; // PORTC - выходы
}
void loop() {
one();
}
Схемы и файлы
- Принципиальная схема (изображение)
- Файл схемы для Eagle:
gestione_mankWMoVhz.sch
Производственный процесс
- Кубик Рубика: от изобретения к современной головоломке
- Светодиоды (LED): от зарождения к 100-летнему ресурсу
- Создание рулетки на 37 светодиодов с Arduino Nano
- Проект Arduino: мелодия Coffin Dance — сборка и воспроизведение вирусного трека
- Сборка потрясающего 5x5x5 LED-куба на Arduino Mega
- Вторая жизнь старых пультов: DIY умные устройства на Arduino
- Управление светодиодом по Bluetooth с Arduino: простой DIY-гид
- Звукоактивируемый светодиодный дисплей 8 LED на Arduino
- Пошаговое руководство: сборка умного четырёхногого робота на Arduino
- Arduino RGB-микшер цветов: Простой проект для начинающих