<前の記事 : 次の記事>
7セグLEDディスプレイ
秋月電子通商でずいぶんと前にシコタマ買ってあったダイナミック点灯用の7セグLEDディスプレイを今更ながら引っ張り出してみた。いつも使っているアルカリ単三・単四電池の残量をちょっと調べてみるテスターの表示部分に使う予定だ。
タイトルにあるようにCircuitPythonで始めてみたが、苦労の割には全然良くなかった。7セグのダイナミック点灯なので桁をインターバルタイマー割り込みで切り替えながら表示するのが王道なんだが、CircuitPythonにはタイマー割り込みがない。そのかわり標準ライブラリとしてasyncioを使え、とGeminiが教えてくれた。
MicroPythonなら普通にインターバルタイマー
CircuitPythonとは異なり、MicroPythonなら普通にインターバルタイマーが使えるので、ライブラリ化した7セグは以下のようにシンプルに使用できる。表示したい数値をセットするだけで4桁表示が可能というシンプル加減だ。
import time
from SevenSeg4d import SevenSegment4D
SEG_PINS = [5, 7, 1, 3, 4, 6, 0, 2]
DIG_PINS = [9, 10, 11, 12]
display = SevenSegment4D(SEG_PINS, DIG_PINS)
counter = 0
while True:
display.value = counter
time.sleep(0.1)
counter = (counter + 1) % 10000
CircuitPythonではどうにもならん
CircuitPythonでインターバルタイマーを使うにはimport asicioを使う。asyncを冒頭に付けたコード群をスレッドのように登録して使うという使い方らしいが、割り込み処理をライブラリ内では完結できず、async化したメインプログラムを起動しなければいけない。Geminiに頼んだコードは公開するのはあまりにも汚いので、チュートリアルを示しておくが、使い勝手の悪さと直感との乖離はどうしようもない。
マイクロコントローラーの制御言語としてCircuitPythonの使い勝手の悪さが露呈したなぁという印象だ。開発方針なんだろうから仕方がないけど、MicroPythonの方が断然、使い勝手が良いだろう。
投稿者の人気記事

-
akira.kei
さんが
前の月曜日の22:25
に
編集
をしました。
(メッセージ: 初版)
-
akira.kei
さんが
前の月曜日の22:50
に
編集
をしました。
ログインしてコメントを投稿する