2015年11月17日

RGBフルカラーLEDでLチカ

スイッチサイエンスで購入したNeoPixel スルーホールLED(半透明 5mm 5個入りパック)でLチカしてみました。

NeoPixelスルーホールLED

NeoPixel スルーホールLEDはフルカラーLEDです。フルカラーLEDはアナログ出力とデジタル出力のものがありますが、デジタル出力のものは、アナログ出力のものに比べて必要とするピン数が少ないのでお勧めです。また、NeoPixel スルーホールLEDは、内部のチップが電流を制御してくれるため抵抗をつける必要はありません。

NeoPixel スルーホールLEDは、長いピンの左側がGND、短いピンの左側が5V、右側がData inです。Data outはLEDを光らせるだけであれば使用する必要はありません。Arduinoでプログラミングを書き込まなくても、5VとGNDに配線されていれば、電流が供給されるため青く光ります。

NeoPixel スルーホールLEDを制御するには、GitHubにアップされているライブラリソフトを使用します。

ライブラリのインストール方法はGitHubのページの下に書いてあります。
ライブラリーをダウンロードしたら、フォルダー名を「Adafruit_NeoPixel」に変更し、ArduinoのLibrariesフォルダに移動して、Arduinoを再起動します。

サンプルファイルは「examples > simple > simple.no」のソースコードを見れば大丈夫です。

● RGBLed.ino

一番簡単なコードは下記になります。

#include <Adafruit_NeoPixel.h>

//LEDの数
#define NUMPIXELS 1
//Arduinoで使うピン
#define RGBLed_PIN 8 

//ライブラリのセットアップ
Adafruit_NeoPixel RGBLed = Adafruit_NeoPixel(NUMPIXELS,RGBLed_PIN,NEO_RGB + NEO_KHZ800);

void setup()
{
  RGBLed.begin();

  //輝度の設定(0〜255)
  RGBLed.setBrightness(255);

  //RGBの設定(0番目のLEDのカラー設定、R:255、G:0、B:0)
  RGBLed.setPixelColor(0,255,0,0);

  RGBLed.show();
}

void loop(){}

● RGBLed_2.ino

LEDを3個制御するコードは下記になります。

LEDを3個制御する場合、GNDと5Vへの配線はまとめる必要があります。あとはDIGITAL8、9、10から各LEDのData inに配線します。

#include <Adafruit_NeoPixel.h>

//LEDの数
#define NUMPIXELS 1
//Arduinoで使うピン
#define RGBLed_PIN_1 8
#define RGBLed_PIN_2 9
#define RGBLed_PIN_3 10
 
//ライブラリのセットアップ(こうすることでLEDを個別に制御できます。)
Adafruit_NeoPixel RGBLed_1 = Adafruit_NeoPixel(NUMPIXELS,RGBLed_PIN_1,NEO_RGB + NEO_KHZ800);
Adafruit_NeoPixel RGBLed_2 = Adafruit_NeoPixel(NUMPIXELS,RGBLed_PIN_2,NEO_RGB + NEO_KHZ800);
Adafruit_NeoPixel RGBLed_3 = Adafruit_NeoPixel(NUMPIXELS,RGBLed_PIN_3,NEO_RGB + NEO_KHZ800);
Adafruit_NeoPixel RGBLED_arr[] = {RGBLed_1,RGBLed_2,RGBLed_3};

void setup()
{
  //LEDを消灯(こうするとLEDが消える)
  for(int i=0; i<3; i++){
    RGBLED_arr[i].begin();
    RGBLED_arr[i].show();
  }
}

void loop()
{
  //RGBカラーのランダム値を生成
  int colorRnadNum1,colorRnadNum2,colorRnadNum3; 
  colorRnadNum1 = random(255);
  colorRnadNum2 = random(255);
  colorRnadNum3 = random(255);
  
  //LEDを順番にフェードインしながら点灯
  for(int i=0; i<3; i++){
    
    for(int j=0; j<255; j++){
       RGBLED_arr[i].setPixelColor(0,colorRnadNum1,colorRnadNum2,colorRnadNum3);
       RGBLED_arr[i].setBrightness(j);
       RGBLED_arr[i].show(); 
       delay(10);
    }
  }
}
  • このエントリーをはてなブックマークに追加
前の記事へ

FAB BASIC PROGRAM 課題作品発表会

次の記事へ

BLE NanoでiOSアプリとBluetooth通信(BLE Nano編)