akira.keiのアイコン画像
akira.kei 2026年07月20日作成 (2026年07月20日更新) © MIT
セットアップや使用方法 セットアップや使用方法 閲覧数 69
akira.kei 2026年07月20日作成 (2026年07月20日更新) © MIT セットアップや使用方法 セットアップや使用方法 閲覧数 69

RP2040-ZeroをCircuitPythonで(その2):7セグLEDディスプレイ

<前の記事 : 次の記事>

7セグLEDディスプレイ

秋月電子通商でずいぶんと前にシコタマ買ってあったダイナミック点灯用の7セグLEDディスプレイを今更ながら引っ張り出してみた。いつも使っているアルカリ単三・単四電池の残量をちょっと調べてみるテスターの表示部分に使う予定だ。
103673

タイトルにあるように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

Dynamic

CircuitPythonではどうにもならん

CircuitPythonでインターバルタイマーを使うにはimport asicioを使う。asyncを冒頭に付けたコード群をスレッドのように登録して使うという使い方らしいが、割り込み処理をライブラリ内では完結できず、async化したメインプログラムを起動しなければいけない。Geminiに頼んだコードは公開するのはあまりにも汚いので、チュートリアルを示しておくが、使い勝手の悪さと直感との乖離はどうしようもない。

マイクロコントローラーの制御言語としてCircuitPythonの使い勝手の悪さが露呈したなぁという印象だ。開発方針なんだろうから仕方がないけど、MicroPythonの方が断然、使い勝手が良いだろう。

akira.keiのアイコン画像
機械系エンジニアだが電子工作を趣味としている。週末はひとりバーベキュー。
ログインしてコメントを投稿する