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

PIRセンサー連動 インタラクティブLEDマトリクスドアディスプレイ - ホリデーグリーティング

必要なパーツと材料

パーツ数量備考
Arduino UNO1メイン制御(3枚マトリクス制御)
Arduino Nano R31階段センサー・LEDストリップ制御用
PIR人感センサー2玄関前用、階段用
5V リレー112V LEDストリップ制御用
8×8 NeoPixelパネル (WS2812B)3横24×縦8ドットマトリクス構成
RGB LEDストリップ112V、延長コード経由でリレー制御
PC電源ケーブル(5V 30A電源用)1
ジャンパーワイヤー1式

必要なツール

プロジェクト概要

3枚の8×8 NeoPixelマトリクス(計192 LED)とPIRセンサーを組み合わせ、訪問者を「Happy Holidays & Happy New Year!」のスクロールテキストで出迎えるドアディスプレイ。無人時はスクリーンセーバーのように多彩なLEDエフェクトを再生します。

2段階センサー構成

  1. 階段付近(Nano制御): 最初のPIRセンサーが動きを検知 → リレー経由で12V LEDストリップと既存イルミネーションを点灯
  2. 玄関前(UNO制御): 2番目のPIRセンサーが近接検知 → 3枚マトリクスにテキストスクロール表示

ソフトウェア構成

以下のコードを統合・改造:

Arduino UNO コード(メインディスプレイ制御)

#include <FastLED.h>
#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>

#define DATA_PIN 6
#define LED_TYPE WS2811
#define COLOR_ORDER GRB
#define NUM_LEDS 192  // 24x8
#define BRIGHTNESS 50
#define FRAMES_PER_SECOND 120

CRGB leds[NUM_LEDS];
Adafruit_NeoMatrix matrix = Adafruit_NeoMatrix(24, 8, DATA_PIN,
  NEO_MATRIX_TOP + NEO_MATRIX_RIGHT + NEO_MATRIX_COLUMNS + NEO_MATRIX_PROGRESSIVE,
  NEO_GRB + NEO_KHZ800);

const uint16_t colors[] = {
  matrix.Color(255,0,0), matrix.Color(0,255,0), matrix.Color(0,0,255),
  matrix.Color(0,255,255), matrix.Color(255,0,255), matrix.Color(255,255,0), matrix.Color(255,255,255)
};

int pirPin = 5;
bool pirState = true;  // 初期状態:動きなし
int textPos = 24;      // スクロール開始位置
int colorIdx = 0;
unsigned long lastEffectChange = 0;

void setup() {
  delay(3000);
  FastLED.addLeds<LED_TYPE, DATA_PIN, COLOR_ORDER>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip);
  FastLED.setBrightness(BRIGHTNESS);
  
  matrix.setTextWrap(false);
  matrix.setBrightness(40);
  matrix.setTextColor(colors[0]);
  
  pinMode(pirPin, INPUT);
}

void loop() {
  int val = digitalRead(pirPin);
  
  if (val == HIGH) { // 動き検知 → テキスト表示
    matrix.fillScreen(0);
    matrix.setCursor(textPos, 0);
    matrix.print(F("Happy Holidays & Happy New Year!"));
    
    if (--textPos < -200) { // テキスト幅に合わせてリセット
      textPos = matrix.width();
      if (++colorIdx >= 7) colorIdx = 0;
      matrix.setTextColor(colors[colorIdx]);
    }
    matrix.show();
    delay(100);
    
    if (pirState) pirState = false; // 状態遷移
  } else { // 無人時 → エフェクト再生
    // FastLED内蔵パターンを順次実行
    static uint8_t pattern = 0;
    static uint8_t gHue = 0;
    
    switch (pattern) {
      case 0: rainbow(); break;
      case 1: rainbowWithGlitter(); break;
      case 2: confetti(); break;
      case 3: sinelon(); break;
      case 4: juggle(); break;
      case 5: bpm(); break;
      case 6: cylon(); break;
    }
    
    FastLED.show();
    FastLED.delay(1000 / FRAMES_PER_SECOND);
    
    EVERY_N_MILLISECONDS(20) { gHue++; }
    EVERY_N_SECONDS(10) { pattern = (pattern + 1) % 7; }
  }
}

// 以下、FastLED標準エフェクト関数群(rainbow, confetti, sinelon, bpm, juggle, cylon等)
// DemoReel100例から抜粋・適応
void rainbow() { fill_rainbow(leds, NUM_LEDS, gHue, 7); }
void rainbowWithGlitter() { rainbow(); addGlitter(80); }
void addGlitter(fract8 chance) { if (random8() < chance) leds[random16(NUM_LEDS)] += CRGB::White; }
void confetti() { fadeToBlackBy(leds, NUM_LEDS, 10); leds[random16(NUM_LEDS)] += CHSV(gHue + random8(64), 200, 255); }
void sinelon() { fadeToBlackBy(leds, NUM_LEDS, 20); leds[beatsin16(13, 0, NUM_LEDS-1)] += CHSV(gHue, 255, 192); }
void bpm() { /* 省略 */ }
void juggle() { fadeToBlackBy(leds, NUM_LEDS, 20); for(int i=0;i<8;i++) leds[beatsin16(i+7,0,NUM_LEDS-1)] |= CHSV(i*32,200,255); }
void cylon() { /* 省略 */ }
void fadeall() { for(int i=0;i

回路図

PIRセンサー連動 インタラクティブLEDマトリクスドアディスプレイ - ホリデーグリーティング

ソーシャルメディア

製造プロセス

  1. 自作LUMAZOID:Arduino音楽ビジュアライザーDIYガイド
  2. DHT11温湿度センサーで作る温度アラート – LEDとピエゾブザーで視覚/聴覚通知
  3. 川の健康を見守る:Arduinoベース水質監視システム「MyRiver」
  4. Arduinoでシンプルな障害物センサーを自作 – IR LEDとフォトダイオード入門
  5. ArduinoとBluetoothで作るスマート紛失防止タグ「Find Me」
  6. スマートArduino四足歩行ロボットの製作:ステップバイステップガイド
  7. Arduino Nanoで作るスマートな動体検知水鉄砲
  8. Arduino超音波センサーとProcessingで作るリアルタイム距離測定ソナー
  9. Arduino Nanoで自作オシロスコープ(10Hz〜50kHz)128×64 LCD搭載
  10. Arduino Nanoで作る8×8 LEDマトリックスのフリップクロック - 自作リアルタイムクロック
  11. Arduino Unoで8×8 LEDマトリックスを制御:ステップバイステップガイド