Pico PR

RaspberryPi Pico MicroPythonでSPIを使う方法 【シリアル接続7セグメント4桁LED(青)】

記事内に商品プロモーションを含む場合があります

はじめに

RaspberryPi PicoでSPIを使って「シリアル接続7セグメント4桁LED(青)」を操作する方法を解説します。言語はMicroPythonを使います。

こんな人におすすめ
  • 初めてSPI通信を使う。
  • MicroPythonでサクッとSPI通信をしてみたい。
  • 7セグLEDを簡単に使いたい。

環境

この記事の内容は、以下の環境で作成しています。

環境 バージョンなど 備考
開発用PCのOS Windows11 Windows10でもOKです
言語 MicroPython
開発環境 Thonny 3.3.13
ボード RaspberryPi Pico

シリアル接続7セグメント4桁LED(青)

SparkFunから発売されている、SPI・I2C・シリアル接続が可能な4桁の7セグメントLEDです。

シリアル接続7セグメントLEDの全体画像(ピンヘッダ実装後)
ピンヘッダ実装後

通常、7セグLEDを使おうとすると、表示される「線1本1本」に配線・プログラムが必要なのですが、この基板は制御用のマイコン(ATMega328P)のおかげで、「1234」などの数値を送るだけで表示ができます。配線も電源系と通信系の計5本だけなので超簡単。

「LEDに表示すること」ではなく、表示する内容や、他のプログラムの作成に注力することができます。

私はスイッチサイエンスさんで購入しました。使用するにはピンヘッダの半田付けが10ピン分必要で、本体に付属していないので、ピンヘッダは別途準備する必要があります。

到着時の7セグLED

色違いのもあります。

  • SPI・I2C・シリアル接続に対応
  • 省配線・省コード
  • 簡単に7セグLEDが使える

Picoとシリアル接続7セグメント4桁LED(青)の接続

下記のようにPicoと7セグLEDをつなぎます。

7セグLED付近の拡大画像です。

ピン番号 Pico側 7セグ側
38 GND GND
36 3V3(OUT) VCC
25 SPI0 Tx SDI
24 SPI0 SCK SCK
22 GP17 SS

Picoピンアサイン(Pin-Out)

RaspberryPi Picoのピンアサイン(pinout)の画像

Pico公式サイトより引用

使用する部品

今回使用する部品は以下の通りです。

RaspberryPi Pico

Pico本体です。半導体不足が続いていますが、価格・納期とも安定しています。

電池ボックス

Picoの電源に使う電池ボックスです。解説では「単4」を使っていますが、容量が多いので「単3」のものをおすすめします。

ちなみに記事内(単4)の電池ボックスはこちら

ブレッドボード

サンハヤト製がおすすめです。少々固いですが、品質は高いです。スペースが広いので配線・デバッグが楽に行えます。

充電池(エネループ)

使い捨てタイプもいいですが、エネループなら4本充電しても電気代は約1円。モーター・ポンプなどの電池が消耗しやすい実験・工作におすすめです。

※ はじめて使う方は充電器とのセットがおすすめです。

7セグメント4桁LED

スイッチサイエンスさんよりだいぶ高いですが、Amazonでも購入することができます。

こちらはレッド版です。

ピンヘッダ

7セグLEDに使うためのピンヘッダです。特別なものは必要ないので、お手持ちの物があればそれで構いません。

プログラム概要

今回のプログラムの概要は以下の通りです。

  • SPIを設定をする
  • 「1234」を表示する
  • 少数点を表示する

実行結果

後述するプログラムを実行すると、以下のように7セグLEDに数値と少数点が表示されます。

プログラムの実行結果

全体コード

全体コードは以下の通りです。詳細な内容は後述する「コードのポイント」で解説します。

from machine import SPI, Pin
import time

#
# SPIの設定
#
spi = SPI( 0,
           baudrate = 100000,
           sck  = machine.Pin(18),
           mosi = machine.Pin(19)  )

#
# チップセレクト(スレーブセレクト)用の出力ピンを設定。
#
cs = machine.Pin(17, mode=Pin.OUT)
cs.value(1)

#
# クリアコマンド(0x76)でLEDを全て消す
#
cs.value(0)
spi.write(b"\x76")
cs.value(1)
time.sleep(0.5)

#
# 左から順に数値の表示
#
cs.value(0)
spi.write(b'\x01')
spi.write(b'\x02')
spi.write(b'\x03')
spi.write(b'\x04')
cs.value(1)

time.sleep(1)

#
# 小数点設定コマンド
#
cs.value(0)
spi.write(b"\x77")
spi.write(b"\x01")
cs.value(1)

print("done")

コードのポイント

コードのポイントは以下の通りです。

SPIの設定

SPI通信のクロック、通信に使うピンの設定をします。

MicroPythonの公式リファレンスでは、バス番号のみを指定していますが、それだと動作せずにちょっとハマりました。今回のピン(GP18,19)を使用する場合は、下記のようにピンを指定してください。

#
# SPIの設定
#
spi = SPI( 0,
           baudrate = 100000,
           sck  = machine.Pin(18),
           mosi = machine.Pin(19)  )

クロック(baoudrate)は変更可能ですが、7セグLEDのボードが250kHzまでの対応です。クロックは250kHzまでにしてください。

CS(Chip Select) 用の出力ピンを設定

通信相手を選ぶCS(Chip Select)用のピンを設定します。
この基板では通信状態によってCSを以下のようにするため、設定直後は通信なしの(1)にしておきます。

指定 電圧 value
チップへのコマンド送信なし High 1
チップへのコマンド通信あり Low 0
#
# チップセレクト(スレーブセレクト)用の出力ピンを設定。
#
cs = machine.Pin(17, mode=Pin.OUT)
cs.value(1)

クリアコマンド

表示のクリアコマンド(0x76) 、全てのLEDが消灯して表示のクリアができます。通信に合わせてCSの状態も切り替えてください。

最後のスリープはLEDの消灯を目視確認するためのものなので、必須ではありません。

#
# クリアコマンド(0x76)でLEDを全て消す
#
cs.value(0)
spi.write(b"\x76")
cs.value(1)
time.sleep(0.5)

byte型の表記

LEDのクリアは16進の「0x76」ですが、write関数の引数はbyte型なので、「b”\x76″」という書き方をしています。

公式リファレンスでは、コマンドは16進数で書かれているので、引数に書く際は、上記のように「b”\x〇〇”」という形式に変換してください。

数値表示

左の桁から順に数字を送信すると、LEDに「1234」と表示されます。通信の前後でCSの状態も変化させてください。

#
# 左から順に数値の表示
#
cs.value(0)
spi.write(b'\x01')
spi.write(b'\x02')
spi.write(b'\x03')
spi.write(b'\x04')
cs.value(1)

time.sleep(1)

少数点の表示

コマンド「0x77」を送信すると、小数点などの設定を指定できます。
設定はコマンドに続けて、以下のように2進数で指定します。

#
# 小数点設定コマンド
#
cs.value(0)
spi.write(b"\x77")
spi.write(b"\x01")
cs.value(1)

小数点などの指定方法

bit 7 6 5 4 3 2 1 0
内容 アポストロフィ コロン 少数点③ 少数点② 少数点① 少数点⓪

7セグLEDの小数点やコロンなどの表示方法を説明する画像

※ SparkFunの公式ページより引用

まとめ

RaspberryPi PicoでSPI接続の7セグLEDを使う方法を解説しました。

OLEDディスプレイが格安で買える時代ですが、7セグLEDはいかにも工作・プロダクトっぽくて楽しいですよね。

PicoでSPI使う方法の解説を書こうと思った時に、使いやすくて、面白そうなのでこの7セグLEDを買ってみました。「7セグLEDを使ってみたい」「SPIの使い方が知りたい」という人の参考になればうれしいです。

お知らせ

\ 3月17日にPicoの本が発売されました /

Picoの基礎から50種類の電子パーツの動かし方までがソースコードと実体配線付で解説されています。初心者はもちろん中級者まで楽しめる内容です(電子書籍版もあり)。

\ 3月15日にPico/Pico W の本が発売されました /

雑誌 Interfaceの特集内容に大幅加筆。Picoの基礎~いろいろな動かし方を詰め込んだ、まさに「攻略本」な一冊です。

「見た目もいい工具」が見つかります

工具は『見た目』も重要ですよね、部屋や机にこだわって、カッコいい作業環境を作っても、ダサい工具が散乱していたら、一発で台無しです。

ですが「機能性ばかりで、デザイン性のいいものは見つからない」という人も多いんじゃないでしょうか。

以下のサイトなら、『ケースまでこだわった』ドライバー、フラッシュライト、テスターなどなど、デザイン性の良い工具やツールが見つかます。また、クラファンを活用して種類もどんどん増えています。

ここで全ては書ききれないので、以下のボタンから、好みの工具があるか確認してみてください(お得なセール情報もありますよ)。

質問・要望 大歓迎です

「こんな解説記事作って」「こんなことがしたいけど、〇〇で困ってる」など、コメント欄で教えてください。 質問・要望に、中の人ができる限り対応します。

使えたよ・設定できたよの一言コメントも大歓迎。気軽に足跡を残してみてください。記事を紹介したい方はブログ、SNSにバシバシ貼ってもらってOKです。

ABOUT ME
えす
現役のソフトウェアエンジニアです。 C++ C# Python を使ってます。10年ちょい設計/開発部門にいましたが、今はQAエンジニアっぽいことをしています。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Index