0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ARGB PC ファン を MicroPython で光らす

Posted at

ARGB ファン

ARGB の PCファンは各社から様々なタイプが販売されています。
その中で、今回使用したファンは、お手軽な価格で購入できる ↓この ファンです。

Amazon;Thermalright TL-C12CW-S 3個組1689円

ファンの種類により フルカラーLED の配置や個数は変わってくると思われますが、このファンは、ブレードの枚数と同じ 8個のフルカラーLED がブレードの根元に配置されているタイプです(LED自体は回転しません)。

ファン自体は 12VのPWM方式の4ピンで制御しますが、ARGB は5Vの3ピンで制御します。ファンを回すことと、ARGB を光らすことは 独立して制御する必要があります。

なお、12Vの4ピンRGBとは、電圧も制御方法も まったく異なり互換性がありません。

3ピン仕様ARGB

argb_3pin.png

ARGBの(マザーボードに接続する側の)コネクタは上記の様なメス型の形状です。

argb-Types.png

マザーボード上のARGBヘッダーは 上記の様な配列で、コネクタの『矢印マーク』が『5V』側になります。なお、逆向きには挿さらないピン配列になっています。

ARGB とは

アドレッサブルRGB の略で、ディージーチェーン接続した複数の RGB LED の、一つ一つを個別の色で光らせることができる マイコン内蔵の RGB LED です。マイコン界隈で有名な NeoPixel と同等のフルカラーLED(シリアルLED)です。( NeoPixel は Adafruit の商標

冒頭で触れましたが、今回使用するファンには ディージーチェーンによる 8個のフルカラーLEDが内蔵されていて、さらに、このファン同士を複数接続することができます。
試しに2つのファンをつないでみましたが、ファン同士はシリアル接続ではなく、パラレル接続でした。つまり、複数のファンを接続した場合は、すべてのファンは同じ光らせ方しかできません。

ファンを分解して Data Out ピンを引き出せば、ファン間のシリアル接続もできると思います。

MicroPython で光らす

勘が良い方なら もうお分かりだと思いますが、MicroPython には 最初から NeoPixel 制御モジュールが組み込まれているため、それを利用するだけです。

次のようなコードで ARGB を簡単に光らすことができます。

MicroPython<8個のLEDを順に点灯>
from machine import Pin
from neopixel import NeoPixel
import time

np = NeoPixel(Pin(16), 8)

for n in range(64):
    np[(n-1)%8] = (0, 0, 0)
    np[n%8] = (0, 255, 0)
    np.write()
    time.sleep_ms(500)

mov1.gif


  • グラデーションで変化させてみました
<グラデーション点灯>
from machine import Pin
from neopixel import NeoPixel
import time

#https://tori29.jp/blog/export_17
#def hsv_to_rgb(h, s, v):

np = NeoPixel(Pin(16), 8)

for n in range(8):
    np[n] = hsv_to_rgb(359, 1, 1)
np.write()
for r in range(360):
    np[r % 8] = hsv_to_rgb(r, 1, 1)
    np.write()
    time.sleep_ms(100)

mov4.gif

肉眼では綺麗に光って見えているのですが、動画ではなぜか中央が真っ白です。

hsv_to_rgb()は、次のサイトのコードを丸々利用させていただきました。


  • グラデーション+補色を逆回転させてみました
<グラデーション+補色を逆回転>
from machine import Pin
from neopixel import NeoPixel
import time

#https://tori29.jp/blog/export_17
#def hsv_to_rgb(h, s, v):

def complementary_color(color):
    r, g, b = color
    mix = min(r, g, b) + max(r, g, b)
    r, g, b = mix - r, mix - g, mix - b
    return (r, g, b)

np = NeoPixel(Pin(16), 8)

for r in range(360):
    color = hsv_to_rgb(r, 1, 1)
    for n in range(8):
        np[n] = color
    np[7 - (r % 8)] = complementary_color(color)
    np.write()
    time.sleep_ms(100)

mov3.gif
クリックして、別タブ(別ウィンドウ)で見てください


12V 4pin RGB LED に比べ、5V ARGB を光らすことは とても簡単です。
以前作成した『CPU使用率に応じてRGB LEDの色を変化させる』を、こちらのファンで再構築してみようと思います。


多数の ARGB を マイコンで光らす場合の注意点

PC の USB ポートの VBUS は、USB2.0ポートで 500mA、USB3.0ポートで 900mA 程度の電流しか取り出せません。そのため、数十、数百の LED を同時に点灯させる場合は、PSU から直接 5V を給電する必要があります。

物の本によると、0.5A で LED 約8個、0.9A で 約14個、1A で 約16個、2A で 約33個 とありましたが、保証数ではありません。 自己責任で容量算出しましょう。

以上

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?