このプロジェクトでは、5つのRGB(赤緑青)LEDをArduinoUnoに接続します。これらのLEDは並列に接続されており、UnoのPIN使用量を削減します。
典型的なRGBLEDを下の図に示します。
図に示すように、RGBLEDには4つのピンがあります。
PIN1:カラー1のマイナス端子またはカラー1のプラス端子
PIN2:3色すべてに共通のポジティブまたは3色すべてに共通のネガティブ
PIN3:カラー2マイナス端子またはカラー2プラス端子
PIN4:カラー3マイナス端子またはカラー3プラス端子
したがって、RGB LEDには2つのタイプがあります。1つは一般的なカソードタイプ(一般的な負)で、もう1つは一般的なアノードタイプ(一般的な正)タイプです。CC(CommonCathodeまたはCommonNegative)には、各端子が色を表す3つの正の端子と、3色すべてを表す1つの負の端子があります。CC RGBLEDの内部回路は次のように表すことができます。
上記でREDをオンにする場合は、RED LEDピンに電力を供給し、コモンネガを接地する必要があります。同じことがすべてのLEDにも当てはまります。CA(CommonAnodeまたはCommonPositive)には、各端子が色を表す3つの負の端子と、3色すべてを表す1つの正の端子があります。CA RGB LEDの内部回路は、図のように表すことができます。
上記でREDをオンにする場合は、RED LEDピンを接地し、コモンプラスに電力を供給する必要があります。同じことがすべてのLEDにも当てはまります。
この回路では、CA(CommonAnodeまたはCommonPositive)タイプを使用します。5つのRGBLEDをArduinoに接続するには、通常5x4 = 20のPINが必要です。これにより、RGB LEDを並列に接続し、多重化と呼ばれる手法を使用して、このPINの使用量を8に減らします。
コンポーネント
ハードウェア: UNO、電源(5v)、1KΩ抵抗(3個)、RGB(赤緑青)LED(5個)
ソフトウェア: Atmel studio6.2またはAurdinoを毎晩。
回路と動作の説明
RGB LEDArduinoインターフェースの回路接続を 下図に示します。
ここで注意が必要な部分として、SET1の赤のLEDとSET2の緑のLEDをオンにします。UNOのPIN8とPIN9に電力を供給し、PIN7、PIN6を接地します。
そのフローでは、最初のSETにRED、2番目のSET ONにGREENがありますが、SET1にGREEN、SET2ONにREDがあります。簡単に類推すると、4つのLEDがすべて上記の構成で回路を閉じているため、すべてが点灯していることがわかります。
したがって、この問題を解消するために、一度に1つのSETのみをオンにします。t = 0m SECで、SET1がオンに調整されているとします。t = 1m SECで、SET1がオフに調整され、SET2がオンになります。再びt = 6m SECで、SET5がオフになり、SET1がオンになります。これは続きます。
ここでの秘訣は、人間の目は30HZを超える周波数をキャプチャできないということです。これは、LEDが30Hz以上の速度で連続的にオンとオフを切り替える場合です。目はLEDが継続的に点灯しているように見えます。ただし、そうではありません。LEDは常にオンとオフになります。この手法は多重化と呼ばれます。
簡単に言えば、1ミリ秒で5 SETの各共通カソードに電力を供給するので、5ミリ秒でサイクルが完了します。その後、サイクルはSET1から再び始まり、これは永遠に続きます。LEDセットのオンとオフが速すぎるため。人間は、すべてのSETが常にオンになっていると予測します。
したがって、t = 0ミリ秒でSET1に電力を供給すると、REDピンを接地します。t = 1ミリ秒で、SET2に電力を供給し、緑のピンを接地します(このとき、赤と青はHIGHに引き上げられます)。ループが速くなり、目は最初のセットで赤く光り、2番目のセットで緑に光ります。
これがRGBLEDのプログラム方法です。プログラムですべての色をゆっくりと発光させ、多重化がどのように機能するかを確認します。