/a/センサー
Published on

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

1384文字3分で読めます–––
閲覧数
Authors
  • avatar
    Name
    将 有坂
    short bio
    ラズパイやArduinoで電子工作をしてます。

はじめに

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

※ センサー類を安く買うなら → AliExpress 🛒 早く届くのが良ければ → Amazon 🚚

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エフェクトやアプリケーションを作成することができます。

※ センサー類を安く買うなら → AliExpress 🛒 早く届くのが良ければ → Amazon 🚚
avatar

将 有坂

電子部品専門家 / ラズベリーパイのプロ / 数多くのセンサーやモジュールの導入実績
ラズベリーパイやArduinoの電子工作に関わるソフトウェアエンジニア。これまで100種類以上のセンサーやモジュールの導入を行い、その知識と経験を活かして、多くの人々に電子工作の楽しさを伝えることを使命としている。

タグ ->