ESP32でWS2812(NeoPixel)を使う方法
こんにちは!
今回は同時に複数のフルカラーLEDを駆動できるWS2812をESP32で駆動してみましたので、方法を紹介します。
参考
必要な部品
- ESP32
- WS2812
- ジャンパワイヤ
WS2812は単体のRGBLEDチップの名称で、それが1ボードに複数載ったタイプが販売されています。有名なものは「NeoPixel」という名前がついていて、これが大本の販売ブランドのようです。(互換品もたくさんあります)
WS2812のはんだづけ
今回購入したWS2812にはリード線が付いていなかったので、下記画像のように3本はんだ付けをしました。
必要なのはこの3本のみ。
- GND: 回路の0V
- VCC: 回路の5V
- IN: 信号線
かなり雑ですが、これをピンヘッダにも取り付けてブレッドボード用にしてみました!
回路
今回の例ではGPIO27をWS2812のINに接続しています。
VDDはESP32の5Vピンに、VSS(GND)はGNDに接続しましょう。
ライブラリのインストール
ライブラリマネージャーからNeoPixelのライブラリを探し、インストールします。
サンプルプログラム
以下のプログラムは、ライブラリ付属のサンプルプログラムを今回の回路用に変更したものです。
#include <Adafruit_NeoPixel.h>
#define PIN 27 //INが接続されているピンを指定
#define NUMPIXELS 7 //LEDの数を指定
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); //800kHzでNeoPixelを駆動
void setup() {
pixels.begin(); //NeoPixelを開始
}
void loop() {
pixels.clear(); //NeoPixelの出力をリセット
for(int i=0; i<NUMPIXELS; i++) { //LEDを1つずつ制御
pixels.setPixelColor(i, pixels.Color(60-8*i, i*10, i*8)); //LEDの色を設定
pixels.show(); //LEDに色を反映
delay(500); //500ms待機
}
}
プログラム解説
NeoPixelの設定
#include <Adafruit_NeoPixel.h>
#define PIN 27 //INが接続されているピンを指定
#define NUMPIXELS 7 //LEDの数を指定
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); //800kHzでNeoPixelを駆動
Adarfuite_NeoPixelでpixelsという名前のインスタンスを作成します。
引数は3つで、pixels(LEDの数,INをつないだピンの番号,設定);
とします。設定に関しては公式のGithubリポジトリを参照してください。
基本的な点灯
pixels.begin();
pixels.clear(); //NeoPixelの出力をリセット
pixels.setPixelColor(LEDの番号, pixels.Color(R,G,B)); //LEDの色を設定
pixels.show(); //LEDに色を反映
この4つの関数が基本となります。
pixels.setPixelColor()
でセットした色は、pixels.show();
をしなければ実際の色に反映されません。
まとめ・その他の情報
かなり簡単なインターフェースで複数のLEDを操作できますね!
NeoPixelはライブラリが豊富で、サンプルプログラムにも面白いものが多くあります。チェックして応用してみると面白いですよ(/・ω・)/
目次
ESP32でWS2812(NeoPixel)を使う方法
こんにちは!
今回は同時に複数のフルカラーLEDを駆動できるWS2812をESP32で駆動してみましたので、方法を紹介します。
参考
必要な部品
WS2812は単体のRGBLEDチップの名称で、それが1ボードに複数載ったタイプが販売されています。有名なものは「NeoPixel」という名前がついていて、これが大本の販売ブランドのようです。(互換品もたくさんあります)
WS2812のはんだづけ
今回購入したWS2812にはリード線が付いていなかったので、下記画像のように3本はんだ付けをしました。
必要なのはこの3本のみ。
かなり雑ですが、これをピンヘッダにも取り付けてブレッドボード用にしてみました!
回路
今回の例ではGPIO27をWS2812のINに接続しています。
VDDはESP32の5Vピンに、VSS(GND)はGNDに接続しましょう。
ライブラリのインストール
ライブラリマネージャーからNeoPixelのライブラリを探し、インストールします。
サンプルプログラム
以下のプログラムは、ライブラリ付属のサンプルプログラムを今回の回路用に変更したものです。
プログラム解説
NeoPixelの設定
Adarfuite_NeoPixelでpixelsという名前のインスタンスを作成します。
引数は3つで、
pixels(LEDの数,INをつないだピンの番号,設定);
とします。設定に関しては公式のGithubリポジトリを参照してください。基本的な点灯
この4つの関数が基本となります。
pixels.setPixelColor()
でセットした色は、pixels.show();
をしなければ実際の色に反映されません。まとめ・その他の情報
かなり簡単なインターフェースで複数のLEDを操作できますね!
NeoPixelはライブラリが豊富で、サンプルプログラムにも面白いものが多くあります。チェックして応用してみると面白いですよ(/・ω・)/