秋月電子に売られているWS2812C-2020の解説をしていきます。
akizukidenshi.com
WS2812C-2020にはマイコンが内蔵されており、
信号を送ることで複数のLEDを制御することができます。
色は緑、赤、青のLEDがチップ上にあり各色0~255の256段階で制御することができ、
端子にはDO、GND、DI、VDD4つの端子がついています。
VDDには+3.7V~5.3Vを供給します。
DIはデータを入力する部分になり、ここに自前で用意したマイコン等から信号を入れることになります。
DOはデータの出力となりますが、このDOの先につなぐのは次のLEDのDIになります。
下図のように繋ぐことで複数のLEDを制御していきます。
WS2812C-2020との通信線は1本しかなく、データを送るだけの一方通行の通信となります。通信の1と0の信号を送るための違いはHighとLowで1bit分の信号となり、Highの時間を220nS~380nSの間で立ち上げると0判定になり、580nS~1μSの間で立ち上げると1と判定されます。Lowの時間は580~1μSの時間固定となります。
データは1つのLEDに対して24bitで構成されています。
24bitの内訳は緑8bit、赤8bit、青8bitです。
複数のLEDを制御する場合は24bitのデータを送った後、280μS以内に次の24bitデータを送ることで2つ目のLEDを制御することができます。280μSより間隔をあけてしまうとデータが区切られたと判断されてしまい、次にデータを送った時には1個目から制御が始まってしまいます。
データシートにSend data at speeds of 800Kbps.と通信速度は800kbpsと記載されていますが、1bitあたりHighの220ns~380nsとLowの580ns~1µsを足し合わせて大体1.25μSということで800kbpsと記載されているようです。マイコンのI/Oポートで出力しようとした場合、0のデータを送るためにHighを220ns~380nsを出力しないと認識されないため最低4MHz以上の速度がないと通信が成り立ちませんのでお気を付けください。
このWS2812C-2020は送る信号がある程度の速度以上ないと使用できませんが、信号の中身は単純なので制御は簡単です。