LEDマトリックス+モーションセンサードアディスプレイ[ArduinoHoliday]
コンポーネントと消耗品
> ![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
| × | 1 | ||||
![]() |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
| × | 3 |
必要なツールとマシン
> ![]() |
| |||
|
このプロジェクトについて
このプロジェクトは、3つのWS2812B 8x8 RGB LEDマトリックスとPIRモーションセンサーを組み合わせて、「Happy Holidays&HappyNewYear!」というテキストで訪問者を迎えます。ドアの近くにあり、センサーが近くにいる人を検出していないときに、モニターにスクリーンセーバーのような一連の効果を表示する場合。
Arduino UNOによって制御され、5v30a電源から電力が供給されます。
3セットのコードをキットバッシングまたは組み合わせました。
アイドル/スタンバイ効果のFastLEDライブラリDemoReel100の例からのもの。
PIRモーションセンサーコード
そして、Neopixelのセットアップコードだと思います。コードをマッシュポテトしたのはほぼ1か月前だったので、もうよくわかりません。
また、延長コードを介して12v RGB LEDストリングを備えた5vリレーに接続され、ArduinoNanoによって制御される別のPIRモーションセンサーを使用しました。
LEDストリングは、延長コードにも接続されているホリデーライトとともに、1番目のPIRセンサーが動きを検出するとアクティブになります。階段の1段目近くの天井にあります。
数歩上がった後、2番目のPIRセンサーは、誰かがドアの近くにいるときにマトリックスにテキスト表示を表示するようにUNOに指示します。
************************************************** ****************************
フォローするソーシャルメディアリンク(つまり、必要に応じて):
Facebook-https://fb.me/HeathenHacks
Twitter-https://twitter.com/HeathenHacks
Instagram-https://instagr.am/HeathenHacks
************************************************** ****************************


コード
- Arduino Holiday
Arduino Holiday Arduino
#includeFASTLED_USING_NAMESPACE#include #include #include #ifndef PSTR#define PSTR // Arduinoを幸せにする#endif#define PIN 6 //#if defined(FASTLED_VERSION)&&(FASTLED_VERSION <3001000)//#warning "FastLED3.1以降が必要です。最新のコードについてはgithubを確認してください。" //#endif#defineDATA_PIN 6#define LED_TYPE WS2811#define COLOR_ORDER GRB#define NUM_LEDS 192CRGB leds [NUM_LEDS]; const uint8_t kMatrixWidth =24; const uint8_t kMatrixHeight =8; const bool kMatrixSerpentineLayout =true; #define NUM_LEDS(kMatrixWidth * kMatrixHeight)#define MAX_DIMENSION((kMatrixWidth> kMatrixHeight) 50#define FRAMES_PER_SECOND 120 // 16ビットバージョンの座標uin t16_tcolors [] ={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)}; uint16_t speed =20; // upuint16_t scale =30;を開始すると、速度が動的に設定されます。 //開始するとスケールが動的に設定されますuint8_tnoise [MAX_DIMENSION] [MAX_DIMENSION]; CRGBPalette16 currentPalette(PartyColors_p); uint8_t colorLoop =1; int pirSensorPin =5; //入力ピンを選択します(PIRセンサー用)int pirState =true; //動きが検出されないと仮定して開始しますintval =0; //ピンステータスを読み取るための変数intminimummSecsLowForInactive =5000; //センサーがこの時間よりも低いと報告した場合//アクティビティがないと仮定しますlongunsigned int timeLow; boolean takeLowTime; //センサーにキャリブレーションを与える時間(データシートによると10〜60秒)intcalibrationTime =30; void setup(){delay(3000); //回復のための3秒の遅延// LEDストリップ構成についてFastLEDに通知FastLED.addLeds (leds、NUM_LEDS).setCorrection(TypicalLEDStrip); //FastLED.addLeds (leds、NUM_LEDS).setCorrection(TypicalLEDStrip); //マスター輝度制御を設定しますFastLED.setBrightness(BRIGHTNESS); matrix.setTextWrap(false); matrix.setBrightness(40); matrix.setTextColor(colors [0]); pinMode(pirSensorPin、INPUT); //センサーを入力として宣言LEDS.addLeds (leds、NUM_LEDS); x =random16(); y =random16(); z =random16();} int a =matrix.width(); int pass =0; //循環するパターンのリスト。それぞれが以下の個別の関数として定義されています。typedefvoid(* SimplePatternList [])(); SimplePatternList gPatterns ={rainbow、rainbowWithGlitter、confetti、sinelon、juggle、bpm、cylon}; uint8_t gCurrentPatternNumber =0; //パターンがcurrentuint8_tであるインデックス番号gHue =0; //多くのパターンで使用される「ベースカラー」の回転voidfadeall(){for(int i =0; i =6)pass =0; matrix.setTextColor(colors [pass]); } matrix.show(); delay(100); if(pirState){// pirState =false;をオンにしました。 } takeLowTime =true; } else {//現在のパターン関数を1回呼び出し、 'leds'配列を更新しますgPatterns [gCurrentPatternNumber](); // 'leds'配列を実際のLEDストリップに送信しますFastLED.show(); //フレームレートを適度に保つために遅延を挿入しますFastLED.delay(1000 / FRAMES_PER_SECOND); //定期的に更新を行いますEVERY_N_MILLISECONDS(20){gHue ++; //「ベースカラー」を虹にゆっくりと循環させます} EVERY_N_SECONDS(10){nextPattern(); //パターンを定期的に変更します}}}#define ARRAY_SIZE(A)(sizeof(A)/ sizeof((A)[0]))void nextPattern(){//現在のパターン番号に1を追加し、 end gCurrentPatternNumber =(gCurrentPatternNumber + 1)%ARRAY_SIZE(gPatterns);} void rainbow(){// FastLEDの組み込みレインボージェネレータfill_rainbow(leds、NUM_LEDS、gHue、7);} void rainbowWithGlitter(){//組み込みFastLEDレインボー、およびランダムなキラキラ光るレインボー(); addGlitter(80);} void addGlitter(fract8 couldOfGlitter){if(random8() =0; i-){// i番目のLEDを赤に設定leds [i] =CHSV(hue ++、255、255); // LEDを表示しますFastLED.show(); // LEDを表示したので、i番目のLEDを黒にリセットします// leds [i] =CRGB ::Black;およびfadeall(); //少し待ってからループし、もう一度やり直しますdelay(10); }}
回路図

製造プロセス