7
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

obnizでNeoPixel LEDテープを制御する~光るサンタ帽子の制作~

Posted at

概要

 イルミネーションを見て、光る何かを作りたい衝動にかられ光るサンタ帽子を作りました!サンタ帽子を作るにあたり、光り方を自分で制御できたら面白いのでobniz(マイコンボード)をから点灯制御してみました。

【実際の様子】

構成

 構成は次のようになっています。
image.png

 NeoPixel LEDテープの電源を直接モバイルバッテリから取る事により、点灯可能なLEDの個数を増やしています。LED個数や電力の計算は後述の「技術的なところ」で解説します。

部材一覧

今回使用したのはこちら
image.png

  • obniz board
    obniz Board
    image.png

  • microUSBケーブル
    ダイソー 110円

技術的なところ

回路

 電源供給についてこちらに記述していきます。obniz boardは各端子から電源供給可能です。供給可能な電源は5V1A。つまり**5Wまで駆動できます。
Neo Pixel LEDテープの仕様を見ると
最大10W**。単純計算で、50cmまでしか駆動できません。
image.png

 サンタ帽子に巻き付けるとすると、LEDテープの長さは人の頭のサイズ(頭囲)が関係してきます。頭囲についてはこちらを参考にしました。
 
 頭囲の平均は男性で57cm、女性で55cm。ということで、obnizから駆動可能な長さ50cmを超えてしまっています。

 obniz boardの端子からの供給では駆動できないので、USBケーブルから直接電源を取るようにしています。こうすることで、駆動可能なLEDの個数を外部電源依存にできます。

プログラム

 obnizのプログラムは次のようになっています。

<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
    <link rel="stylesheet" href="/css/starter-sample.css">
    <script src="https://obniz.io/js/jquery-3.2.1.min.js"></script>
    <script src="https://unpkg.com/obniz@2.5.0/obniz.js" crossorigin="anonymous"></script>
  </head>
  <body>

    <div id="obniz-debug"></div>
    <div class="led">
      <h3 class="text-center">Turning on a LED</h3>
      <button class="btn btn-primary" id="yellow">Yellow</button>
      <button class="btn btn-outline-primary" id="blue">Blue</button>
      <button class="btn btn-outline-primary" id="stop">stop</button>
    </div>

    <script>
      var obniz = new Obniz("OBNIZ-ID");
      obniz.onconnect = async function () {
        obniz.display.clear();
        obniz.display.print("Hello World");

        var led = obniz.wired("WS2812B", {din: 3});

        const max_num = 80;
        var ledarry = new Array(max_num);
        var f_color = 0;

        $('#yellow').click(function () {
          for(i=0; i< max_num; i++){
            ledarry[i] = [0xFF, 0xFF, 0x00];
          }
          obniz.display.clear();
          obniz.display.print("ON");
          led.rgbs(ledarry);
        });
        $('#blue').click(function () {
          for(i=0; i< max_num; i++){
            ledarry[i] = [0x00, 0x00, 0xFF];
          }
          obniz.display.clear();
          obniz.display.print("OFF");
          led.rgbs(ledarry);
        });
        $('#stop').click(function () {
          for(i=0; i< max_num; i++){
            ledarry[i] = [0x00, 0x00, 0x00];
          }
          obniz.display.clear();
          obniz.display.print("OFF");
          led.rgbs(ledarry);
        });
      };
    </script>
  </body>
</html>

次の行でLEDテープの信号線を接続する端子を設定しています

var led = obniz.wired("WS2812B", {din: 3});

次の行でLEDの個数と配列を定義しています

const max_num = 80;
var ledarry = new Array(max_num);
var f_color = 0;

次の行で押したボタンに応じた色に点灯させています

     $('#yellow').click(function () {
          for(i=0; i< max_num; i++){
            ledarry[i] = [0xFF, 0xFF, 0x00];
          }
          obniz.display.clear();
          obniz.display.print("ON");
          led.rgbs(ledarry);
        });
        $('#blue').click(function () {
          for(i=0; i< max_num; i++){
            ledarry[i] = [0x00, 0x00, 0xFF];
          }
          obniz.display.clear();
          obniz.display.print("OFF");
          led.rgbs(ledarry);
        });
        $('#stop').click(function () {
          for(i=0; i< max_num; i++){
            ledarry[i] = [0x00, 0x00, 0x00];
          }
          obniz.display.clear();
          obniz.display.print("OFF");
          led.rgbs(ledarry);
        });

LEDの配列に色データ(赤、緑、青)を指定することでLED1つ1つの色を指定できます。

終わりに

 ピカリ館はいいぞ。

7
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?