logo
Published on

Arduinoに「WS2812B」を接続し制御する

Authors
  • avatar
    Name
    Shou Kawakami / 川上翔
    Twitter

はじめに

Arduinoは様々なデバイスを制御するためのプラットフォームとして広く使われています。この記事では、カラフルなLEDライト「WS2812B」をArduinoに接続し、制御する方法について解説します。WS2812Bは、1つのチップにRGB LEDとドライバが内蔵されており、1本のデジタルピンで制御できる特徴があります。

※モジュールの価格を比較 ▶ TemuAliExpress楽天メルカリ

1. WS2812Bの概要

WS2812Bは、Neopixelとしても知られており、1本のデジタルピンから多くのWS2812Bを制御できる特長があります。各LEDは独自の色で点灯させ、アニメーションや効果を生成することができます。このデバイスは、Arduinoや他のマイコンボードとの組み合わせでクリエイティブなプロジェクトを実現するための素材として使われます。

2. WS2812Bの接続

WS2812Bは3本の線で構成されています。

  • VCC(赤色): 5Vの電源
  • GND(黒色): 接地
  • データ信号(緑色または白色): デジタルピン

これらを対応するArduinoのピンに接続します。VCCを5Vに、GNDをGNDに、データ信号をArduinoのデジタルピンに接続します。

3. Arduinoコードの作成

次に、Arduino IDEを開いてWS2812Bを制御するためのコードを書きます。WS2812Bを制御するためには、Adafruit NeoPixel ライブラリを使用します。

#include <Adafruit_NeoPixel.h>

#define PIN            6  // WS2812Bのデータ信号が接続されたデジタルピン
#define NUMPIXELS      16  // 使用するWS2812BのLEDの数

Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

void setup() {
  strip.begin();
  strip.show();  // 全てのLEDを初期化して消灯させる
}

void loop() {
  // ここに制御するコードを記述

  // 例: 全てのLEDを赤色に光らせる
  colorWipe(strip.Color(255, 0, 0), 50);
}

// 色を指定した数のLEDに順番に光らせる関数
void colorWipe(uint32_t color, int wait) {
  for(int i=0; i<strip.numPixels(); i++) {
    strip.setPixelColor(i, color);
    strip.show();
    delay(wait);
  }
}

このコードでは、16個のLEDが接続されていることを前提にしています。必要に応じてNUMPIXELSを変更してください。

4. コードのアップロードと動作確認

書いたコードをArduinoにアップロードし、WS2812Bが正しく制御されているか確認します。LEDが指定した色や効果で点灯すれば成功です。

これで、ArduinoにWS2812Bを接続し、様々なカラフルな光の演出を制御する基本的な手順が完了しました。実際のプロジェクトでは、この基本的なコードを拡張して、独自のLEDエフェクトやアプリケーションを作成することができます。