SPRESENSEで始めよう!

日本製マイコンを世界のスタンダードにしようぜ

SPRESENSEで音を奏でよう・・・序章

今宵も見よう見まねで何かする

こんばんは。MYONです。今夜はSpresenseでビートボックスを作ろう。そうしよう。

元記事はys_taroさんのブログから

makers-with-myson.blog.ss-blog.jp

いいですね。息子さんも喜ぶでしょう。父は全然電気の事が分からない、家族親戚ほぼ文系ということで、何かあるたびに呼ばれて「俺は電気屋じゃねぇ!」となったことがありますが、修理することも趣味なのでヨシとしましょう。

さて、今回から工作もしていきます。ゴッドハンダのサイトでハンダ付けの腕を磨く日々ですが、今回はブレッドボードで再現してみましょう。

ちなみに、上記のサイトの必要なデータはGithubにあるのですが、もちろんアカウントは持ってないので、サクッと作りました、ええ。

まぁアカウントはなんぼあってもいいですからね。

今回は先にメインボードに書き込みしていきましょうか。

拡張ボードに繋がるGPIOを何に割り当てるかはこのスケッチで決まるわけで、そう、Spresenseにも心の準備をしてあげないと、いきなり繋げると悲鳴を上げるかもしれないですからね。

ではZIPで落とした一式の中からスケッチを入れて、と。

はい、SDカードに最初にMP3を入れておけと。直下でいいのかな。

コピー開始。完了。

さてArduinoIDEでスケッチを書きこ・・・めないですね。

何かアプリケーションでハンドルされていると。ええ、前回のスケッチ、自動演奏が動いている状態のままでございます。

これどうすればいいのよ。

とりあえずArduinoIDE再起動が吉ですね。

ほら、次へ進んだ。さっきよりド派手な真っ赤なメッセージを貰うことが出来ました。

'SDClass'does not name a type

なんですか、これは。穏やかじゃないですね。

SDClassってなんじゃ。そんなクラスメートはおらん。検索しまくり、

garretlab.web.fc2.com

このライブラリを使うためには、以下を宣言する。

#include <SPI.h>
#include <SD.h>

なるほど、分からんが、恐らくSpresense用のライブラリはほぼ導入済のはずなので、宣言出来てるかソースを見てみよう。この宣言通りでいいかはともかく。

#include <Audio.h>

SDClass theSD;
AudioClass *theAudio;

うむぅ。確かに宣言されておらぬ。間違って消してしまったのかな、記憶にないが。

それともSpresenseの場合はAudioライブラリを呼び出せば含まれているとか。

で、Audioライブラリが未導入である、と。

分からん~(泣)

ほならね、これでどうだ?!

f:id:MYON:20220215221847j:plain

SDライブラリinclude

おほほほ・・・!!!進みましたわ!んで、一難去ってまた一難。お次のお客様は

'reference to "File"is ambigyous'

ちょっと何言ってるか分からない。ボーイズビーアンビシャス?

「「ファイル」への参照はあいまいです」

はい。左様でございますか。

同様に、Fileなるライブラリがあったのでインクルード。これでどうだ!!!

ダメじゃ。あいまいってことはだ、何か欠けておるのだな。

定義っぽいところが

File file, rFile, lFile;

で、エラーが出るのは

File& soundOpen(char* name) 

ということはですよ、そう、分からん(笑)ライブラリのリファレンス検索開始!

Arduinoライブラリにはないな、うん、「提供された」とあるから、Spresenseの方のリファレンスを探すべきということね。

2.6. File ライブラリ

 2.6.1. 概要

File ライブラリは各種ストレージから共通に利用されるライブラリです。 File オブジェクトは、SDHCIFlasheMMC ライブラリから open() 関数によって生成されます。 本ライブラリは、オープンされた File オブジェクトに対してファイル操作を行う機能を提供します。

Spresense Arduino 開発ガイド

あったあった。

2.6.2. 機能

各種APIの詳細は、APIリファレンスマニュアル File Library API を参照してください。

File インスタンス名が myFile のとき、次のようにファイルをオープンします。

#include <SDHCI.h>
SDClass SD;
File myFile;

  myFile = SD.open("test.txt");

んん??!!FileじゃなくてSDHCIをインクルードすればええの?やってみよう。

だ、ダメだ・・・

リファレンス見てもFileにはsoundOpen()関数は提供されてないし?

いい感じにドツボにハマった。今日は寝よう!おやすみなさい~