LEDパネルを適切に使おうとすると、LEDパネルに高速かつ継続的に点灯データを送り続けなければなりません。このため、DMAや割り込みを使用したプログラミングが必要になり、自分自身で実装しようとすると少々敷居が高い作業となります。

PICO/PICO 2用のCircuitPythonには、LEDパネルをコントロールできるライブラリ rgbmatrix が組み込まれています。このため、PICO/ PICO 2のCircuitPythonでは、LEDパネルのプログラミングを手軽に行うことができます。

P2.5 128x64ピクセルのLEDパネルへの表示プログラム例

import board, digitalio, busio, time
import displayio, rgbmatrix, framebufferio, terminalio

displayio.release_displays()

matrix = rgbmatrix.RGBMatrix(
  width=128, height=64, bit_depth=5,
  rgb_pins=[board.GP0, board.GP1, board.GP2, board.GP3, board.GP4, board.GP5],
  addr_pins=[board.GP6, board.GP7, board.GP8, board.GP9, board.GP10],
  clock_pin=board.GP11, latch_pin=board.GP12, output_enable_pin=board.GP13)

display = framebufferio.FramebufferDisplay(matrix)

group = displayio.Group()
display.root_group = group

# 文字列の表示を行う
from adafruit_display_text import label

group.append(label.Label(terminalio.FONT, text="MicroFan", x=0, y=4, color=0x00FFFF))
group.append(label.Label(terminalio.FONT, text="PICO-LED:RGBMatrix", x=0, y=16, color=0xFFFF00))

# 図形の表示を行う
from adafruit_display_shapes.line import Line
from adafruit_display_shapes.rect import Rect
from adafruit_display_shapes.circle import Circle
from adafruit_display_shapes.triangle import Triangle

group.append(Line(0, 30, 63, 60, 0xFF00FF))
group.append(Rect(10, 30, 30, 30, fill=0xFF0000, outline=0xFFFF00))
group.append(Circle(105, 45, 15, fill=0x00FF00, outline=0xFFFF00))
group.append(Triangle(65, 30, 45, 60, 85, 60, fill=0x0000FF, outline=0xFFFF00))

基板に接続したBMP280の使用例です。

import board, busio
import time
import adafruit_bmp280

i2c = busio.I2C(board.GP15, board.GP14) # i2cを有効にします
bmp280 = adafruit_bmp280.Adafruit_BMP280_I2C(i2c, address=0x76)

while True:
    print("気温: %0.1f C" % bmp280.temperature)
    print("気圧: %0.1f hPa\n" % bmp280.pressure)
    time.sleep(1)