Arduino NanoとNeoPixelで作るダイナミックなマーキーLED照明
必要なパーツと用品
| パーツ | 数量 |
|---|---|
| Arduino Nano R3 | 1 |
| NeoPixelストリップ | 1 |
使用するアプリとオンラインサービス
- Arduino IDE
プロジェクト概要
シンプルなDIYアニメーションマーキー照明
アーケード筐体やその他のプロジェクトにアニメーション照明を追加するシンプルなチュートリアルです。マーキーのバックライトや様々な用途に使用できます。
必要なものはArduino Nano(または互換ボード)、NeoPixelストリップ、3本のワイヤーのみです。
製作手順
以下の動画で製作過程を確認できます:
簡易セットアップ
ハードウェア
Arduino NanoからNeoPixelストリップへ3本のワイヤーをハンダ付けします:5V、デジタル信号(ここではArduinoのピン2を使用)、グランド。



ヒント: ヒートシュリンクチューブでケーブルをまとめると、特にLEDストリップのハンダ接続部分が外れにくくなります。ハンダ接続部分が覆われるようにしてください。
コード
スケッチ内で接続するストリップのLED数を設定し、Arduinoにアップロードしてテストします。ここでは「歩行」「点滅」「パルス」のアニメーションを白色のみで実装しています。コードを変更すれば様々なアニメーションや色が可能です。シンプルなバックライトとして使用することもできます。

組み立て
キャビネットにぴったり収まるよう、段ボールを2枚カットします。1枚はNeoPixelストリップを貼り付ける背景用、もう1枚はマーキーの底部後ろに平らに配置して、NeoPixelからの光が直接下に漏れないようにします。その後、キャビネットに合わせて小さな端をカットしました。

ガムテープを段ボールに貼って黒くし、NeoPixelストリップを接着。ワイヤーとNanoを段ボールの裏側にテープで固定しました。



2つのパーツをキャビネットに入れ、NanoからUSBケーブルで5V電源に接続します。私の場合はRaspberry PiのUSBポートに接続しました。

純正マーキーを戻すか、オリジナルを作ってカスタマイズします。私はシンプルなデザインをフォト用紙に印刷してマーキーに合わせてカットしました。
ヒント: プロの印刷会社でフィルムに印刷してもらうと、さらに綺麗な仕上がりになります。

必要なライブラリ
- Adafruit NeoPixelライブラリ
ライセンス
スケッチの一部はインターネットで見つけたもので、全てのクレジットは制作者に帰属します。個人利用は自由ですが、商用利用はご遠慮ください。ご連絡は ericBcreator@gmail.com まで。
コード
アニメーションマーキーライトコード
/* **********************************************************************
* Marquee lighting with Neopixels by ericBcreator
* simple script for lighting an (arcade) marquee
**********************************************************************
* last update 20181021 by ericBcreator
*
* Inspired by an article by sandyjmacdonald
* https://sandyjmacdonald.github.io/2015/12/02/picade-errata/
*
* components:
* - Neopixel strip
* - Arduino Nano
*
* This code is free for personal use, not for commercial purposes.
* Please leave this header intact.
*
* contact: ericBcreator@gmail.com
********************************************************************** */
#include <Adafruit_NeoPixel.h>
#define PIN 2
int numOfLeds = 11;
int minBrightness = 80;
int maxBrightness = 255;
int walkingLedsDelay = 250;
int flashDelay = 250;
int numOfFlashLoops = 3;
int numOfPulseLoops = 10;
int pulseDelay = 20;
Adafruit_NeoPixel strip = Adafruit_NeoPixel(numOfLeds, PIN);
void setup() {
strip.begin();
}
void loop() {
walkingLeds();
flashLeds();
for (int i = 0; i < numOfPulseLoops; i++)
pulseBrightness();
}
void walkingLeds() {
setLedColorsToZero();
strip.setBrightness(maxBrightness);
strip.show();
for (int x = numOfLeds; x > 0; x--) {
strip.setPixelColor(x, strip.Color(255, 255, 255));
strip.show();
delay(walkingLedsDelay);
strip.setPixelColor(x, 0);
strip.show();
}
}
void flashLeds() {
setLedColors();
for (int i = 0; i < numOfFlashLoops; i++) {
strip.setBrightness(maxBrightness);
strip.show();
delay(flashDelay);
strip.setBrightness(minBrightness);
strip.show();
delay(flashDelay);
}
}
void pulseBrightness() {
setLedColors();
for (int i = minBrightness; i < maxBrightness; i++) {
strip.setBrightness(i);
strip.show();
delay(pulseDelay);
}
for (int i = maxBrightness; i > minBrightness; i--) {
strip.setBrightness(i);
strip.show();
delay(pulseDelay);
}
}
void setLedColors() {
for (int x = 0; x < numOfLeds; x++)
strip.setPixelColor(x, strip.Color(255, 255, 255));
}
void setLedColorsToZero() {
for (int x = 0; x < numOfLeds; x++)
strip.setPixelColor(x, strip.Color(0, 0, 0));
}
回路図
製造プロセス
- 家庭用の低コストワイヤレスセンサーネットワークを構築
- Arduino & Raspberry Pi でインターネット制御ビデオストリーミングロボットを構築
- Alexaでシーリングファンを音声制御:ステップバイステップガイド
- Arduino Cloud連携でどこからでも家の温度を監視
- Arduino IoT CloudとAlexaでテレビを音声操作:ステップバイステップガイド
- セントラルヒーティングをArduinoでスマート制御:OpenThermシールド活用ガイド
- ThimbleKrox: Arduino MicroとMPU-6050を用いた指装着型マウス制御
- Arduino NanoとWS2812 LEDストリップで作る1次元ポンゲーム - 完全DIYガイド
- 高度なオートメーションを解き放つ:なぜ3Dビジョンがあなたのプロジェクトに不可欠か
- E3.schematic機能で電気設計をマスター:プロジェクトを最適化
- MKR1000ピン配置完全解説:IoT開発に最適なArduinoボード