Arduino Unoと1Sheeldで作る4x4x4 LEDキューブ – インタラクティブLEDプロジェクト
必要な部品と材料
| 部品 | 数量 | 備考 |
|---|---|---|
| Androidデバイス | 1 | |
| 抵抗 220Ω | 16 | 各列の制御ピンに直列接続 |
| LED(汎用) | 64 | 4x4x4キューブ用 |
| Arduino UNO | 1 | |
| 1Sheeld | 1 | スマートフォン連携用シールド |
| ジャンパーワイヤー(汎用) | 20 | |
| はんだ付け工具一式 | 1 |
プロジェクト概要
スマートフォンのマイクで音声を検出し、その音量に応じて4x4x4のLEDキューブが光るインタラクティブなプロジェクトです。1Sheeldを介してArduinoとスマートフォンを連携させ、音楽や音に反応するビジュアライザーを作成します。




LEDキューブの作り方
以下のInstructables記事のStep 3〜5を参照してキューブを組み立ててください。基本的なはんだ付けスキルが必要です。
LED Cube 4x4x4 - Instructables
※記事内の部品リストではなく、上記の部品リストを使用してください。
動作原理
各LEDのアノードに個別に配線するのは非現実的です。そこでキューブを4層に分け、各層を16個のLEDで構成します。
- 垂直方向の列(カラム)にある全LEDのアノード(+)を共通化
- 水平方向の層(レイヤー)にある全LEDのカソード(-)を共通化
特定のLEDを点灯させるには、そのLEDが属する層にGND(-)を、列に5V(+)を供給します。
配線方法
キューブ完成後、列制御用16ピンと層制御用4ピンが出ています。
列制御ピン(カラム)
- 各ピンに220Ω抵抗を直列に接続し、抵抗のもう片方をArduino上の1Sheeldに接続
- 抵抗なしでも動作しますが、推奨しません
- デジタルピン13〜0、アナログピンA4、A5に順番に接続(図参照)
- 列の接続順序は自由に変更可能
層制御ピン(レイヤー)
- アナログピンA0、A1、A2、A3に接続
- コード上では最下層=A0、上に向かってA1、A2、最上層=A3
配線完了後、コードをアップロードし、スマートフォンを1Sheeldとペアリングします。1Sheeldの使い方がわからない場合は公式チュートリアルを参照してください。
スケッチ(Arduinoコード)
/* 1SheeldとArduino Unoで4x4x4 LEDマトリックスをスマホのマイクで制御
* 回路: 64個のLEDで4x4x4キューブを構成、1SheeldとArduinoに接続
* 列制御ピン: デジタル0-13、アナログA4、A5
* 層制御ピン: アナログA0-A3
* by Hassan Ibrahim */
#define CUSTOM_SETTINGS
#define INCLUDE_PUSH_BUTTON_SHIELD
#define INCLUDE_MIC_SHIELD
#include <OneSheeld.h>
// ピン定義
int col[16] = {13,12,11,10,9,8,7,6,5,4,3,2,1,0,A4,A5};
int layer[4] = {A0,A1,A2,A3};
int counter;
void setup() {
OneSheeld.begin();
Serial.begin(115200);
for(int i=0;i<16;i++) pinMode(col[i], OUTPUT);
for(int i=0;i<4;i++) pinMode(layer[i], OUTPUT);
}
void loop() {
// 全列をHIGH(5V)に
for(int i=0;i<16;i++) digitalWrite(col[i], HIGH);
delay(30);
// マイクの音量で層を制御(値はスマホに合わせて調整)
int micVal = Mic.getValue();
if(micVal > 70) { digitalWrite(layer[0], LOW); delay(50); } else { digitalWrite(layer[0], HIGH); }
if(micVal > 76) { digitalWrite(layer[1], LOW); delay(50); } else { digitalWrite(layer[1], HIGH); }
if(micVal > 82) { digitalWrite(layer[2], LOW); delay(50); } else { digitalWrite(layer[2], HIGH); }
if(micVal > 88) { digitalWrite(layer[3], LOW); delay(50); } else { digitalWrite(layer[3], HIGH); }
}
回路図
※抵抗は省略されています

製造プロセス
- Samsung SAMI、Arduino UNO、Raspberry Piで高速・信頼性の高い火災検知システムを構築
- 自作LUMAZOID:Arduino音楽ビジュアライザーDIYガイド
- Arduino NanoとMPU-6050で作るリアルタイムジャイロスコープゲーム
- Arduino で作るイスラム教礼拝時刻付きリアルタイムクロック
- DHT11温湿度センサーで作る温度アラート – LEDとピエゾブザーで視覚/聴覚通知
- 1SheeldとArduinoで盲ろう者のコミュニケーションを支援する
- Unopad: Ableton Live連携シームレスなArduino MIDIコントローラー
- Arduinoで温湿度ロガーを作る – DHT11とEthernetシールドでSDカード記録
- ArduinoでBluetooth経由でLEDを制御 – シンプルDIYガイド
- Arduinoでシンプルな障害物センサーを自作 – IR LEDとフォトダイオード入門
- Windows 10 CortanaでBluetooth経由でArduinoのLEDを制御