任意の色は、赤、緑、青の3色で構成され、シンプルなRGBLEDを使用して任意の色を生成できます。ただし、RGB LEDの制限は、内部に3つの個別のLEDがあり、1つのRGBLEDを操作するにはマイクロコントローラーの3つのピンが必要なことです。そのため、1つのマイクロコントローラーで数百のLEDを接続することはできません。
この問題を克服するために、AdafruitはNeoPixelLEDストリップを作成しました。複数のRGBNeoPixelLEDを駆動するのに必要なピンは3つだけです。 2つのピンは電源とグランド用で、1つのピンはデータ入力(DI)用です。データINピンは、ストリップ内のさまざまなLEDを色、明るさなどでアドレス指定および制御するために使用されます。ただし、NeoPixelsを実行するにはマイクロコントローラーが必要です。 ArduinoはNeoPixelで非常に一般的に使用されているため、今日はNeoPixelLEDをArduinoとインターフェースする方法を学びます。 NeoPixelsについて詳しくは、AdaFruitをご覧ください。
このプロジェクトでは、ArduinoとTFTLCDタッチスクリーンを使用してNeoPixelLEDを制御しています。2.4インチTFTLCDに異なる色の7つのタッチボタンを作成しました。LCDの特定の色のボタンをタップすると、NeoPixelLEDストリップがそのボタンと同じ色で点灯します。ここでは、30個のLEDのNeoPixelデジタルRGBLEDストリップを使用しました。
NeoPixel RGB LEDは任意の色で点灯できるため、LCDにボタンを追加して、それらのボタンをタップするとLEDをより多くの色で点灯させることができます。コーディングを使用して、他の美しい効果やパターンを追加することもできます。NEOピクセルLEDを使用して完全なArduino制御の装飾システムを構築し、近くにあるLCDによってこのシステムを制御できます。
必要なコンポーネント:
- ArduinoMegaまたはその他のArduinoモデル
- SPFD5408コントローラーを備えた2.4インチTFTLCDシールド
- NeoPixel RGBLEDストリップ
- 接続線
- USBケーブルまたは12V1Aアダプター
回路接続:
接続NeoPixelsストリップArduinoのメガにNeoPixelのGNDにNeoPixelの5VピンとメガのGNDに単に接続Arduinoの5Vピン[接続NeoPixel DIピン(のデータ)のデジタルピンへのArduinoメガのない36ません。MEGAのGNDがLCDのGNDの下にあり、Arduinoの5VピンがLCDの5Vピンに接続するように、TFTLCDタッチシールドをArduinoに慎重に取り付けます。
Arduinoに接続する際にNeoPixelLEDストリップのGNDピンと5Vピンを交換しないように注意してください。交換すると、NeoPixelLEDストリップが損傷します。また、ここではArduino Megaを使用していますが、他のArduinoモデルを使用できることにも注意してください。
ArduinoからNeoPixelRGB LEDストリップへの接続:
Arduinoピン |
NeoPixelストリップのピン |
5v |
5v |
GND |
GND |
デジタルピン番号 36 |
DI(データ入力) |
作業説明:
ArduinoでのNeoPixelLEDの操作は非常に簡単です。NeoPixelLEDストリップを光らせたいLCDの任意の色のタッチボタンをタップするだけです。LEDはその色に応じて点灯します。コードは、Arduino Megaをリセットしなくても、このタスクを際限なく繰り返すことができるように記述されています。この記事の最後にあるコードとデモビデオを確認できます。
LCDのいずれかのボタンをタップすると、データがArduinoに送信され、ArduinoはさらにNeoPixelStripに指示を送信してそれに応じて点灯します。たとえば、NeoPixel LEDストリップは、LCDの緑色ボタンをタップすると緑色に点灯し、LEDストリップは赤色ボタンを押すと赤色に点灯します。
プログラミングの説明:
TFT LCDをArduinoとインターフェースするために、いくつかのライブラリを使用しました。すべてのライブラリは1つのrarファイルに含まれており、このリンクからダウンロードできます。「クローンまたはダウンロード」および「ZIPのダウンロード」ファイルをクリックして、Arduinoライブラリフォルダーに追加します。このライブラリは、TFTLCDが正しく機能するために必要です。
#include
ライブラリにあるサンプルコードを使用してArduinoを焼き付けて、TFT LCDをテストし、コードが正しく機能しているかどうかを確認する必要があります。最初にグラフィックステストをチェックし、次にキャリブレーションテスト、最後にペイントテストを行います。すべての機能がすべて正常に機能していることがわかった場合は、このチュートリアルに記載されているコードから始めてください。
また、NeoPixel RGB LEDストリップを適切に機能させるには、ここからダウンロードできるライブラリがもう1つ必要です。
#include
前述のように、MEGAのデジタルピン36は、以下のコードに示すように、NeoPixelLEDストリップのDIピンに接続されています。また、コードで記述されているように、ストリップ内のLEDの数は30です。
#define PIN 36 #define NUM_LEDS 30
LCDボタンの表示色はいくつかのコードで示されています。これらのコードは、LCDに応じて変更できます。
#define BLACK 0x0000 #define YELLOW 0x001F #define GREEN 0xF800 #define RED 0x07E0 #define CYAN 0x07FF #define MAGENTA 0xF81F #define BLUE 0xFFE0 #define WHITE 0xFFFF
サイズや位置などのボタンのいくつかのパラメーターは、コードで定義されています。
uint16_t width = 0; uint16_t高さ= 0; uint16_t x = 40; uint16_t y =高さ-20; uint16_t w = 75; uint16_t h = 20;
hパラメータは、LCDのボタンのサイズを調整するために使用されます。40にすると、ボタンのサイズが2倍になります。yパラメータはLCDのy座標です。
タッチボタンは、コードに示すように番号で示されます。
#define BUTTONS 9 #define BUTTON_Red 0 #define BUTTON_DarkRed 1 #define BUTTON_RED 2 #define BUTTON_DarkGreen 3 #define BUTTON_DeepRed 4 #define BUTTON_Blue 5 #define BUTTON_LightBlue 6 #define BUTTON_LightBlue1 7
次のようないくつかの関数は、NeoPixelから色を放出するために使用されます。
void EmitCyan(); void EmitWhite(); void EmitGreen(); void EmitYellow(); void EmitPink(); void EmitBlack();
特定の色に入力するデジタルRGB値を見つけるには、このリンクをたどることができます。NeoPixelストリップを輝かせたい色を入力し、その色のRGB値を見つけて、上記の関数に入力するだけです。
void initializeButtons() 関数は、ボタンにテキストと色を与えたり、LCDの必要な場所にボタンを配置したりするために使用されます。
void initializeButtons(){uint16_t x = 40; uint16_t y =高さ-20; uint16_t w = 75; uint16_t h = 40; uint8_t interval_x = 5………………。
void showCalibration() 関数は、LCDにボタンを描画するために使用されます。
void showCalibration(){tft.setCursor(40、0); for(uint8_t i = 0; i <8; i ++){buttons.drawButton(); }}
さらに、NeoPixelLEDストリップを希望の色で光らせるための完全なArduinoコードを以下に示します。コードは少し長いですが単純なので、コードを簡単に理解できます。