フルカラーLEDを使う

フルカラーLED(NeoPixel)の使い方を学びます。

パーツの組立
 フルカラーLEDのGND端子に黒線を、VDD端子に赤線を、DI端子に白線をハンダ付けします。裏面にあらかじめハンダをのせておくとやりやすい。端子の反対側にピンヘッダーをハンダ付けして完成。収縮チューブで補強しておくと折れにくい。
マイコン内蔵RGBLEDモジュール

フルカラーLEDの接続
 下記のようにLEDを接続します。
フルカラーLED R→Arduino 3.3V
フルカラーLED B→Arduino GND
フルカラーLED W→Arduino 13

プログラム:ColorLED
 カラーLEDの制御には、Adafruit_NeoPixelライブラリを用います(ライブラリのインストール方法は動画をご覧ください)。プログラム冒頭で、デジタルポートの13番を制御用に使うこと、LEDの数が1個であることを定義しています。プログラムは、setup関数で初期化を行い、loop関数でLEDの点灯を処理しています。色のセットは、pixels.clear→pixels.setPixelColor→pixels.showの順で行います。pixels.Color(R, G, B)の形式で、色の強さは0~255で指定します。

 

//カラーLEDを用い、赤・緑・青色を点灯
#include <Adafruit_NeoPixel.h>
#define PIN 13        //制御用ピン
#define NUMPIXELS 1   //LEDの数
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
 
void setup() {
  pixels.begin();     //LEDを初期化
}
 
void loop() {
  pixels.clear();
  pixels.setPixelColor(0, pixels.Color(20, 0, 0));  //赤
  pixels.show();
  delay(1000);    //1000ms停止
 
  pixels.clear();
  pixels.setPixelColor(0, pixels.Color(0, 20, 0));  //緑
  pixels.show();
  delay(1000);    //1000ms停止
 
  pixels.clear();
  pixels.setPixelColor(0, pixels.Color(0, 0, 20));  //青
  pixels.show();
  delay(1000);    //1000ms停止
}

プログラム:SmoothR
 プログラムを使い、赤色のみをスムースに点滅させます。

//カラーLEDを用い赤色をスムースに点滅
#include <Adafruit_NeoPixel.h>
#define PIN 13        //制御用ピン
#define NUMPIXELS 1   //LEDの数
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
  
void setup() {
  pixels.begin();     //LEDを初期化
}
  
void loop() {
  int t=5;

  for(int i=0;i<256;i++){ 
    pixels.setPixelColor(0, pixels.Color(i,0,0)); //Red 
    pixels.show(); 
    delay(t); 
  } 

  for(int i=0;i<256;i++){ 
    pixels.setPixelColor(0, pixels.Color(255-i,0,0)); //Red 
    pixels.show(); 
    delay(t); 
  } 
}

プログラム:VRLED
可変抵抗を使ってLEDの色を変えます。その際、接続は下記の通り。

可変抵抗R→Arduino 5V
可変抵抗B→Arduino GND
可変抵抗W→Arduino A0
フルカラーLED R→Arduino 3.3V
フルカラーLED B→Arduino GND
フルカラーLED W→Arduino 13

 

//可変抵抗でカラーLEDの色を変える
#include <Adafruit_NeoPixel.h>
#define PIN 13        //制御用ピン
#define NUMPIXELS 1   //LEDの数
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
int vr1;

void setup() {
  pixels.begin();     //LEDを初期化
}
  
void loop() {
  vr1= analogRead(0);
  
  pixels.setPixelColor(0, pixels.Color(vr1/4,0,255-vr1/4));
  pixels.show();
  delay(10); 

}

コメントを残す