no-image

Pythonで動くTrinket M0で遊んでみる(2)フルカラーLED制御

Pythonでプログラミングできる小さなマイコン「Trinket M0」の使い方を紹介します。今回はオンボードのフルカラーLEDを使ってみます。

Trinket

前回の記事「Pythonで動くTrinket M0で遊んでみる(1)Lチカまで」で Trinket M0 の紹介と基本的な利用方法を解説しています。Trinket M0の使い方が解らない方は、是非一度読んでみてください。

Pythonで動くTrinket M0で遊んでみる(1)Lチカまでの内容

  • Trinket M0とは?
  • Trinket M0 をアップデートする
  • PythonでLチカするサンプルを書き込んでみる
  • コードを見てみる

今回のゴール

前回Trinket M0に搭載された小さな赤いLEDを使ってLチカをやってみました。
今回はTrinketにもう一つ搭載されているフルカラーLEDで遊んでみたいと思います。

  1. ライブラリをアップデートする
  2. フルカラーLEDのテストコードを書き込んでみる
  3. コードを見てみる

用意するもの

今回もオンボードのLEDを使うだけですので用意するものは前回と同じです。

  • Trinket M0
  • USB通信ケーブル(USB AーUSB Micro B)
  • インターネットに接続できるPC(この記事ではMacを使います)とブラウザ、テキストエディタ

1. フルカラーLEDを使う準備をする

Trinket M0に搭載されたフルカラーLEDはDotStarという方式のLEDです。

前回はGPIOを使ってLチカを行いましたが、GPIOの制御に必要なdigitalioモジュールは、コアモジュールなので標準の環境に含まれていました。

一方で、DotStarを使うには、拡張モジュールを利用する必要があります。
拡張モジュールを利用するには、CIRCUITPYの中にあるlibにDotStarを利用するための追加のライブラリadafruit_dotstar.mpyを導入する必要があります。

実は、買った時の初期状態で DotStar LEDが「ふわふわ」色が変わるようなサンプルが書き込まれているためadafruit_dotstar.mpylibフォルダに含まれていますが、前回Trinket M0のファームウエア(CircuitPython)をアップデートしましたので、新しいファームウエアに対応した新しいライブラリに入れ替える必要があります。

新しいライブラリは下記サイトからダウンロードしてください。

adafruit / Adafruit_CircuitPython_DotStar

上記サイトにはファームウエアのVersionに合わせて複数のライブラリが選択可能になっています。
前回、adafruit-circuitpython-trinket_m0-3.1.1.uf2にファームウエアをアップデートしましたので、これに合わせてadafruit-circuitpython-dotstar-3.x-mpy-1.4.0.zip をダウンロードしましょう。

zipファイルを解凍後、CIRCUITPYの中にあるlibに新しいadafruit_dotstar.mpyをコピーしてください。(上書きします)

これで準備完了です。

ついでに、libの中にある他の古いライブラリも消しておきましょう。

memo: 外部ライブラリの探し方

Adafruitが提供している外部ライブラリは、Additional Adafruit Libraries and Drivers on GitHub にまとめられています。

まずは、ここから探すと良いでしょう。

2. フルカラーLEDのテストコードを書き込んでみる

それでは、TrinketにフルカラーLEDのテストコードを書き込んでみます。

下記コードをテキストエディタにコピーして、main.pyというファイル名で保存してください。

続けて、main.pyを、マウントされているCIRCUITPYにドラッグ&ドロップします。
上書きするか?確認されるので、上書きしてください。

これで、Trinket M0に先ほどのmain.pyが書き込まれました。
↓のようにTrinket M0中央のDotStar LEDが赤→緑→青の順番にLEDが点滅したら成功です!

フルカラーLチカ

3. コードを見てみる

今回もコードを見て見ましょう。

3.1. モジュールのインポート

最初の部分でモジュールをインポートしています。

timeboardは前回同様なので割愛。
今回、DotStar LED用のモジュールadafruit_dotstarを読み込んでいます。
追加ライブラリadafruit_dotstar.mpyで利用可能になったモジュールです。

3.2. LED接続ピンの設定

次のコードでDotStarの接続設定を行なっています。

adafruit_dotstar.DotStar()のパラメータの意味は下記の通りです。

  • パラメータ1. クロックピン : board.APA102_SCK
  • パラメータ2. データピン : board.APA102_MOSI
  • パラメータ3. 接続されたLEDの数 : 1

ふむ。DotStarはSPI接続なんですね。なるほど。
オンボードのDotStar LEDを光らせるだけであれば、上記パラメータから変更する箇所はなさそうです。

未検証:SPIということは、GPIOの設定でボード外部にSPIでDotStar LEDを接続すれば制御できそうです。クロックにboard.D3、データピンにboard.D4を設定して、D3D4にそれぞれDotStar LEDを接続すれば制御できそうですね。DotStar LEDが手に入れば時間のあるときにでもやってみたいです。

3.3. LEDの点滅・消灯

最後にLED制御部分のコードです。

前回解説したwhile True:time.sleep(0.5)は省略します。

ledは、接続されたLEDの配列になっています。今回は1つしか繋がってないのでled[0]だけが制御対象になります。

ここに代入しているのが、(赤の光の強さ 0-255, 緑の光の強さ 0-255, 青の光の強さ 0-255)になります。いわゆる24ビットRGBですね(LEDなのでRGBで表現される色とは実際には微妙に異なります)

上記コードの例では、赤色になります。

まとめ

今回は、Trinket M0にオンボードで搭載されたDotStar フルカラーLEDを光らせてみました。
また、コアモジュールに無い機能を利用するために、外部ライブラリの導入も試しました。

少しずつお作法が判って来た気がします。(筆者も書きながら学習中ですw)

次回はPCのターミナルとのデータ入出力を試してみたいと思います。
そろそろデバッグしたいので!

P.S. いつになったら、Trinket M0にピンヘッダをはんだ付けするのだろうか?w

参考URL

下記情報を参考にさせていただきました!貴重な情報公開ありがとうございます。