編集履歴一覧に戻る
akira.keiのアイコン画像

akira.kei が 2026年10月18日18時32分08秒 に編集

初版

タイトルの変更

+

RP2040-Zeroで時計用7セグメントLEDを点灯

タグの変更

+

rp2040

+

rp2040-zero

+

MicroPython

+

micropython

+

7seg

+

7segment

記事種類の変更

+

製作品

本文の変更

+

@[youtube](https://youtu.be/7cGWIK6RbAI) ## 時計用7セグメントLED [秋月で衝動買いして死蔵していた時計用7セグメントLED](https://akizukidenshi.com/catalog/g/g114426/)を、ようやく使ってみる気になったので、時計っぽくまとめてみた。 ![キャプションを入力できます](https://camo.elchika.com/8844b7417a91d841b6081318c7b5c37ae546c170/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f33363031626666382d633530632d343762382d613765362d3531663731393163323336642f39396631366366632d396232322d343564322d623030392d626130346333383834646430/) RP2040にはRTCが内蔵されているので、これを利用して時計化してみる予定だったのだが、全然ダメだったw。後継のrp2350で内蔵されなくなった理由がわかったよ… ## RP2040-Zero+MicroPython 時計用7セグメントLEDは12本の端子を接続してダイナミック点灯すればいいだけだ。ほぼそのままrp2040のGPIOに直結または抵抗を介して平行に接続してある。 ![キャプションを入力できます](https://camo.elchika.com/35390d31f001ad01e2124b0a3f83e889ba50a13b/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f33363031626666382d633530632d343762382d613765362d3531663731393163323336642f37303736363962322d643863342d343363392d616335332d363662306566623039353437/) このrp2040-zeroの端子構成は良くできていて、上側は9本、下側は6本、サイドに5本のGPIOが出ているので余裕で色々接続できる。しかもアリエクならほぼ500円以下(今は送料が高くなってる)だったので2個づつチマチマと買い足しておいた。 ![](https://www.waveshare.com/img/devkit/RP2040-Zero/RP2040-Zero-details-7.jpg) GPIOのピン定義部分は以下のようになっていて、アノードコモンなのでアノード直結、カソード毎に抵抗を付けてある。こうすると点灯するLEDの数によって明るさが変化しちゃうってことがない。また、アノードをPWMで変調すると明るさを変えられなくもない。 ```Python: from machine import Pin, Timer ANODES = [29, 26, 15, 8] CATHODES = [28, 14, 6, 4, 3, 27, 7, 5] anodes = [Pin(p, Pin.OUT) for p in ANODES] cathodes = [Pin(p, Pin.OUT) for p in CATHODES] def all_off(): for p in anodes: p.value(0) for p in cathodes: p.value(1) ``` ダイナミック点灯なので各々のLEDデューティは自然と25%以下になるので、5mAくらい流れるようにしているが、ピーク電流は各ピンの電流定格を超えてしまうかも。GNDと3.3vレギュレータ出力の間に10μFの電解コンデンサを追加しておいた。 ダイナミック点灯なのでアノードを次々と切り替える必要があるが、MicroPythonではタイマー割り込みが使えるので、それで切り替えてみた。 10msでは表示がチラチラする。5msなら目で見ても気にならないが、ビデオには間欠的に見えてしまう。そして1msならビデオでもほぼ全点灯するので、割り込み周期は1msから5msの間で良さそうだ。 ## 内蔵RTCとは RP2040の内蔵RTCにはバッテリーバックアップ機能がなく、停電で時刻を忘れ、1sec割り込み機能もない。これって時計じゃないのでは?とGeminiに聞いてみたら「良いところに気が付きましたね」と褒められた。うるさいんだよw 時計にするなら外付けRTC(バッテリーバックアップ付き)を追加したらどう?などとアドバイスを受けたが、そういうことじゃないだろうよ。 ## ここまでやってお蔵入り どうやってもただの外付けディスプレイにしかならないので、このプロジェクトは諦めて終了とした。まぁこれはこれで楽しいからいいか。