ラベル Raspberry Pi Pico の投稿を表示しています。 すべての投稿を表示
ラベル Raspberry Pi Pico の投稿を表示しています。 すべての投稿を表示

2023年4月16日日曜日

Raspberry Pi PicoをUSBマウスとして使う(3/3)(マウスボタンのダブルクリックが使えるようにする)

マウスのダブルクリックが動くようにする

前の投稿で,マウスのダブルクリックができませんでしたが,このサイトで確認したところ,クリックも判定してもらえていないことが分かりました.

改めて,サンプルプログラムで確認しました.

Arduino IDEのメニューをたどると,サンプルプログラムとして[File]→[Examples]→[09.USB]→[Mouse]→[ButtonMouseControl]というのがあります.このサンプルでは,Mouse.press()とMouse.release()だけを使っており,Mouse.click()を使っていないのですが,このプログラムを用いると,このサイトのシングルクリックの判定とダブルクリックの判定がうまくいきました.また,ドラッグの動作もうまく行きました.

そこで,シンプルに,クリックとドラッグの判定をせずに,マウスボタンのdownとupそのものを送出するようにしました.

これが以下のプログラムです.

// move mouse cursor by joystick
// implement left/right button
// 2023/4/16

#include <Mouse.h>

void setup() {
  Serial.begin(9600);
  // joystick
  gpio_init(27);
  gpio_set_dir(27, GPIO_IN); // GP27 in:0(false) out:1(true)
  gpio_init(28);
  gpio_set_dir(28, GPIO_IN); // GP28 in:0(false) out:1(true)
  // button
  gpio_init(16); // right button
  gpio_set_dir(16, GPIO_IN);
  gpio_pull_down(16);
  gpio_init(17); // left button
  gpio_set_dir(17, GPIO_IN);
  gpio_pull_down(17);
  Mouse.begin();
  delay(5000);
}

#define MIN_RAW 3
#define MAX_RAW 1023
#define MIDDLE_RAW ((MAX_RAW - MIN_RAW)/2)

#define MOUSE_DOWN 1
#define MOUSE_UP 0

void loop() {

  //----------------------------------------
  // move
  uint16_t raw_x = analogRead(28); // 3..1023
  int16_t value_x = (raw_x - MIDDLE_RAW)/10; // -50..51
  uint16_t raw_y = analogRead(27); // 3..1023
  int16_t value_y = (raw_y - MIDDLE_RAW)/10; // -50..51

  float dx=0.0;
  float dy=0.0;
  if (value_x > 0) {
    dx = -((float)value_x * value_x / 200.0);
  } else {
    dx = ((float)value_x * value_x / 200.0);
  }
  if (value_y > 0) {
    dy = (float)value_y * value_y / 200.0;
  } else {
    dy = -(float)value_y * value_y / 200.0;
  }
  Mouse.move(dx, dy, 0);

  //----------------------------------------
  // click/drag
  bool left_button_val = gpio_get(17);
  bool right_button_val = gpio_get(16);

  // left button down
  if (left_button_val == MOUSE_DOWN) {
    // if the mouse is not pressed, press it:
    if (!Mouse.isPressed(MOUSE_LEFT)) {
      Mouse.press(MOUSE_LEFT);
    }
  } else {
    // if the mouse is pressed, release it:
    if (Mouse.isPressed(MOUSE_LEFT)) {
      Mouse.release(MOUSE_LEFT);
    }
  }
  // right button down
  if (right_button_val == MOUSE_DOWN) {
    // if the mouse is not pressed, press it:
    if (!Mouse.isPressed(MOUSE_RIGHT)) {
      Mouse.press(MOUSE_RIGHT);
    }
  } else {
    // if the mouse is pressed, release it:
    if (Mouse.isPressed(MOUSE_RIGHT)) {
      Mouse.release(MOUSE_RIGHT);
    }
  }
  delay(10);
}

これでめでたく,USBマウスとして使用することができるようになりました.

2023年4月13日木曜日

Raspberry Pi PicoをUSBマウスとして使う(2/3)(マウスボタンのクリック・ドラッグ)



前回の続きです.

Raspberry Pi PicoをUSBマウスとして使用するにあたって,マウスボタンの実装をします.

まずボタンは物理的にはスイッチとして実装されており,Raspberry Pi PicoではON (down)かOFF (up)かの状態が瞬間ごとに読み取れます.これだけではクリックとドラッグの区別ができませんので,ソフトウェアで実装します.

ソフトウェア

まず,ONかOFFかの読み取りは定期的に行われているので,前回の状態を記憶しておいて,ON→OFFとOFF→ONの状態変化を読み取ります.OFF→ONがボタンのdown,ON→OFFがボタンのupになります.

マウスのイベントとしては,MOUSE_DOWN, MOUSE_UP, MOUSE_CLICKを発出する必要があります.MOUSE_DRAGとMOUSE_CLICKのモードを作成して,MOUSE_DRAGモードの際にはMOUSE_DOWNとMOUSE_UPのイベントを発出します.MOUSE_CLICKモードの際には,マウスボタンを離した瞬間にMOUSE_CLICKイベントを発出することにします.

さらに,MOUSE_DRAGモードとMOUSE_CLICKモードの区別は以下のようにします.downの瞬間にdownしている時間の計測を始めます.初期状態はMOUSE_CLICKにしておいて,ある閾値(ここでは0.5秒)を超えたら,MOUSE_CLICKからMOUSE_DRAGに状態変化すると同時に,ここでMOUSE_DOWNイベントを発出します.

マウスボタンがupされた時点で,現在MOUSE_DRAGモードの場合にはMOUSE_UPイベントを,MOUSE_CLICKモードの場合にMOUSE_CLICKイベントを発出します.

図示すると以下のようになります.

ハードウェア

ハードウェアの製作は以下のようになります.push buttonの片方のピンを3.3Vに接続して,もう片方のピンをGPIOにpull down接続します.今回はGP16とGP17を使いました.

配線全体は以下のようになります.


以下の写真はボタンの部分の配線です.


以下の写真はRaspberry Pi Pico側の配線です.


ダブルクリックについて

ダブルクリックが未実装です.これも時間を測って,時間の閾値を決めてその時間内にマウスボタンがON→OFF→ON→OFFされたらダブルクリックイベントを発出する必要があるみたいです.

もしくは,OSに合わせてハードウェア側でクリックの時間をある程度決めないといけないのかも知れません.

続きはここで.

2023年4月12日水曜日

Raspberry Pi PicoをUSBマウスとして使う(1/3)(マウスカーソルの移動)

Raspberry Pi PicoをArduino IDEから使うと,USBマウスのサンプルソースコードがあります.メニューバーで[File]→[Examples]→[Mouse]→[Circle]のプログラムです.

このプログラムをArduino IDEからRaspberry Pi Picoに書き込み,Raspberry Pi PicoのBOOTSELボタンを押すと,マウスカーソルが円形に一周動きます.macOSのシステム設定でマウスの軌跡の速さを変更すると,この円の半径が変わるので,Raspberry Pi PicoがUSBマウスとして認識されていることが分かります.

ハードウェア

まず,ジョイスティックを使ってマウスカーソルを動かします.ジョイスティックとしてはスイッチサイエンスで購入できるAdafruitの小型アナログジョイスティック小型アナログジョイスティック用ピッチ変換基板をつけた物を,ブレッドボードに挿して用います.

まず,Raspberry Pi Picoのピン配置はこちらにあります.

36pin(3.3V),34pin(GP28),32pin(GP27),28pin(0V)を用います.結線は以下の写真のようにします.全体の写真が以下です.

ジョイスティックのハードウェアは,ただのボリューム(反固定抵抗)で,0Vと+の電圧を与えると,x軸方向とy軸方向の変位に比例した0Vと+の電圧の間の電圧が,x軸方向とy軸方向それぞれに対して出力されます.


次に,Raspberry Pi Pico側の結線の写真が以下です.


最後に,ジョイスティック側の結線の写真が以下です.


ソフトウェア

ジョイスティックの値を読んでシリアルコンソールに表示するプログラムは以下のようになります.

// read joystick and print to serial console
// 2023/4/12

#include <Mouse.h>

void setup() {
  Serial.begin(9600);
  Mouse.begin();
  delay(5000);
}

#define MIN_RAW 3
#define MAX_RAW 1023
#define MIDDLE_RAW ((MAX_RAW - MIN_RAW)/2)

void loop() {
  uint16_t raw_x = analogRead(28); // 3..1023
  int16_t value_x = (raw_x - MIDDLE_RAW)/10; // -50..51
  uint16_t raw_y = analogRead(27); // 3..1023
  int16_t value_y = (raw_y - MIDDLE_RAW)/10; // -50..51

  Serial.print("X raw=");
  Serial.print( raw_x );
  Serial.print(", Value=");
  Serial.print( value_x );

  Serial.print(", Y raw=");
  Serial.print( raw_y );
  Serial.print(", Value=");
  Serial.println( value_y );

  delay(10);
}

次に,ジョイスティックの値を見てマウスカーソルを動かすプログラムは以下のようになります.

// move mouse cursor by joystick
// 2023/4/12

#include <Mouse.h>

void setup() {
  Serial.begin(9600);
  Mouse.begin();
  delay(5000);
}

#define MIN_RAW 3
#define MAX_RAW 1023
#define MIDDLE_RAW ((MAX_RAW - MIN_RAW)/2)

void loop() {
  uint16_t raw_x = analogRead(28); // 3..1023
  int16_t value_x = (raw_x - MIDDLE_RAW)/10; // -50..51
  uint16_t raw_y = analogRead(27); // 3..1023
  int16_t value_y = (raw_y - MIDDLE_RAW)/10; // -50..51

  Serial.print("X raw=");
  Serial.print( raw_x );
  Serial.print(", Value=");
  Serial.print( value_x );

  Serial.print(", Y raw=");
  Serial.print( raw_y );
  Serial.print(", Value=");
  Serial.println( value_y );

  float dx=0.0;
  float dy=0.0;
  if (value_x > 0) {
    dx = -((float)value_x * value_x / 200.0);
  } else {
    dx = ((float)value_x * value_x / 200.0);
  }
  if (value_y > 0) {
    dy = (float)value_y * value_y / 200.0;
  } else {
    dy = -(float)value_y * value_y / 200.0;
  }
  Mouse.move(dx, dy, 0);
  delay(10);
}

マウスボタンの実装

続きはここで.

Raspberry Pi Pico/Pico WをArduino IDEから使う方法(macOS)

 Raspberry Pi Pico/Pico Wは通常のRaspberry Piと違い,OSが動いていないため,パソコンでプログラムを書いてこれらに書き込む必要があります.開発方法は以下の3種類あります.

  • ターミナルのコマンドプロンプトからgccとcmakeでbuild,installする
  • microPython用のファームウェアを書き込んで,Thonnyを使ってmicroPythonで開発する
  • Arduino IDEをRaspberry Pi Pico/Pico W対応にして,Arduinoのようにプログラムを書き込む
ここでは,Arduino IDEを使う方法をメモします.こちらのページを参照しました.

手順1:Arduino IDEをダウンロード,インストール

まずArduino IDEをインストールします.Arduino IDEはArduinoというマイコンボードのためのプログラムを書くために提供されている統合開発環境(IDE)ですが,拡張機能を入れることで,Raspberry Pi Pico/Pico Wでも使用できます.
以下のサイトにアクセスします.
以下のような画面が表示されます.

右側の「DOWNLOAD OPTIONS」から使用しているOSに合わせてダウンロードします.ここでは「macOS Apple Silicon」用の行をクリックします.
以下のような画面が表示されます.

寄付するかどうかを聞かれています.寄付しない場合は「JUST DOWNLOAD」をクリックしてください.ここではイメージファイル「arduino-ide_2.0.4_macOS_arm64.dmg」がダウンロードされました.

このファイルをダブルクリックして開くと,以下のようなウィンドウが開きます.


左のアイコンがアプリケーションのアイコン,右のアイコンが「アプリケーション」フォルダなので,左のアイコンを右のフォルダの中にドラッグ&ドロップすると,アプリケーション「Arduino IDE.app」が「アプリケーション」フォルダの中にコピーされます.
コピーが終了したら,「アプリケーション」フォルダの中,もしくはLaunch Padから起動します.以下のようなウィンドウが開きます.

手順2:Raspberry Pi Pico/Pico Wを使用するための初期設定

この状態ではRaspberry Pi Pico/Pico Wを使用できないので,初回のみ,使用するための初期設定を行います.メニューバーの「Arduino IDE」から「Preferences...」をクリックしてください.以下のような設定ウィンドウが開きます.

一番下にある「Additional boards manager URLs:」のテキストボックスに,以下のURLをコピー&ペーストしてください.

https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json

貼り付けたら右下の「OK」ボタンをクリックします. 

次にメニューバーの「Tools」から「Board」→「Boards Manager...」を選択してください.

以下のように,ウィンドウの左側にBoards Managerが表示されます.

一番上のテキストボックスに「pico」と打ち込んでください.

左のboards managerの表示をマウスでドラッグして広げると,以下のように「pico」にマッチするモジュールとして「Arduino Mbed OS RP2040 Boards by Arduino」,「Raspberry Pi Pico/RP2040 by Earle F. Philhover, III」と「[DEPRECATED - Please install standalone packages] Arduino Mbed OS Boards by Arduino」が表示されます.


2番目の「Raspberry Pi Pico/RP2040 by Earle F. Philhover, III」の「INSTALL」をクリックしてください.インストールが終了すると,以下のような表示に変わります.


これでインストールは終了です,左の縦バーで上から2番目のアイコン「Boards Manager」をクリックしてください.

ボード・マネージャーが閉じてスケッチブックに戻ります.

手順3:ボードと書き込みポートの選択

次にArduino IDEでプログラミングするボードを選びます.ここでは,Raspberry Pi Picoを選択します.メニューバーから「Tools」→「Board」→「Arduino Mbed OS RP2040 Boards」→「Raspberry Pi Pico」(Raspberry Pi Pico Wを使っている場合は「Raspberry Pi Pico W」)を選んでください.


「Tools」メニューに表示される項目が増えます.

ここで,Raspberry Pi Pico/Pico WボードをUSBケーブルでパソコンに接続してください.認識されていない場合は,Raspberry Pi Pico/Pico Wの「BOOLSEL」ボタンを押しながらUSBケーブルを接続してください.すると,接続用のUSBポートが新しくできるので「Port:」で「/dev/cu.usbmodem2201」(最後の4桁の番号は違う場合があります)を選択してください.

手順4:サンプルスケッチの書き込み

メニューバーで「File」→「Examples」→「01.Basics」→「Blink」を選択してください.新しくウィンドウが開いて,Blinkのソースコードが表示されます.


ボードとして「Raspberry Pi Pico」もしくは「Raspberry Pi Pico W」が表示されていること,メニューバーの「Tools」→「Port:」で「/dev/cu.usbmodem????」が選択されていることを確認して,左から2番目の書き込みボタンをクリックしてください.

Raspberry Pi Picoのボードに載っているLEDが点滅します.


Raspberry Pi Pico Wでも,ボードの選択をすれば同じプログラムが動きます.


メニューバーの「File」→「Examples」の中に色々とサンプルプログラムが入っているので試してみてください.

2023年4月11日火曜日

Raspberry Pi Pico/Pico WからI2SでPCM5102ボードにオーディオ出力(USB-DAC)

この記事では,Raspberry Pi Picoをpico audioボードに接続して,ここにあるプログラムをRaspberry Pi Picoに書き込んで,USB-DACとして使いました.

ここでは,ここで購入できる一般のPCM5102 I2Sボードを使ってUSB-DACを作成します.

プログラムの書き込みはここと一緒です.配付されたプログラムから何も書き換えていません.

ハードウェアの結線は以下のとおりです.このDACボードは5V電源なので,以下のように接続します.


USB-DACボードの左から順に書いています.

  • GND→接続なし
  • MCLK→接続なし
  • BICK→PICO 31pin
  • DATA→PICO 34pin
  • LRCK→PICO 32pin
  • GND→PICO 38pin
  • MUTE→結線なし
  • VCC→PICO 40pin

Raspberry Pi Pico/Pico Wのピン配置はこのようになっています.

これでパソコンからUSB-DACとして認識して音が出ました.


2023年4月5日水曜日

Raspberry Pi Pico/Raspberry Pi Pico WをMicroPythonで使う (macOS環境)

Raspberry Pi PicoおよびRaspberry Pi Pico Wは,パソコン上でThonnyというソフトウェアを使って,MicroPythonというPythonのサブセットを用いてプログラミングができます.

本稿は以下のページを参考にしました.

https://www.marutsu.co.jp/pc/static/large_order/zep/m-z-picoled-da1

https://tech-and-investment.com/raspberrypi-picow-2-pico_led/


ファームウェアのダウンロード


以下のページからダウンロードできます.

https://www.raspberrypi.com/documentation/microcontrollers/micropython.html



ファームウェアの作成(ソースコードからビルド)


以下では,Raspberry Pi PicoとRaspberry Pi Pico Wのファームウェア両方をコンパイルしています.
brew install python@3.11
cd
mkdir pico
cd pico
git clone -b master https://github.com/micropython/micropython.git
cd micropython
git submodule update --init -- lib/pico-sdk lib/tinyusb
make -C mpy-cross

cd lib/pico-sdk
git submodule update --init
cd ../..

export PICO_SDK_PATH=../../lib/pico-sdk
export PICO_TINYUSB_PATH=../../lib/tinyusb
cd ports/rp2
make PICO_BOARD=pico BOARD=PICO submodules
make PICO_BOARD=pico BOARD=PICO
make PICO_BOARD=pico_w BOARD=PICO_W submodules
make PICO_BOARD=pico_w BOARD=PICO_W
これで,pico/ports/rp2/build-PICO/firmware-uf2にRaspberry Pi Picoのファームウェアが,pico/ports/rp2-build-PICO_W/firmware-uf2にRaspberry Pi Picoのファームウェアが作成されます.

ファームウェアの書き込み


BOOTSELボタンを押しながらUSBでmacに接続すると,USBメモリとして認識されるので,ファームウェアのファイルをコピーしてください.ファイルのコピーが終わると自動的に再起動がかかります.

Python開発環境Thonnyのダウンロードとインストール


ThonnyというPythonの統合開発環境から直接プログラムを書き込んで動かすことができます.
https://thonny.org/にアクセスすると,Windows,Mac,Linuxのそれぞれのインストーラーがダウンロードできるので,ダウンロードしてアプリケーションをインストールします.
アプリケーションを起動すると,言語と初期設定を設定するダイアログが表示されます.
それぞれ日本語とRaspberry Piに設定します.
[Lets go!]ボタンをクリックすると,アプリケーションが起動します.

メニューバーの[Thonny]→[Settings...]をクリックして,「Thonnyオプション」ダイアログを開きます.「インタプリタ」タブを選択して,「MicroPython (Raspberry Pi Pico)」を選択します.


OKボタンをクリックしてこのダイアログを閉じたあと,Thonnyを再起動してください.

Raspberry Pi Picoで「Lチカ」プログラムの作成・実行


以下のようなプログラムを入力します.
以下のようなプログラムです.

Thonnyの起動時にRaspberry Pi PicoをUSBで接続していない場合は,右下のステータスバーでクリックして,Raspberry Pi Picoを選択すると,ThonnyがRaspberry Pi Picoに接続し直してボードを認識します.

ボードが認識されると,ウィンドウの上にある「実行」ボタンがクリックできるようになります.「実行」ボタンをクリックすると,プログラムがRaspberry Pi Picoに書き込まれて,LEDがチカチカします.

picozeroライブラリのインストール


上記のプログラムはピン番号が指定してある古いプログラムです.現在はpicozeroというライブラリが使えて,ピン番号を指定不要になっています.また,同じプログラムがRaspberry Pi PicoとRaspberry Pi Pico Wの両方で動きます.このライブラリを設定します.

まず,Thonnyのツールバーの右端にある,「通常モードに変更」をクリックして,Thonnyを再起動します.

すると,メニューバーが以下のように変わります.

メニューバーで「ツール」→「パッケージを管理...」を選択します.以下のようなパッケージ管理ダイアログが開きます.

検索テキストボックスに「picozero」と入力して,右の「PyPIを検索」ボタンをクリックすると,以下のようにpicozeroが表示されます.

検索結果にある「picozero」をクリックします.

下にある「インストール」ボタンをクリックします.インストールが進みます.

インストールが終了しました.「閉じる」ボタンをクリックしてください.

Raspberry Pi Pico/Pico Wでpicozeroを使った「Lチカ」プログラムの作成・実行


以下のようなプログラムを書きます.

このプログラムをmain.pyという名前で保存すると,Raspberry Pi PicoとRaspberry Pi Pico Wの両方で動きます.

2021年5月17日月曜日

Raspberry Pi PicoでUSB-DAC(I2Sボードをつけて音出し)

前の投稿でRaspberry Pi PicoをUSB-DACにするソースコードをコンパイルし,ボードに書き込んで,パソコンでUSB-DACとして認識させるところまでできたので,今回は最終的に音出しまでします.

まず,I2S-DACボードはこれを使いました.Raspberry Pi Picoに足の配置が合わせてあり,そのまま挿すことができます.ボードの裏には,Raspberry Pi Picoの絵が描いてあり,挿す向きもわかります.Raspberry Pi Picoに足をはんだ付けしますが,足が曲がって付かないように,Raspberry Pi PicoとI2S DACボードの両方にピンを挿した状態ではんだ付けします.

実際に動かすには,ソースコードの書き換えが必要でした.この製品のページ

You can use Pico Audio Pack with the I2S audio examples provided by Raspberry Pi in their experimental examples (usb_sound_card and sine_wave_i2s). You'll need to #define PICO_AUDIO_I2S_DATA_PIN and PICO_AUDIO_I2S_CLOCK_PIN_BASE to 9 and 10 respectively to tell the examples which pins are being used for the audio data.

とあります.具体的にこれらの値が定義されているファイルは

pico-extras/src/rp2_common/pico_audio_i2s/include/pico/audio_i2s.h 

です.このファイルを以下のように書き換えます.


#ifndef PICO_AUDIO_I2S_DATA_PIN
//#warning PICO_AUDIO_I2S_DATA_PIN should be defined when using AUDIO_I2S
// https://shop.pimoroni.com/products/pico-audio-pack
#define PICO_AUDIO_I2S_DATA_PIN 9 // 28
#endif

#ifndef PICO_AUDIO_I2S_CLOCK_PIN_BASE
//#warning PICO_AUDIO_I2S_CLOCK_PIN_BASE should be defined when using AUDIO_I2S
// https://shop.pimoroni.com/products/pico-audio-pack
#define PICO_AUDIO_I2S_CLOCK_PIN_BASE 10 // 26
#endif


実際に使っているピン番号は12, 14, 15なので,なぜこの番号なのかは謎です.この後,pico-extrasをbuildしなおします.その上で,pico-playgroundをbuildしなおします.

pico-playground/build/usb_sound_card/usb_sound_card.uf2をRaspberry Pi Picoに書き込むと,ボードが再起動して,音がこのボード経由で出せるようになります.

I2Sボードの方はPCM5100Aで32bit, 384kHzまで出力できるのに,Raspberry Pi PicoがXMOSと違いソフトウェアで処理を実行しているので,16bit, 44.1kHz/48kHzしか出力できないのは残念です.

ただ,ソフトウェアでUSBから入力した信号をI2Sに出力しているので,ここで信号処理が色々できると面白いと思います.ソースコードの公開されているUSB-DACって,物がないので,自分でいじるには貴重はハードウェアではないでしょうか.

2021年5月15日土曜日

Raspberry Pi PicoでUSB-DAC(I2Sボード無しでbuild,installまで)

Raspberry Pi PicoでLチカの続きです.

Raspberry Pi PicoからI2S信号をI2S-DACに出力すると,Raspberry Pi PicoのUSBがパソコンに対してslave側なので,パソコンのUSBに外付けしてUSB-DACとして使えるのでは?という話です.



この商品の記述に,「カスタムUSBサウンドカード」って書いてあるので,いろいろ探してみた所,こういうソースコードを見つけました.ざっと眺めてみると,どうもUSBとI2Sを両方使っているので,USBオーディオデバイスとしてパソコンから認識されて,I2Sに信号を流し込めるっぽいです.

このページをみると,pico-playgroundはpico-extras内のライブラリを使っていると書いてあります.

まず,pico-sdkやpico-exampleディレクトリのあるディレクトリで以下ようにライブラリとexampleを取得します.

git clone -b master https://github.com/raspberrypi/pico-extras.git
git clone -b master https://github.com/raspberrypi/pico-playground.git

ここの,pico-playground/apps/usb_sound_card/がそれっぽいです.


まずは,pico-extrasからbuildします.

cd pico-extras
git submodule update --init
mkdir build
cd build
export PICO_SDK_PATH=../../pico-sdk
cmake ..
make

これでpico-extras以下が全てコンパイルできした.


次にpico-playgroundをbuildします.

cd ../../pico-playground
mkdir build
cd build
export PICO_SDK_PATH=../../pico-sdk
export PICO_EXTRAS_PATH=../../pico-extras
cmake ..
make

これでpico-extrasが全てコンパイルできました.


Raspberry Pi PicoのBOOTSELボタンを押しながらUSBケーブルでMacに接続すると,RPi-RP2という外付けストレージとして認識されます.

pico-playground/buildの中のファイルapps/usb_sound_card/usb_sound_card.uf2をRPi-RP2の中にコピーすると,RPi-RP2がアンマウントされ,Raspberry Pi Picoが再起動してプログラムが動きます.このとき,Raspberry Pi Picoは外付けUSBストレージとして認識されません.画面の一番上のオーディオボリュームをクリックしてみると,無事にオーディオ出力デバイスとして認識されているようです.


また,/アプリケーションズ/ユーティリティ/Audio MIDI設定.appを起動してみると,48kHzと44.1kHzが使えて,初期値が48kHzのオーディオデバイスとして認識されていることがわかります.



Raspberry Pi Picoに足をはんだづけするのを忘れたのと,I2S DACボードを家に持って帰ってくるのを忘れたので,とりあえず今日はここまでです.

続きはここで.

Raspberry Pi PicoのSDKをmacOSでセットアップしてC言語でLチカ

Linuxの動かないRaspberry Pi,Raspberry Pi Picoの開発環境をmacOS (Catalina 10.15.7)上に構築します.



以下のページを参照してmacOS上を構築しました.

https://fukuno.jig.jp/3116

以下のようにSDKをインストールして,コマンドラインからサンプルプログラムblinkをbuildしました.


brew install cmake
brew tap ArmMbed/homebrew-formulae
brew install arm-none-eabi-gcc

cd ~/
mkdir pico
cd pico

git clone -b master https://github.com/raspberrypi/pico-sdk.git
cd pico-sdk
git submodule update --init
cd ..
git clone -b master https://github.com/raspberrypi/pico-examples.git

cd pico-examples
mkdir build
cd build
export PICO_SDK_PATH=../../pico-sdk
cmake ..

cd blink
make


いつものように,まずはLチカから動かしてみます.Raspberry Pi PicoのBOOTSELボタンを押しながらUSBケーブルでMacに接続すると,RPi-RP2という外付けストレージとして認識されます.
上のコマンドラインでbuildしてできたblink.utf2ファイルをRPi-PI2の中にコピーすると,RPi-RP2がアンマウントされて,プログラムが動きます.



引き続きこのページで,Raspberry PiをUSB-DACにしてみます.