月曜日, 4月 28, 2025
Google search engine

Raspberry Pi Picoノート


Raspberry Pi Picoを使った工作用のノート

Raspberry Pi Picoファミリーについて

Picoは2021年1月リリースの第一世代、2024年8月リリースの第二世代がある。

ラズベリーパイ財団からはFlash ROM等を搭載したマイコンボードとしてPico1やPico2がリリースされているが、チップ単品も購入することが出来るため、オリジナルのハードウェアにPicoのチップを搭載することも出来る。

チップ単体のスペック

チップ単体のスペックは以下の通り。

Name Pico1 Pico2
世代 第一世代 第二世代
リリース 2022.1 2024.8
チップ RP2040 RP2350
コア Dual ARM Cortex-M0+ 133MHz Dual Cortex-M33 150MHzとDual Hazard3 RISC-V 150MHzを搭載(同時使用不可)
SRAM 264kB 520KB
外付けFlashROM 16MBまで対応 16MBまで対応
GPIO数 30ピン(内アナログ入力は4ピン) 30ピン(内アナログ入力は4ピン)
UART 2 2
SPI 2 2
I2C 2 2
PWM 16 24
USB 1(ホストとデバイスに対応) 1(ホストとデバイスに対応)
PIO 8 12

※内蔵Flashの有無やGPIO数、アナログ入力数が異なるデバイスファミリーも存在するので詳細は下記データシートを参照。

RP2040 https://datasheets.raspberrypi.com/rp2040/rp2040-datasheet.pdf
RP2350 https://datasheets.raspberrypi.com/rp2350/rp2350-datasheet.pdf

※第二世代はセキュアブート等のセキュリティ機能も搭載している。

マイコンボードのスペック

主要なマイコンボードのスペックを記載する。

Pico1

オフィシャルからはRaspberry Pi Pico、Pico H、Pico W、Pico WHの4種類がリリースされている。

Name Pico Pico H Pico W Pico WH
チップ RP2040 RP2040 RP2040 RP2040
SRAM 256KB 256KB 256KB 256KB
ROM 2MB 2MB 2MB 2MB
GPIO数 26 26 26 26
ADC 3 3 3 3
UART 2 2 2 2
SPI 2 2 2 2
I2C 2 2 2 2
PWM 16 16 16 16
PIO 8 8 8 8
WiFi 未対応 未対応 802.11n 802.11n
Bluetooth 未対応 未対応 Bluetooth5.2 Classic/LE Bluetooth5.2 Classic/LE
ピンヘッダー 未取付 ハンダ済み 未取付 ハンダ済み

ペリフェラルのピンアサイン

各ペリフェラル毎に使用可能なピンが決まっている。ペリフェラル毎のピンアサインを記載する。

SPI
Name GPIO
SPI0 RX GP0,4,16,20
SPI0 CSn GP1,5,17,21
SPI0 SCK GP2,6,18,22
SPI0 TX GP3,7,19,23
SPI1 RX GP8,12,24,28
SPI1 CSn GP9,13,25,29
SPI1 SCK GP10,14,26
SPI1 TX GP11,15,27

Pico2

オフィシャルからはRaspberry Pi Pico2、Pico2 Wの2種類がリリースされている。

Name Pico2 Pico2 W
チップ RP2350 RP2350
SRAM 520KB 520KB
ROM 4MB 4MB
GPIO数 26 26
ADC 3 3
UART 2 2
SPI 2 2
I2C 2 2
PWM 24 24
PIO 8 8
WiFi 未対応 802.11n
Bluetooth 未対応 Bluetooth5.2 Classic/LE
ピンヘッダー 未取付 未取付

購入したボード

購入したボードのノート

RP2040-Zero

ブレッドボードで使いやすいボードを探してAliexpressで購入。
左右9ピンで、下に5ピン出ている。下のヘッダーをつけるとブレッドボードに刺さらないので、左右だけつけて使用。

コネクタ:USB Type-C
スイッチ:BOOT, RESET
RGB LED(WS2812):1個
GPIO:20ピン+9パッド

ブレッドボードの接続構成

ブレッドボードで回路を作った際のノート

RP2040-ZeroとLCD, SD Card Slotを接続

LCD ST7735S 128*160 4-Wire SPI, VCC 3.3V-5V, Logic 3.3V, SD Card slot 4-Wire SPI

ピンアウト

Pico LCD SD Card Slot
5V
GND GND
3.3V VCC,LED
GP29
GP28 CS
GP27 RESET
GP26 A0(DC)
GP15(SPI1 TX) SDA
GP14(SPI1 SCK) SCK
GP0
GP1
GP2
GP3
GP4(SPI0 RX) SD_MISO
GP5(SPI0 CS) SD_CS
GP6(SPI0 SCK) SD_SCK
GP7(SPI0 TX) SD_MOSI
GP8

標準の開発環境としては、Raspberry Pi Pico C/C++ SDKとRaspberry Pi Pico Python SDKの2種類をリリースしている。Python SDKはMicroPythonというマイクロコントローラ向けに作成されたPython3相当のソフトウェアをポーティングしたものとなっている。
オフィシャル以外の開発環境として、MicroPythonから派生したCircuitPython、Arduino IDE、rustなどが存在する。

Name C/C++ SDK Python SDK(MicroPython) CircuitPython Arduino IDE Rust
開発言語 C/C++ Python Python C/C++ Rust
開発元 オフィシャル オフィシャル Adafruit OSS OSS
特徴 オフィシャルサポート。Picoの機能を深く使える。 オフィシャルサポート。Picoの機能をPicoの機能を深く使える。 Adafruit社のオフィシャル環境。同社販売のデバイスを中心に多くの機能に対応している Arduioのスケッチが動く Rustで開発出来る
Debug Probe対応

C/C++ https://datasheets.raspberrypi.com/pico/getting-started-with-pico.pdf
C/C++ https://datasheets.raspberrypi.com/pico/raspberry-pi-pico-c-sdk.pdf
MicroPython https://datasheets.raspberrypi.com/pico/raspberry-pi-pico-python-sdk.pdf
MicroPython https://docs.micropython.org/en/latest/rp2/quickref.html
CircuitPython https://circuitpython.org/board/raspberry_pi_pico/

REPLを使う

USBケーブルで接続してPythonのコードをコマンド実行することが出来る。

手順

  1. 下記ページより該当するPicoのMicroPython UF2ファイルをダウンロードする。
    https://www.raspberrypi.com/documentation/microcontrollers/micropython.html
  2. PCとPicoをUSBケーブルで接続する。
  3. PicoがUSBドライブ(RPI-RP2)として見えたら、ダウンロードしたUF2ファイルをコピーする。
    ※USBドライブが見えない場合は、BOOTボタンを押しながらRESETボタンを押して試す。
  4. コピーが完了したらPicoをリセットする。
  5. TeraTermなどのシリアルターミナルからPicoに接続するとREPLが使える。
>>> import os
>>> os.uname()
(sysname='rp2', nodename='rp2', release='1.24.1', version='v1.24.1 on 2024-11-2)

RGB LED(WS2812)を使う

RP2040-Zeroに搭載されているRGB LEDを使う。
RP2040-ZeroではWS2812というRGB LEDが搭載されており、WS2812の信号入力ピンDINがPicoのGP16に接続されている。

MicroPythonは標準でWS2812に対応したNeoPixelというライブラリが含まれているため、このライブラリを使用してLEDをコントロールすることが出来る。

マニュアル:https://docs.micropython.org/en/latest/library/neopixel.html

ライブラリを読み込み初期化後、赤、緑、青の順番にRGB LEDを点灯させる。
NeoPixelメソッドは、ポート(GP16)とRGBのLEDの数(1つ)を設定している。
NeoPixelはインスタンスがLED数分の配列になっており、配列にRGBの値(0-255)をタプル形式(R,G,B)でセットし、writeメソッドを実行することでRGB LEDに色を設定することが出来る。

>>> import neopixe
>>> p = machine.Pin.board.GP16
>>> n = neopixel.NeoPixel(p, 1)
>>> n[0] = (255,0,0)
>>> n.write()
>>> n[0] = (0,255,0)
>>> n.write()
>>> n[0] = (0,0,255)
>>> n.write()

REPLを使う

USBケーブルで接続してPythonのコードをコマンド実行することが出来る。

手順

  1. 下記ページより該当するボードのダウンロードページに行き、ダウンロードボタンを押してMicroPython UF2ファイルをダウンロードする。
    https://circuitpython.org/downloads
  2. PCとPicoをUSBケーブルで接続する。
  3. PicoがUSBドライブ(RPI-RP2)として見えたら、ダウンロードしたUF2ファイルをコピーする。
    ※USBドライブが見えない場合は、BOOTボタンを押しながらRESETボタンを押して試す。
  4. コピーが完了したらPicoをリセットする。
  5. TeraTermなどのシリアルターミナルからPicoに接続するとREPLが使える。
Auto-reload is on. Simply save files over USB to run them or enter REPL to disa.

Press any key to enter the REPL. Use CTRL-D to reload.
0;🐍REPL | 9.2.7
Adafruit CircuitPython 9.2.7 on 2025-04-01; Waveshare RP2040-Zero with rp2040
>>> import os
>>> os.uname()
(sysname='rp2040', nodename='rp2040', release='9.2.7', version='9.2.7 on 2025-0)

Pico https://circuitpython.org/board/raspberry_pi_pico/
Pico W https://circuitpython.org/board/raspberry_pi_pico_w/
Pico2 https://circuitpython.org/board/raspberry_pi_pico2/
Pico2 W https://circuitpython.org/board/raspberry_pi_pico2_w/
RP2040-Zero https://circuitpython.org/board/waveshare_rp2040_zero/

トラブルシューティング

CIRCUITPYファルダのファイルが書けなくなった場合

ファイル書き込み途中にリセットボタンを押すなどの理由でファイルシステムが破損する場合があり、
その場合はCIRCUITPYフォルダを初期化することで治る場合がある。

手順

  1. REPLに接続する。
  2. 初期化コードを入力して初期化を実行する。
import storage
storage.erase_filesystem()

Code Editorを使う

CircuitPythonはCircuitPythonのWebサイト上で、Code Editorという開発環境を提供している。
Code EditorはUSB(対応ボードの場合はWiFi、Bluetoothも可能)でPicoに接続し、プログラミングや実行することが出来る。

  1. PCとPicoをUSBケーブルで接続する。
  2. Code Editorを開く。
    https://code.circuitpython.org/
  3. WiFi, Bluetooth, USBから接続するインタフェースを選択。(ここではUSBを選択)
  4. Connect to Deviceをクリックすると、PCが認識しているシリアルポートの一覧が表示される。
  5. Picoが接続されているポートを選択する。
  6. Select USB Host Folderをクリックし、PCが認識しているCIRCUITPYのファルダを選択する。
  7. Code Editor上でコードの変更やREPLが使用できる。

拡張ライブラリ(バンドル)について

CircuitPythonでは標準の環境に含まれない機能をライブラリバンドル(以下バンドル)という形で提供しおり、必要な機能のバンドルファイルをCIRCUITPYフォルダの下のライブラリフォルダにコピーすることで機能を追加することが出来るようになっている。

バンドルは以下のサイトよりダウンロードする。

https://circuitpython.org/libraries

バンドルはCircuitPythonのメジャーバージョン毎に配布されており、9.x.x系だと「Bundle for Version 9.x」を10.x.x系だと「Bundle for Version 10.x」をダウンロードして使用する。今回は9.2.7を使っているので「Bundle for Version 9.x」を使用した。

ダウンロードしてZIPファイルを展開すると以下のフォルダが含まれている。
examples:各種サンプルコードが入っている。
lib:各種ライブラリが入っている。
requirements:各種ライブラリが依存するライブラリの情報が入っている。

バンドルの使い方

Adafruit binascii Libraryを使う場合の例。

ドキュメント https://docs.circuitpython.org/projects/binascii/en/stable/index.html

  1. Picoを起動してCIRCUITPYフォルダを開く。
  2. バンドルのlibフォルダにあるadafruit_binascii.mpyをCIRCUITPYの下のlibフォルダにコピーする。
  3. ライブラリが使用できるようになったので、REPLから使用してみる。
>>> from adafruit_binascii import hexlify, unhexlify
>>> hexlify(b'123')
b'313233'
>>> unhexlify(b'313233')
b'123'

LCDを使用する際は、Displayioライブラリが提供するディスプレイシステムを使用する。
ディスプレイシステムはI2C、SPI、パラレルインタフェースを提供するディスプレイバス、ディスプレイバスを使用して各種LCDコントローラ向けのアクセス機能を提供するディスプレイドライバを組み合わせて使用する。
Displayioライブラリ自体は簡単なグラフィック描画機能しか搭載していないので、テキストなどの表示を行う場合はDisplayioに対応したグラフィックライブラリを組み合わせて使用する。

下記に各ライブラリ間の接続図を記載する。

例としてSPIインタフェースを使用するST7735Sコントローラを使用したLCDでテキスト表示を行う場合は以下のような組み合わせで使用する。

LCD関係の各種ライブラリ

LCDを使用するための各種ライブラリ。必要に応じて組み合わせて使用する。内蔵はCircuitPythonにあらかじめ入っているもの、バンドルはバンドルとして提供されているのでファイル名に記載のファイルをlibフォルダにコピーする必要がある。

LCDコントローラ ST7735R、ST7735Sを使用する

ここではLCDコントローラとしてST7735Rや、ST7735Sが使われているLCDを使って表示を行う。
ハードウェアはRP2040-ZeroとLCDを接続を使用。
ST735RやST7735Sを使用する場合は、バンドルに含まれるAdafruit ST7735R Libraryを使用する。

ドキュメント https://docs.circuitpython.org/projects/st7735r/en/stable/index.html

使用手順

  1. バンドルに含まれるadafruit_st7735r.mpyをPicoにコピーする。
    ※ST7735Bはadafruit_st7735.mpyを使用するので間違えないように注意。
  2. REPLから使用してみる。
  3. 下記コードを入力すると、LCDにもREPLの出力が表示される。
import board, busio
import displayio
import fourwire
from adafruit_st7735r import ST7735R
spi = busio.SPI(clock=board.GP14, MOSI=board.GP15) 
displayio.release_displays()
display_bus = fourwire.FourWire(spi, command=board.GP26, chip_select=board.GP28, reset=board.GP27)
display = ST7735R(display_bus, width=160, height=128, rotation=270, bgr=True)

スクリーンショットを保存する

LCDに表示された内容をファイルに保存するには、adafruit_bitmapsaverライブラリを使用する。

リファレンス https://docs.circuitpython.org/projects/bitmapsaver/en/latest/api.html

スクリーンショット保存手順

  1. バンドルに含まれるlibフォルダの下のadafruit_bitmapsaver.mpyファイルをCIRCUITPY/libフォルダにコピーする。
  2. 内蔵ストレージを読み書き可能なモードにするため、CIRCUITPY/boot.py(無ければ新規作成する)に下記のコードを記載してリセットする。
import storage
storage.remount("https://zenn.dev/", False)
  1. スクリーンショット取得時は下記のようにadafruit_bitmapsaverライブラリ
    のsave_pixelsメソッドを使用する。
from adafruit_bitmapsaver import save_pixels
save_pixels("/1.bmp", display)
  1. 保存が完了したら、Picoをリセットする。
  2. CIRCUITフォルダ下に保存した1.bmpがある。※LCDを回転して使用している場合は回転前の状態で保存されるので、PC側で回転する必要がある。

サンプルコード


import board, busio
import displayio
import fourwire
from adafruit_st7735r import ST7735R
spi = busio.SPI(clock=board.GP14, MOSI=board.GP15) 
displayio.release_displays()
display_bus = fourwire.FourWire(spi, command=board.GP26, chip_select=board.GP28, reset=board.GP27)
display = ST7735R(display_bus, width=160, height=128, rotation=270, bgr=True)

from adafruit_bitmapsaver import save_pixels
save_pixels("/1.bmp", display)

テキストを表示する

テキストの表示にはadafruit_display_textライブラリを使用する。本ライブラリは内蔵フォントやフォントファイル使用して様々なデザインのフォントを表示することができる。

ライブラリ使用手順

  1. バンドルに含まれるlibフォルダの下のadafruit_display_textフォルダをCIRCUITPY/libフォルダにコピーする。

ラベルによる表示

label.Labelクラスを使用してテキスト表示を行う。

リファレンス https://docs.circuitpython.org/projects/display_text/en/latest/api.html#adafruit_display_text.label.Label

Labelクラスは初期化時にフォントや表示するテキストなどをパラメータとして指定する。
ここではCicuitPythonに内蔵されているterminalioフォントを使用してテキストを表示する。


import board, busio
import displayio
import fourwire
from adafruit_st7735r import ST7735R
spi = busio.SPI(clock=board.GP14, MOSI=board.GP15) 
displayio.release_displays()
display_bus = fourwire.FourWire(spi, command=board.GP26, chip_select=board.GP28, reset=board.GP27)
display = ST7735R(display_bus, width=160, height=128, rotation=270, bgr=True)

import terminalio
from adafruit_display_text import label
main_group = displayio.Group()
display.root_group = main_group
text1 = label.Label(terminalio.FONT, text="ABC", x=10, y=10)
text2 = label.Label(terminalio.FONT, text="1234",color=0xFF0000, x=10, y=20)
main_group.append(text1)
main_group.append(text2)

ビットマップラベルによる表示

bitmap_label.Labelクラスを使用してテキスト表示を行う。ラベルによる表示と似ているが、ビットマップラベルのほうがメモリ使用量を抑えることが出来る。

リファレンス https://docs.circuitpython.org/projects/display_text/en/latest/api.html#adafruit_display_text.bitmap_label.Label


import board, busio
import displayio
import fourwire
from adafruit_st7735r import ST7735R
spi = busio.SPI(clock=board.GP14, MOSI=board.GP15) 
displayio.release_displays()
display_bus = fourwire.FourWire(spi, command=board.GP26, chip_select=board.GP28, reset=board.GP27)
display = ST7735R(display_bus, width=160, height=128, rotation=270, bgr=True)

import terminalio
from adafruit_display_text import bitmap_label
main_group = displayio.Group()
display.root_group = main_group
text1 = bitmap_label.Label(terminalio.FONT, text="ABC", x=10, y=10)
text2 = bitmap_label.Label(terminalio.FONT, text="1234",color=0xFF0000, x=10, y=20)
main_group.append(text1)
main_group.append(text2)

テキストスクロール

scrolling_label.ScrollingLabelクラスを使用してテキスト表示のスクロールを行う。

リファレンス https://docs.circuitpython.org/projects/display_text/en/latest/api.html#adafruit_display_text.scrolling_label.ScrollingLabel

ScrollingLabelクラスは初期化時に表示する文字数や、スクロールアニメーションの時間を指定する。
また、スクロール動作を行うためにupdateメソッドを定期的に呼び出す必要がある。


import board, busio
import displayio
import fourwire
from adafruit_st7735r import ST7735R
spi = busio.SPI(clock=board.GP14, MOSI=board.GP15) 
displayio.release_displays()
display_bus = fourwire.FourWire(spi, command=board.GP26, chip_select=board.GP28, reset=board.GP27)
display = ST7735R(display_bus, width=160, height=128, rotation=270, bgr=True)

import terminalio
from adafruit_display_text.scrolling_label import ScrollingLabel
main_group = displayio.Group()
display.root_group = main_group
text1 = ScrollingLabel(terminalio.FONT, text="ABCD1234", x=10, y=10, max_characters=4, animate_time=0.3)
main_group.append(text1)
while True:
    text1.update()

アウトラインラベルによる表示

OutlinedLabelクラスを使用して縁取りされたテキストの表示を行う。

リファレンス https://docs.circuitpython.org/projects/display_text/en/latest/api.html#adafruit_display_text.outlined_label.OutlinedLabel

OutlinedLabelクラスは初期化時に縁取りの色(outline_color)や太さ(outline_size)などをパラメータとして指定する。


import board, busio
import displayio
import fourwire
from adafruit_st7735r import ST7735R
spi = busio.SPI(clock=board.GP14, MOSI=board.GP15) 
displayio.release_displays()
display_bus = fourwire.FourWire(spi, command=board.GP26, chip_select=board.GP28, reset=board.GP27)
display = ST7735R(display_bus, width=160, height=128, rotation=270, bgr=True)

import terminalio
from adafruit_display_text import outlined_label
main_group = displayio.Group()
display.root_group = main_group
text1 = outlined_label.OutlinedLabel(terminalio.FONT, text="ABC", x=10, y=50, color=0xFF00FF, outline_color=0x00FF00, outline_size=1, scale=3)
main_group.append(text1)

テキストボックスによる表示

TextBoxクラスを使用して横幅を超える文字数のテキストをセットした場合に自動的に改行して表示を行う。また、プロパティのalignに左寄せ(TextBox.ALIGN_LEFT)、センター(TextBox.ALIGN_CENTER)、右寄せ(TextBox.ALIGN_RIGHT)を指定することが出来る。

リファレンス https://docs.circuitpython.org/projects/display_text/en/latest/api.html#adafruit_display_text.text_box.TextBox


import board, busio
import displayio
import fourwire
from adafruit_st7735r import ST7735R
spi = busio.SPI(clock=board.GP14, MOSI=board.GP15) 
displayio.release_displays()
display_bus = fourwire.FourWire(spi, command=board.GP26, chip_select=board.GP28, reset=board.GP27)
display = ST7735R(display_bus, width=160, height=128, rotation=270, bgr=True)

import terminalio
from adafruit_display_text.text_box import TextBox
main_group = displayio.Group()
display.root_group = main_group
text1 = TextBox(terminalio.FONT, text="ABCDEFGHIJK0123456789", width=50, height=TextBox.DYNAMIC_HEIGHT, align=TextBox.ALIGN_CENTER, x=50, y=10)
main_group.append(text1)

BDFフォントの表示

adafruit_bitmap_fontライブラリを使用することで、BDFフォントファイルをロードして様々なフォントを表示することが出来る。

ライブラリ使用手順

  1. バンドルに含まれるlibフォルダの下のadafruit_bitmap_fontフォルダをCIRCUITPY/libフォルダにコピーする。
  2. BDFファイルをCIRCUITPYにコピーする。※サイズが大きいと容量が足りずにコピーに失敗する。
  3. 下記のコードでフォントを読み込む。
from adafruit_bitmap_font import bitmap_font
font = bitmap_font.load_font("fontfile.bdf") 
  1. テキスト表示時に読み込んだフォントを指定する。
text1 = label.Label(font, text="0123456789", x=10, y=10)

ここでは7セグフォントを表示するために、keshikan/DSEGというフォントを利用した例を記載。

https://www.keshikan.net/fonts.html

配布されているフォントはTrueType形式(.ttf)なので、BDF形式に変換する。
Linuxの場合はotf2bdfツールが使用できる。

$ otf2bdf DSEG7Classic-Bold.ttf -o dseg7.bdf

変換したdseg7.bdfをCITCUITPYフォルダにコピーする。
下記のようにdseg7.bdfを読み込んで使用する。


import board, busio
import displayio
import fourwire
from adafruit_st7735r import ST7735R
spi = busio.SPI(clock=board.GP14, MOSI=board.GP15) 
displayio.release_displays()
display_bus = fourwire.FourWire(spi, command=board.GP26, chip_select=board.GP28, reset=board.GP27)
display = ST7735R(display_bus, width=160, height=128, rotation=270, bgr=True)

from adafruit_display_text import label
from adafruit_bitmap_font import bitmap_font
font = bitmap_font.load_font("dseg7.bdf") 
main_group = displayio.Group()
display.root_group = main_group
text1 = label.Label(font, text="0123456789", x=10, y=10)
main_group.append(text1)

SD Cardを使用する(Circuit Python)

SD Cardには複数の接続方式があり、接続方式により読み書きの速度が変わる。
Circuit PythonのPico向けは現状SPI Bus Modeのみの対応となっている。

接続方式 モジュール Picoの対応
SPI Bus Mode sdcardio 対応
1bit SD Bus Mode sdioio 未対応
4bit SD Bus Mode sdioio 未対応

import board, busio
import sdcardio
import storage
spi = busio.SPI(clock=board.GP6, MOSI=board.GP7, MISO=board.GP4)
sd = sdcardio.SDCard(spi, board.GP5)
vfs = storage.VfsFat(sd)
storage.mount(vfs, '/sd')

各種ファイル操作

>>> import os

>>> os.listdir('/sd')                                                        
[]

>>> os.mkdir("/sd/test")                                                     
>>> os.listdir('/sd')                                                        
['test']                                                                     

>>> with open("/sd/test/test.txt", "w") as f:
        f.write("test 1234")
>>> os.listdir('/sd/test')                                                   
['test.txt']

>>> with open('/sd/test/test.txt', 'r') as f:
        f.read()
'test 1234'

>>> os.remove('/sd/test/test.txt')

>>> os.rmdir('/sd/test')                                                     
>>> os.listdir('/sd')                                                        
[] 
ToDo

7セグLEDを使う
音を出す
Picoで音を出す場合、内蔵のPWM機能を使用する方法と、I2S機能を使用する方法がある。
PWMはパルス信号を出力するモジュールで、外付けの抵抗とコンデンサでアナログ信号に変換する事で音を出すことが出来る。
I2Sはオーディオ用の通信規格で、I2Sに対応したオーディオコーデックICを接続することで高音質な音を出すことが出来る。

circuit pythonではどちらの方式にも対応しており、それぞれのスペックは以下となる。

信号再生
サイン波などの信号を再生する
PWM
I2S

WAVファイルの再生

MP3再生
PWM
SDカードからMP3再生

フラッグシティパートナーズ海外不動産投資セミナー 【DMM FX】入金

Source link

RELATED ARTICLES

返事を書く

あなたのコメントを入力してください。
ここにあなたの名前を入力してください

- Advertisment -
Google search engine

Most Popular

Recent Comments