ジェスチャー制御 RGB テーブルランプ – インタラクティブなハンズフリー照明
必要な部品と材料
| 部品名 | 数量 |
|---|---|
| Arduino UNO | 1 |
| SmartElex RLS-08 アナログ&デジタル ラインセンサーアレイ(8センサー) | 1 |
| ジャンパーワイヤー(汎用) | 1 |
| LEDストリップ、NeoPixel デジタル RGB (WS2812B) | 1 |
必要な工具と機器
- ホットグルーガン(汎用)
アプリとオンラインサービス
- Arduino IDE
プロジェクト概要
これまで様々なムードランプや RGB ライトを見てきましたが、ほとんどはボタンやリモコンで操作します。そこで、シンプルなスワイプジェスチャーだけで色を変えられる ジェスチャー制御 RGB デスクライト を作りました。このインタラクティブアートプロジェクトは Arduino Uno と IR アレイセンサー を使用し、学生や子供たちにも教えやすい楽しい作品です。
ステップ 1: 材料の準備
ここで使用する材料はすべて、近所の電子部品店やオンラインストアで簡単に入手できます。
- Arduino Uno
- IR センサーアレイ(8センサー)
- WS2812B アドレサブル RGB LED
- 5V、2A ACアダプター
ステップ 2: IRセンサーアレイの仕組み
このセンサーは複数の IR センサー(近接センサー)を配列状に並べたもので、8つのセンサーがそれぞれ独立したアナログおよびデジタル出力を持ちます。今回はこのセンサーで手の動きの方向を検知し、ジェスチャーに合わせて LED の色を変化させます。Arduino がセンサー入力を受け取り、LED を制御します。
以下の2つのシンプルなジェスチャーを使用します:
- 左スワイプ
- 右スワイプ
ステップ 3: 配線
配線は少数で済みます(回路図を参照)。
IRセンサーの接続
- IR ラインフォロワーセンサーの GND → Arduino GND
- IR ラインフォロワーセンサーの VCC → Arduino 5V
- センサー A デジタル出力 → Arduino デジタルピン 4
- センサー B デジタル出力 → Arduino デジタルピン 5
- センサー C デジタル出力 → Arduino デジタルピン 6
- センサー D デジタル出力 → Arduino デジタルピン 7
- センサー E デジタル出力 → Arduino デジタルピン 8
- センサー F デジタル出力 → Arduino デジタルピン 9
- センサー G デジタル出力 → Arduino デジタルピン 10
- センサー H デジタル出力 → Arduino デジタルピン 11
LEDストリップの接続
- LEDストリップ GND → Arduino GND
- LEDストリップ 5V → Arduino Vin
- LEDストリップ Data In → Arduino デジタルピン 3
ステップ 4: プログラミング
使用ライブラリ:FastLED(LED制御とエフェクト用)
コードのポイント:
- 8つの変数(a〜h)でセンサーデータを格納
- LED数:90個(環境に合わせて変更可能)
- データピン:ピン 3
- メインループではネストした if 文でどのセンサーが反応したかを判定し、LEDの色を変更
fadeall()関数でヒュー(色相)を徐々に変化させるフェードエフェクトを実装
ステップ 5: 完成写真
複数の角度から撮影した完成写真を掲載しています。
コード
#include <FastLED.h>
int a,b,c,d,e,f,g,h,j=0;
#define NUM_LEDS 90
#define DATA_PIN 3
CRGB leds[NUM_LEDS];
void setup() {
pinMode(4, INPUT);
pinMode(5, INPUT);
pinMode(6, INPUT);
pinMode(7, INPUT);
pinMode(8, INPUT);
pinMode(9, INPUT);
pinMode(10, INPUT);
pinMode(11, INPUT);
LEDS.addLeds<WS2812, DATA_PIN, RGB>(leds, NUM_LEDS);
LEDS.setBrightness(84);
}
void fadeall() {
for(int i = 0; i < NUM_LEDS; i++) {
leds[i].nscale8(250);
}
}
void loop() {
a = digitalRead(4);
b = digitalRead(5);
c = digitalRead(6);
d = digitalRead(7);
e = digitalRead(8);
f = digitalRead(9);
g = digitalRead(10);
h = digitalRead(11);
static uint8_t hue = 0;
// 左スワイプ検知(センサーA→Bの順に反応)
if(a == 1) {
if(b == 1) {
for(int i = 4; i < 55; i++) {
leds[i] = CHSV(hue++, 255, 255);
FastLED.show();
fadeall();
delay(10);
}
}
}
// 右スワイプ検知(センサーG→Fの順に反応)
if(g == 1) {
if(f == 1) {
for(int i = 55; i >= 4; i--) {
leds[i] = CHSV(hue++, 255, 255);
FastLED.show();
fadeall();
delay(10);
}
}
}
}
回路図
Fritzing で作成した回路図です。8個の個別 IR センサーでも、アレイセンサーでも動作します。
製造プロセス
- Bluetooth 制御 Raspberry Pi ロボットに音声フィードバックを追加して構築
- Raspberry Pi でジェスチャー制御ロボットを構築 – 加速度センサーと RF 通信でハンドフリー操作
- ラズベリーパイとNode-REDでAlexaからLEDを制御する - 簡単ステップバイステップガイド
- 古いラジコンカーをXboxコントローラーで操作可能に - ArduinoとUSBホストシールドで実現
- SunGlass-BOT:光量に合わせて自動でレンズを開閉するスマートサングラス
- Arduinoベースのヌンチャク操作6自由度ロボットアームキット
- スマートワイヤレス照明スイッチコントローラー:Arduinoで物理スイッチを遠隔操作
- Arduino Nanoで音声制御ロボットを自作
- PiBot:Arduino駆動の精密ピアノ演奏ロボット
- Arduino RGB LEDカラーミキサー:初心者向けDIYプロジェクト
- 屋外対応DMX制御RGB LED投光器 – 低コスト・高性能・自作PCB