GoにいればGoに従え(24) TinyGo Driversを使ってNeoPixel接続

Joseph Halfmoon

前回はちょっとマイナーで冒険的なインタフェースのシリアルLEDを光らせてみました。今回は定番のシリアル接続フルカラーLED Neopixel(WS2812)を光らせてみます。前回と違い「定番デバイス」なのでTinyGo Driversというドライバセットを使うことができます。自前でドライバ書かなくても良いのでお楽。

※「GoにいればGoに従え」Go関連記事の総Index

TinyGo Drivers

TinyGo Driversは、定番もののマイコン周辺回路を「網羅」したTinyGo向け、ドライバ集です。以下のような手順で使用することができます。

    1. フツーにプロジェクト・ディレクトリを掘ってその中に入る
    2. プロジェクト・ディレクトリの中で 「go mod init ほにゃらら」する
    3. プロジェクト・ディレクトリの中で 「go get tinygo.org/x/drivers」する
    4. ソースコードの中で「import “tinygo.org/x/drivers/使うデバイスのお名前”」する

これだけで、何十もある定番デバイス群が使えるようになるのですから誠にありがたい限りです。なお、今回TinyGo Driversについては以下のバージョンを使用させていただきました。

TinyGo Drivers v0.25.0

今回は定番のシリアル接続フルカラーLED Neopixel(WS2812)を、TinyGo Driversを使って光らせてみます。使用したソースもTinyGo DriversのExampleを「必要部分だけに縮小」したものです。sago35様、ありがとうございます。

drivers/examples/ws2812/main.go

Neopixel(WS2812)

別シリーズ記事にて、Arduino UNO R3にWS2812B3個を接続して光らせてます。今回は、このところTinyGoの練習のターゲット機になっている micro:bit v2機に別シリーズ記事で組み立てたブレッドボードを接続して光らせることにいたしました。ただし、1点、電気的には問題ありです。スペック割れていることを御承知おきください(多分問題なく光るケド。)

    • WS2812Bのデータシートによれば電源電圧のMINは3.5V
    • micro:bit v2の電源電圧は3.3V

5V系の電源、IO電圧のボードで光らせるのにやましいことはないっすけど、3.3V系だとちょっとヤマシイです。

さて、micro:bit v2 への接続は以下のようにいたしました。

mb20NeoPixelSchematic

サンプルソース(改造)にてNeoPixel点灯

まず、「$ go get tinygo.org/x/drivers」している様子が以下にtinygoDriversDownload

これであっけなく TinyGo Driversが参照できるようになりました。

NeoPixel点灯実験用のExampleソースを上記回路に合わせて改変(WS2812は3個だけ、接続ピンはP0、別なLEDでのLチカ無)したものが以下に。testSRCgo

これに対して、いつものように以下コマンドを打ち込めば、micro:bit v2のflashにオブジェクトが書き込まれ、走り始めます。

$ tinygo flash --target microbit-v2

点灯している様子が以下に。mb20NeoPixel

TinyGo Driversはお楽。

GoにいればGoに従え(23) TinyGo、シリアル接続LED、micro:bit v2 に戻る

GoにいればGoに従え(25) TinyGo Drivers便利。なんでも簡単接続。へ進む