2015/08/23(日)BASCOM AVRでWS2812 Rainbow LEDを点灯させる(ATtiny2313)

AVR

このWS2812なるLEDはシリアルパルスでLow/Highを送るのだが、その幅が0.8usや0.4usという極小幅なのでBASCOM AVRでは不可能。そこでWS2812へパルス出力部分だけをインラインアセンブラで記述した。レインボーなパターン部分をBASICで記述出来るのは素晴らしい。

パターンを出すメインルーチン

Do

Wr = Rnd(255)

Wg = Rnd(255)

For I = 0 To 255 Step 2

Wb = I

Gosub Ws2812

Waitms 20

Next I

For I = 255 To 0 Step -2

Wb = I

Gosub Ws2812

Waitms 5

Next I

Loop

簡単にい書いたのでポートはPIN:9(PORTD:5)に決め打ちしているけれど、見れば簡単に変更出来る位小さく作った。

BASICのソースリストはws2812.bas