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

Hyodot が 2026年08月28日11時04分37秒 に編集

コメント無し

タイトルの変更

-

Pico 7セグメントLEDで Hello World を表示する

+

Pico 7セグメントLEDで Hello World を表示する(ただいま編集中)

メイン画像の変更

メイン画像が設定されました

本文の変更

# 作品の紹介 - この作品は、8桁の7セグメントLEDモジュールを使って「Hello World」と英文字を表示します。 - 8桁の7セグメントLEDモジュールは、DFROBOTの「3-Wire LED Module 8 Digital」、品番は「DFR0090」です。スイッチサイエンスなどから入手できます。 - 使用言語は、MicroPythonです。マイコンは、Raspberry Pi Pico2です。他のPicoでも使えます。 - 「Lチカの次に何をしよう?」という方にピッタリです。 # DFR0090について

-

- DFR0090(3-Wire LED Module 8 Digital)は、マイコンから見るとSPI接続のモジュールです。ただし、マイコン側のMISOに相当する端子はないので、3-Wireと表しているのかも知れません。

+

- DFR0090(3-Wire LED Module 8 Digital)は、マイコンから見るとSPI接続のモジュールです。ただし、マイコン側のMISOに相当する端子はないので、3-Wireと表しているのかも知れません。

- 8桁の7セグメントLEDであり、上位桁からデータ入力し、表示しながら下位桁に右シフトします。 - 「日」字型の7つのセグメントと「.」ドットを加え、8bitに対応したデータをSPI通信で送信します。 - すべてのセグメントを消灯するときは、8ビットのすべてを「0」にします。 - すべてのセグメントを消灯するときは、8ビットのすべてを「1」にします。

-

- ダイナミック表示ではないので、1回、桁数分のデータ送るだけで表示し続けます。

+

- ダイナミック表示ではないので、表示したいデータ1回送るだけで表示し続けます。

# DFR0090利用のコツ - DFR0090を使用するうえで、少し戸惑ったのは、LowTrue(bit=0)で点灯することと、上位桁(左端)からデータ入力し下位桁(右端)に右シフトすることです。 - すべてのセグメントを消灯するときは、8ビットのすべてを「1」にする必要がありますが、MicroPythonの癖なのか、74HC595の癖なのか、SPIで最上位ビット(dot表示に対応)を「1」にすると2桁にわたって表示され、うまく表示できません。 - 解決策として、Pico側のSPI-MOSI端子とDFR0090のDATA端子間にハードウェアのインバータ(74HC04)を入れました。(CKLとCEにもインバータを2回=バッファとして=利用していますが、インバータが余ったから入れただけです) - この作品では、dot表示はできません。 # 主要部品 |デバイス名|用途|接続方法| |:-------------------------|:--------------|:-------------|:----------------| |Raspberry Pi Pico2 | マイコン | DFR0090とSPI接続| |DFR0090 | LED Module 8 Digital | Pico2とSPI接続| |74HC04 | MOSI信号反転用 | Pico2 と DFR0090間| |三端子レギュレータ | Pico2電流負担軽減 | USB5V⇒3.3V| ## 入手先など(ご参考) Raspberry Pi Pico 2 https://www.switch-science.com/products/9809 DFROBOT-DFR0090 3-Wire LED Module 8 Digital (Arduino Compatible) https://www.switch-science.com/products/4187 6回路インバーター TC74HC04AP https://akizukidenshi.com/catalog/g/g114058/ 低損失三端子レギュレーター 3.3V1A BA033CC0T https://akizukidenshi.com/catalog/g/g113675/ # 配線接続図 ![作品全体図])

+

![配線接続図](https://camo.elchika.com/3c8b428a5a41873779b403daa792f304bb58d68a/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f62663065396663652d373837332d343266652d623963322d3363666339616236313062612f39313338636263322d313037362d346161632d613738642d343338646661633461636165/)

- 一言でいうと、PicoのSPI-MOSI信号からDFR0090のDATA信号間に、インバータを入れるだけです。 - 配線接続図 - ブレッドボードの配線の画像 - DFR0090 Input側コネクタ の信号 # プログラムの紹介 ## プログラム ### main.py ```MicroPython:spi74hc595cp.py ``` ## プログラムの説明 ### 7セグメントLEDのセグメントとデータの関係 MicroPythonで7セグメントLEDのセグメントのデータは、次のように構成します。 何も表示しない(a~gのセグメントをすべて点灯しない)場合と、「8」を表示する場合を示します。 |10進数相当| .gfedcba | id | Hex | 表示内容 | |:-----------|:--------------|:------|:------|:-----------| | n32 | 0b00000000 | 00 | 0x20 | 何も表示しない | | n56 | 0b01111111 | 24 | 0x38 | 「8」を表示する | ### 関数の説明 4つの関数を用意しました。 #### ledspi_clear(t=0) 関数 - この関数は、8桁すべての7セグメントLEDを消灯します。 n32 は n32 = 0b00000000 であり、全セグメント点灯しないデータです。 #### ledspi_str(s, t=0) 関数 - この関数は、上位桁(左端)から表示しながら下位桁(右端)に右シフトします。 - 文字列 s を引数として渡します。 #### ledspi_str_rvs(s, t=0) 関数 - この関数は、下位桁(右端)から表示しながら上位桁左端)に左シフトします。 - 文字列 s を引数として渡します。 # もう少し楽しむには - プログラムでは、英文字を7セグメントLEDで表示するbitの組み合わせを、私の感覚で作りました。オレはこうしたい、わたしならこうする、というものがあると思います。 - 「6」、「7」、「9」などの数字の表示でも変化させることができます。キャラクターの表示もできます。 - あぁ、動いた、終わり。ではなく、自分なりの表示を作り楽しむことで、プログラムスキルがアップします。是非、挑戦してください。 **最後までご覧いただきありがとうございます。何かの参考になれば幸いです。**