CircuitPython 10行プログラミング STEP7 (3) BMP280と7セグメントLEDの表示

 XIAO RP2040マイコン・ボードとCircuitPythonを使って、I2CバスにつながるセンサBMP280を利用します。測定結果は7セグメントLEDに表示します。

8桁7セグメントLED

 使用する7セグメントLEDのコントローラはmax7219です。CircuitePythonのライブラリがあります。ダウンロードしたadafruit-circuitpython-bundle-7.x-mpy-20220119のlibフォルダの中にあるadafruit_max7219フォルダごとXIAO RP2040マイコン・ボードのlibフォルダにコピーします。

 なお、実行時には下記のファイルも必要なので、libにコピーしておきます。

  • adafruit_bus_deviceフォルダ
  • adafruit_framebuf.mpyファイル

 max7219は、ドット・マトリクスと、7セグメントLEDの両方に対応しています。

接続

XIAO RP2040マイコン・ボード 7セグメントLED(max7219)
GND GND
D10 MOSI Din
D8 SCK CLK
3.3V Vcc
D7 CS/RX CS

表示プログラム


from adafruit_max7219 import bcddigits
from board import SCK, MOSI, D7
import busio
import digitalio

cs = digitalio.DigitalInOut(D7)
spi = busio.SPI(SCK, MOSI=MOSI)
display = bcddigits.BCDDigits(spi, cs, nDigits=8)

display.brightness(1)
display.clear_all()
display.show_str(0, "1012")
display.show_str(4, " 25.2")

display.show()

気圧センサBMP280のおもなスペック

  • 電源電圧;1.71~3.6V
  • 温度測定範囲;-40~+85℃、分解能0.01℃
  • 気圧測定範囲;300~1100hPa、確度±1hPa、分解能0.12hPa
  • インターフェース;SPI(データ転送速度最大10MHz)、I2C(データ転送速度最大3.4MHz)
  • I2Cアドレス;0x76、0x77どちらかを選択

BMP280のライブラリをコピー

 PCに保存したlibフォルダに入っているadafruit_bmp280.mpyをCIRCUITPYドライブのlibへコピーします。メモリに余裕があるので、前回使ったライブラリは消さずに残しています。

気圧センサBMP280の接続

 I2Cバスで接続します。I2Cバスをscanするプログラムを動かすと、0x77に見つけてきました。

XIAO RP2040マイコン・ボード BMP280ボード
GND GND
3.3V Vcc
D5   SCL SCL
D4   SDA SDA

BMP280の読み出しプログラム

 examplesに入っていたBMP280のデータ読み出しプログラムです。


# SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries
# SPDX-License-Identifier: MIT

"""Simpletest Example that shows how to get temperature,
   pressure, and altitude readings from a BMP280"""
import time
import board

# import digitalio # For use with SPI
import adafruit_bmp280

# Create sensor object, communicating over the board's default I2C bus
i2c = board.I2C()  # uses board.SCL and board.SDA
bmp280 = adafruit_bmp280.Adafruit_BMP280_I2C(i2c)

# OR Create sensor object, communicating over the board's default SPI bus
# spi = board.SPI()
# bmp_cs = digitalio.DigitalInOut(board.D10)
# bmp280 = adafruit_bmp280.Adafruit_BMP280_SPI(spi, bmp_cs)

# change this to match the location's pressure (hPa) at sea level
bmp280.sea_level_pressure = 1013.25

while True:
    print("\nTemperature: %0.1f C" % bmp280.temperature)
    print("Pressure: %0.1f hPa" % bmp280.pressure)
    print("Altitude = %0.2f meters" % bmp280.altitude)
    time.sleep(2)

 必要な部分を抜き出し、最初のLEDの表示プログラムと合体します。

BMP280の気圧と温度を7セグメントLEDに表示


# SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries
# SPDX-License-Identifier: MITfrom adafruit_max7219 import bcddigits
from adafruit_max7219 import bcddigits
from board import SCK, MOSI, D7,SCL,SDA
import busio
import digitalio
import time
import adafruit_bmp280

cs = digitalio.DigitalInOut(D7)
spi = busio.SPI(SCK, MOSI=MOSI)
display = bcddigits.BCDDigits(spi, cs, nDigits=8)
i2c = busio.I2C(SCL,SDA)  # uses board.SCL and board.SDA
bmp280 = adafruit_bmp280.Adafruit_BMP280_I2C(i2c)

display.brightness(1)
display.clear_all()

while 1:
    display.show_str(0, str(int(bmp280.pressure)))
    display.show_str(5, str(bmp280.temperature))
    display.show()
    time.sleep(2)

連載 CircuitPython 10行プログラミング Step8 release8.0.0 Alpha1

(1) Seeed XIAO BLE Senseの準備

(2) 6軸IMU LSM6DS3TR-C

(3) 6軸IMU LSM6DS3TR-CとBLE

(4) I2Cで温度センサTMP117

(5) アナログ入力 ジョイスティック


連載 CircuitPython 10行プログラミング Step7 release7.2.0-alpha.1

(1) XIAO RP2040の準備と動作確認

(2) 気圧センサLPS22HB

(3) BMP280と7セグメントLEDの表示

(4) LPS22HBと7セグメントLEDの表示


連載 CircuitPython 10行プログラミング Step6 release7.0.0

(1) Nano RP2040 Connectの準備と動作確認

(2) Nano RP2040 Connectの搭載センサIMU LSM6DSOX

(3) Nano RP2040 ConnectにI2CでIMUセンサLSM9DS1

(4) Nano RP2040 ConnectのWi-Fi

(5) Nano RP2040 Connectで確度0.1℃の温度計TMP117+ht16k33


連載 CircuitPython 10行プログラミング Step5

(1) Raspberry Pi Picoの準備と動作確認 (2) digitalio (3) Raspberry Pi Picoのmicrocontroller (4) アナログ入力 (5) PWM出力 (6) I2S出力 (7) I2C ① OLEDディスプレイ (8) I2C ② 温湿度センサ (9) I2C ③ 気圧センサ (10) Raspberry Pi PicoのSPI ① TFTディスプレイ


連載 CircuitPython 10行プログラミング Step4

(1) Adafruit Feather nRF52840 Senseの準備 (2) Lチカ (3) 搭載センサ (4) BLE①ペリフェラル (5) BLE②セントラル


連載 CircuitPython 10行プログラミング Step3

(1) Metro M4 Express AirLift (WiFi)の準備 (2) ロータリ・エンコーダ (3) eInk/ePaper (4) Wi-Fi その1 接続 (5) Wi-Fi その2 ソケット (6) Wi-Fi その3 電圧測定 (7) 気圧センサLPS25HB (8) サーミスタ


連載 CircuitPython 10行プログラミング Step2

(1) Grand Central M4 Expressの準備 (2) グラフィック・ディスプレイOLED (3) RTC DS3231 (4) モジュール/SDメモリ (5) 複合センサ BME680 (6) ロードセル+ADS1220 (7) サーボ・モータ① (8) サーボ・モータ② (9) I2S UDA1334A (10) D-Aコンバータ


連載 CircuitPython 10行プログラミング

(1) Trinket M0の準備 (2) ディジタルI/O (3) アナログ入出力 (4) I2C 温湿度センサSi7021 (5) SPI 熱電対+MAX31855 (6) UART 距離センサTFMini (7) 1-Wire 温度DS18B20 (8) ロータリ・エンコーダ (9) 7セグメントLED (10) FANコントロール (11) UART GPS (12) I2C Lチカ MCP23017

前へ

CircuitPython 10行プログラミング STEP7 (2) 気圧センサLPS22HB

次へ

ANALOG OUTPUT ③ MKR WiFi 1010にDAC MCP4921