初めてのRaspberry Pi Pico ⑪ Circuitpythonで7セグLEDに表示

　アマゾンやebayで入手しやすいHT16K33コントローラを使った7セグメントLEDを点灯します。HT16K33コントローラは、マトリクスなどの表示にも使われています。
###7セグメントLED
　時計の表示にも使えるドットがついています。インターフェースはI2Cです。ピン穴の横に書かれているシルク印刷で、CはSCL、DはSDA、＋はVcc、ーはGNDへ接続します。

|7segLED端子 |Pico物理的ピン番号 |Pico GPIOピン番号|
|:-----------|------------:|:------------:|
|＋　Vcc|36 |3.3V|
|ー　GND|13 |GND|
|C　SCL|12 |GP9|
|D　SDA|11 |GP8|

（2020/02/11）　このボードにはプルアップ抵抗はありません。AdafruitのSTEMMA QTボードを一つつないでいます。このSTEMMA QTボードにはプルアップ抵抗が内蔵されています。

<img width="280" alt="ファイル名" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407635/891e1c2c-abe9-c8da-4b9a-25894e561ac7.png">

　　[4桁 7セグメント 0.56インチ LEDディスプレイモジュール I2C Arduino用 HT16K33 高性能](https://www.amazon.co.jp/Baoblaze-4%E6%A1%81-7%E3%82%BB%E3%82%B0%E3%83%A1%E3%83%B3%E3%83%88-0-56%E3%82%A4%E3%83%B3%E3%83%81-LED%E3%83%87%E3%82%A3%E3%82%B9%E3%83%97%E3%83%AC%E3%82%A4%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB-I2C-Arduino%E7%94%A8-HT16K33-%E9%AB%98%E6%80%A7%E8%83%BD/dp/B07CNNZPQS/ref=dp_prsubs_1?pd_rd_i=B07CNNZPQS&psc=1)

###必要なファイル
　ダウンロードして解凍したファイルのうちlibとexamplesは、ラズパイの/home/piにコピーしています（第2回を参照）。
　ダウンロード・フォルダにあったadafruit-circuitpython-raspberry_pi_pico-en_US-6.2.0-beta.1.uf2をデスクトップにドロップしておきます。
　BOOTSELボタンを押したまま、ラズパイとPicoをUSBケーブルをつなげます。つながったら、BOOTSELから手を放します。RPI-RP2ドライブがマウントされます。そのRPI-RP2ドライブへ、adafruit-circuitpython-raspberry_pi_pico-en_US-6.2.0-beta.1.uf2をドラッグします。コピーが数秒で終わると、デスクトップには、CIRCUITPYドライブがマウントされています。

<img width="120" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407635/bdf973b4-c488-2ce7-78b1-ffd6dbe22669.png">

　CIRCUITPYドライブを開きます。この中にあるlibフォルダに、/home/pi/libにあるadafruit_ht16k33フォルダをコピーします。

<img width="550" alt="ファイル名" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407635/11590427-49ba-e120-3da8-a3305117e210.png">



　今までコピーしたファイル類です。130kバイトぐらいなので、まだ余裕です。

<img width="500" alt="ファイル名" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407635/98872b03-1106-4178-5e99-7d1b85f76d42.png">



###プログラム
　Muを立ち上げます。
　/home/pi/examplesのなかにあるht16k33_segments_simpletest.pyをエディタで開きます。中身をMuのcode.pyへコピーします。19行目を次のようにピン番号を変更してSaveします。Serialを開きます。Saveすると、7セグLEDでデモ表示が始まります。


```
i2c = busio.I2C(board.GP9, board.GP8)
```

<img width="350" alt="ファイル名" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407635/12f66c4b-a7bc-27fa-8df7-a61344ae8fd1.png">

　display.print("12:30")の実行例です。
![IMGP0191.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407635/ffa711b3-6432-8b6d-1f58-89d8c237a874.png)

###ラーメン・タイマ
　3分をカウントダウンします。正確でないかもしれません。Resetスイッチを押すとスタートします。Resetスイッチは第6回を参照してください。

```python
# SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries
# SPDX-License-Identifier: MIT
# Author: Tony DiCola

import time
import board
import busio

# Import the HT16K33 LED segment module.
from adafruit_ht16k33 import segments

# Create the I2C interface.
i2c = busio.I2C(board.GP9, board.GP8)

# Create the LED segment class.
# This creates a 7 segment 4 character display:
display = segments.Seg7x4(i2c)
# Finally you can optionally specify a custom I2C address of the HT16k33 like:
# display = segments.Seg7x4(i2c, address=0x70)

# Clear the display.
display.fill(0)

#display.print("3"+':'+"00")
TIME =180
for i in  range(TIME, -1, -1):
    time.sleep(1)
    TIME -= 1
    display.fill(0)
    display.print(str(int(TIME/60))+':'+str(int(TIME/3)))
```