Создание интерактивного 4x4x4 светодиодного куба на Arduino Uno и 1Sheeld
Компоненты и материалы
| Android-устройство | 1 |
| Резистор 220 Ом | 16 |
| Светодиоды (любые) | 64 |
| Arduino UNO | 1 |
| 1Sheeld | 1 |
| Провода перемычки | 20 |
| Инструменты для пайки | 1 |
О проекте
Это потрясающий 4x4x4 светодиодный куб, управляемый смартфоном через 1Sheeld и Arduino Uno. Музыка управляет визуализацией...




Как собрать светодиодный куб
Следуйте этому руководству для сборки куба. Вам понадобятся только шаги 3, 4 и 5. Требуются базовые навыки пайки.
https://www.instructables.com/id/LED-Cube-4x4x4/
Вам не понадобятся компоненты из этого руководства. Для списка необходимых деталей см. ниже.
Принцип работы
Прямое подключение проводов к анодам каждого светодиода нецелесообразно. Решение — разделить куб на 4 слоя по 16 светодиодов каждый.
- Все светодиоды в вертикальном столбце имеют общий анод (+)
- Все светодиоды в горизонтальном слое имеют общий катод (-)
Чтобы зажечь конкретный светодиод, подайте GND (-) на слой, содержащий этот светодиод, и 5V (+) на столбец, содержащий этот светодиод.
Подключение
После сборки куба у вас должно быть 16 выводов для управления столбцами и 4 вывода для управления слоями.
— Подключите каждый управляющий вывод столбца к резистору 220 Ом последовательно, другой конец резистора соедините с 1Sheeld, установленным на Arduino.
Я пробовал подключать провода напрямую к 1Sheeld и Arduino без резисторов — это работало, но не рекомендуется.
Управляющие выводы столбцов подключены по порядку к цифровым пинам 13–0 и аналоговым пинам A4 и A5 (см. схему).
Каждый пин управляет 4 светодиодами в столбце, поэтому столбцы можно подключать в любой комбинации.
— Подключите управляющие выводы слоев к аналоговым пинам A0, A1, A2 и A3.
Согласно коду, нижний слой — A0, следующий — A1, затем A2, верхний — A3 (см. схему).
— После подключения проводов к 1Sheeld и Arduino загрузите код и подключите смартфон к 1Sheeld.
Если вы не знакомы с 1Sheeld, начните с этого руководства.
Код
/* Этот код использует 1Sheeld и Arduino Uno для управления 4x4x4 светодиодной матрицей через микрофон смартфона. * Схема: 64 светодиода образуют куб 4x4x4, подключенный к 1Sheeld и Arduino * Управляющие выводы столбцов подключены к цифровым пинам 0–13 и аналоговым A4, A5 * Управляющие выводы слоев подключены к аналоговым пинам A0–A3 * Автор: Hassan Ibrahim */ #define CUSTOM_SETTINGS #define INCLUDE_PUSH_BUTTON_SHIELD #define INCLUDE_MIC_SHIELD /* Подключаем библиотеку 1Sheeld. */ #include// Определение пинов подключения светодиодной матрицы (столбцы и слои). // См. руководство для более подробной иллюстрации. int coloumn13 = 13; int coloumn12 = 12; int coloumn11 = 11; int coloumn10 = 10; int coloumn9 = 9; int coloumn8 = 8; int coloumn7 = 7; int coloumn6 = 6; int coloumn5 = 5; int coloumn4 = 4; int coloumn3 = 3; int coloumn2 = 2; int coloumn1 = 1; int coloumn0 = 0; int coloumnA4 = A4; int coloumnA5 = A5; int layerA0 = A0; // layerA0 — слой, подключенный к аналоговому пину A0 (самый нижний в этом примере) int layerA1 = A1; int layerA2 = A2; int layerA3 = A3; int counter; // используется для вариаций в столбцах void setup() { OneSheeld.begin(); Serial.begin(115200); // Инициализация каждого пина как выход pinMode(coloumn0, OUTPUT); pinMode(coloumn1, OUTPUT); pinMode(coloumn2, OUTPUT); pinMode(coloumn3, OUTPUT); pinMode(coloumn4, OUTPUT); pinMode(coloumn5, OUTPUT); pinMode(coloumn6, OUTPUT); pinMode(coloumn7, OUTPUT); pinMode(coloumn8, OUTPUT); pinMode(coloumn9, OUTPUT); pinMode(coloumn10, OUTPUT); pinMode(coloumn11, OUTPUT); pinMode(coloumn12, OUTPUT); pinMode(coloumn13, OUTPUT); pinMode(coloumnA4, OUTPUT); pinMode(coloumnA5, OUTPUT); pinMode(layerA0, OUTPUT); pinMode(layerA1, OUTPUT); pinMode(layerA2, OUTPUT); pinMode(layerA3, OUTPUT); } void loop() { // Все столбцы подключены к 5V (HIGH) digitalWrite(coloumn0,HIGH); digitalWrite(coloumn1,HIGH); digitalWrite(coloumn2,HIGH); digitalWrite(coloumn3,HIGH); digitalWrite(coloumn4,HIGH); digitalWrite(coloumn5,HIGH); digitalWrite(coloumn6,HIGH); digitalWrite(coloumn7,HIGH); digitalWrite(coloumn8,HIGH); digitalWrite(coloumn9,HIGH); digitalWrite(coloumn10,HIGH); digitalWrite(coloumn11,HIGH); digitalWrite(coloumn12,HIGH); digitalWrite(coloumn13,HIGH); digitalWrite(coloumnA4,HIGH); digitalWrite(coloumnA5,HIGH); delay(30); // Получаем уровень шума от микрофона и управляем слоями (подключаем к 0V — LOW) // Каждый блок if-else управляет одним слоем. // Значения нужно калибровать под ваш телефон. /* Для калибровки: включите музыку рядом с телефоном и следите за показаниями Mic shield, подбирайте подходящие значения. */ // В этом примере шаг 6 дает хорошие результаты if( Mic.getValue() > 70 ) { // управление первым слоем digitalWrite(layerA0, LOW); delay(50); // Для наглядности. Можно изменить для ускорения/замедления. } else { digitalWrite(layerA0, HIGH); } if( Mic.getValue() > 76 ) { // второй слой digitalWrite(layerA1, LOW); delay(50); } else { digitalWrite(layerA1, HIGH); } if( Mic.getValue() > 82 ) { // третий слой digitalWrite(layerA2, LOW); delay(50); } else { digitalWrite(layerA2, HIGH); } if( Mic.getValue() > 88 ) { // четвертый слой digitalWrite(layerA3, LOW); delay(50); } else { digitalWrite(layerA3, HIGH); } }
Схемы
На изображении резисторы не показаны.
Производственный процесс
- Создание быстрой надежной системы обнаружения пожара с Samsung SAMI, Arduino UNO и Raspberry Pi
- Сделай свой LUMAZOID: DIY Arduino музыкальный визуализатор
- Создание игры в реальном времени на Arduino Nano с гироскопом MPU-6050 и OLED-дисплеем
- Часы реального времени на Arduino с расчётом времени намаза
- Проект с датчиком DHT11: индикация температуры светодиодами и пьезо-динамиком на Arduino
- Устройство для общения глухосліпых людей с помощью 1Sheeld и Arduino
- Unopad: Бесшовный Arduino MIDI-контроллер для Ableton Live
- Логгер температуры и влажности на Arduino с DHT11 и Ethernet Shield
- Управление светодиодом по Bluetooth с Arduino: простой DIY-гид
- Простой ИК-датчик препятствий на Arduino: ИК-светодиод и фотодиод