GR-SAKURA
GR-KURUMI
GR-COTTON
GR-CITRUS
GR-PEACH
GR-KAEDE
GR-ADZUKI
GR-LYCHEE
GR-ROSE
GR-MANGO(*)
SNShield
Web Compiler
IDE for GR
TOPPERS関連
女子美コラボ
その他
※プロデューサミーティング中
作り方使い方資料
イベント関連
作品記事
体験記事
ライブラリ
ツール
その他・過去ファイル
GR-CITRUSを開発環境IDE for GR(1.05)のArduino環境で開発中です。SDカードにデータを書きくソフトです。SDカードを途中で交換すると、SD.begin()でエラーが返ってきます。調べてみるとSD.begin()の所で1回目は正常で返ってきますが、ファイルクロース、エジェクト後、SDカード再投入はエラーを返してきます。端子の使い方はMOSI - pin 11MISO - pin 12CLK - pin 13CS - pin 2で基本の接続です。原因を調べてみるとSD.cppのboolean SDClass::begin(uint8_t csPin)で以下様な記述になっています。return card.init(SPI_FULL_SPEED, csPin) && volume.init(card) && root.openRoot(volume);1回目の実行では3つの関数のともに正常を返してきますが、2回目以降はroot.openRoot()でエラーを返してきます。2回目以降SD.begin()を呼んだ時はエラーを無視すればSDカードのファイルへの書き込みは正常にできます。しかし、不良のSDカードを入れられた場合エラーを表示できないのは問題があります。不良SDカードを入れた時は card.init(), volume.init(), root.openRoot()の全てでエラーを返してきます。したがってSD.begin()の中身をboolean result;result = card.init(SPI_FULL_SPEED, csPin)&& volume.init(card);root.openRoot(volume);return result;としてroot.openRoot()のエラーは返さないように変えて、不良SDカードの場合の検出、2回目以降のSDカードへの書き込みも正常に行われます。但し実験では1枚のSDカードを使っていますので、SDカードの種類が違った場合も正常に動作するかは試していません。エラーの根本原因を探して修正する必要があると思いますが、このようなエラーを修正をされた方は修正方法を教えてください。お願いいたします。