工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

ArduinoとExcelで制御する8×8・16×16 WS2812 RGB LEDマトリックスアニメーション

部品と材料

部品数量備考
Arduino UNO1
WS2812 8×8 RGB LEDマトリックス1
ジャンパーワイヤー(オス/メス)3黒-GND、赤-5V、緑-Data
9V電池(汎用)1
9V-バレルジャック変換コネクター1
メスヘッダー 5ピン 1列 ロング(0.1インチ)1実際は3ピンのみ使用

必要な工具と機器

プロジェクト概要

WS2812 8×8 RGB LEDマトリックスを購入した際、従来のXY座標系でアドレス指定できると思いきや、64個のLEDが8行×8列のデイジーチェーン構造になっていることに気づきました。Kevin Darrah氏のExcelユーティリティ(本来16×16用)を8×8配列向けに改造し、スプレッドシートとArduinoスケッチの両方を修正することで、外部ライブラリ不要でLEDアニメーションをプログラミングできる汎用ツールを作成しました。

更新版ExcelブックLED_Utility.xlsmの機能:

以下にハードウェア構築、Excelユーティリティ設定、Arduinoスケッチ書き込みの手順をステップバイステップで解説。各プロジェクトは前回を基盤とし、ループ、条件分岐、モジュール関数などの概念を順次導入します。

ハードウェア組み立て

5ピンヘッダーで8×8マトリックスをArduino UNOに接続:

  1. DIN → Arduinoピン8
  2. +5V → 5Vピン
  3. GND → GNDピン
ArduinoとExcelで制御する8×8・16×16 WS2812 RGB LEDマトリックスアニメーション

このセットアップでは座標(0,0)がマトリックスの左上隅を指します。

Excelユーティリティ概要

LED_Utility.xlsmを開くと3シートあります:

ブックは誤操作防止のため読み取り専用設定。コード生成後はファイル→名前を付けて保存で作業を保存してください。

ArduinoとExcelで制御する8×8・16×16 WS2812 RGB LEDマトリックスアニメーション

Eightシートの主な機能:

各ボタンがカスタムmapLEDXY()関数向けにフォーマットされたC++コードブロックを生成。XY座標をWS2812マトリックス特有のジグザグ配線パターンに対応した線形配列インデックスへ変換します。

Arduinoスケッチ

コアスケッチ(LED_Arduino.ino)の主要要素:

// ピン定義
#define WS2812_pin 8
// LED総数
#define numberOfLEDs 64
// RGBバッファ(LEDあたり3バイト)
byte RGB[192];

// 前方宣言
void RGB_update(int LED, byte RED, byte GREEN, byte BLUE);
void mapLEDXY(int x, int y, byte RED, byte GREEN, byte BLUE);
void clearLEDs();

mapLEDXY()ルーチンが座標ペアを線形配列にマッピングし、WS2812マトリックスで一般的なジグザグ配線パターンを考慮します。

生成コードをloop()関数にコピーしてアップロードすれば、マトリックスが即座に指示に応答します。

プロジェクト1:静的な赤い正方形

座標(2,2)〜(4,4)に3×3の赤い正方形を作成。Excelで該当セルを赤255、緑/青0に設定。生成コードをスケッチ40行目に貼り付け:

mapLEDXY(2,2,255,0,0);mapLEDXY(2,3,255,0,0);mapLEDXY(2,4,255,0,0);
mapLEDXY(3,2,255,0,0);mapLEDXY(3,3,255,0,0);mapLEDXY(3,4,255,0,0);
mapLEDXY(4,2,255,0,0);mapLEDXY(4,3,255,0,0);mapLEDXY(4,4,255,0,0);

アップロードして正方形が点灯することを確認。グリッドクリア、色変更、枠線追加などで実験可能。

プロジェクト2:二色正方形

スケッチをColour_Sq.inoとして複製し、Excelでより大きな第2の正方形を作成。Showボタンでコード生成しスケッチに貼り付け。シンプルなdelay()とclearLEDs()で2形状を切り替え表示。

プロジェクト3:成長する正方形

Grow.inoで内側の小さな正方形を設計し、好みの色で外枠を追加。内側正方形の値を削除し、外枠コードを生成して両ブロックをスケッチに貼り付け。拡大・収縮アニメーションする正方形が完成。

プロジェクト4:螺旋アニメーション

複雑なパターンは各フレームを別関数にカプセル化し、loop()から呼び出し。サンプルSpiral.inoは5つのヘルパー関数で5層の螺旋を構築。メインループを簡潔に保ち、将来の編集も容易に。

プロジェクト5:可変輝度ループ

forループで輝度をアニメーション:

for (int r=0; r<256; r++) {
  mapLEDXY(3,3,r,0,0);mapLEDXY(3,4,r,0,0);
  mapLEDXY(4,3,r,0,0);mapLEDXY(4,4,r,0,0);
  RGB_update(-1,0,0,0); delay(50);
}
for (int r=255; r>=0; r--) {
  mapLEDXY(3,3,r,0,0);mapLEDXY(3,4,r,0,0);
  mapLEDXY(4,3,r,0,0);mapLEDXY(4,4,r,0,0);
  RGB_update(-1,0,0,0); delay(50);
}

正方形が自動的にフェードイン・アウト。

プロジェクト6:フェードする枠線

forループと共有変数gで周囲の枠線をフェード:

for (int g=0; g<256; g++) {
  b=g;
  mapLEDXY(...); // 枠線セル
  RGB_update(-1,0,0,0); delay(50);
}
for (int g=255; g>=0; g--) {
  b=g;
  mapLEDXY(...); // 枠線セル
  RGB_update(-1,0,0,0); delay(50);
}

ブルーチャンネルがグリーンを追従し、滑らかなフェードを生成。

プロジェクト7:色遷移

if文で中間枠線セルを緑から黄色へ変化(閾値超過時):

for (int r=0; r<256; r++) {
  g=r;
  if (g>64) { g=65; l=r; }
  mapLEDXY(...); // セル群
  RGB_update(-1,0,0,0); delay(50);
}

閾値を変えて多様な効果を実験可能。

プロジェクト8:移動する矢印

X座標をパラメータ化して移動する矢印を生成:

for (int x=0; x<8; x++) {
  mapLEDXY((x+0)%8,3,0,255,255);
  mapLEDXY((x+1)%8,1,255,128,128);
  mapLEDXY((x+1)%8,3,0,255,255);
  mapLEDXY((x+1)%8,5,255,128,128);
  mapLEDXY((x+2)%8,2,255,128,128);
  mapLEDXY((x+2)%8,3,0,255,255);
  mapLEDXY((x+2)%8,4,255,128,128);
  mapLEDXY((x+3)%8,3,255,128,128);
  RGB_update(-1,0,0,0); delay(100);
}

スプレッドシートのWrap Map機能で座標オーバーフローを処理。

16×16マトリックスでの使用

上記概念すべてが16×16マトリックスに直接適用可能。LED_Arduino.inoをLED_Arduino16.inoに置き換え、ブックのSixteenシートに切り替え。必要な調整はnumberOfLEDs定義とmapLEDXY()内のRGBlocation計算のみ。

拡張とヒント

本ガイドは8×8と16×16に焦点を当てていますが、同手法で他サイズ(例:8×32)にも適用可能。新サイズごとにnumberOfLEDs定数を更新し、マトリックス配線パターンに合わせてインデックス計算を修正。ブックは読み取り専用モードで保管し、誤削除を防止。消費電力が懸念ならArduino Nano等の小型ボードへの移植も検討を。

製造プロセス

  1. Arduino Nano 33 IoT製 フライトシミュレーター2020用コックピットパネル - LCD&CDI表示
  2. Microsoft Flight Simulator 2020用Arduinoスイッチ&LEDパネル
  3. ArduinoとExcelで制御する8×8・16×16 WS2812 RGB LEDマトリックスアニメーション
  4. 「Go Away Robot」を作ろう:子供向け簡単Arduinoスターターキット
  5. アナログ3ピンで4×3キーパッドを接続 - Arduinoピン節約テクニック
  6. 2020年を形作るトップ3デジタル製造トレンド
  7. 中小企業が国際展開を成功させるためのトップ3戦略
  8. 小売業者が1年間の混乱から学ぶべき3つの必須教訓
  9. 産業機器メンテナンス&安全の必須3ヒント
  10. 重工業機器購入の必須ガイド:失敗しない3つの実証済み戦略
  11. グローバルIoTを守る:3つの必須ステップ