質問: Arduino を勉強しています。
回答: > void setup() { > Serial.begin(9600); > pinMode(SS, OUTPUT); > if( !SD.begin(SD_SS) ) { > Serial.print("Failed : SD.begin()\n"); > return; > } > //略 > _IO_Init(); //Init IO のように書かれていますけど、 Serial.beginは、DOとD1をUARTで使う命令(D0を入力、D1を出力)です。 SD.beginは、SPI機能を有効にしています。(MISOピンを入力) それに対して、_IO_Initは全てのピンをLOW出力にしています。 言いたいのは、UARTやSPI設定した内容が_IO_Initで書き換えられているのではないか?という事です。 この場合は一番最初に_IO_Init();をすべきです。 ...っていうか、よく見ればLEDマトリクス操作にSDの操作ピンを使っているじゃないですか。 いくらSDの読み取り→ドットマトリクス操作と2つに分けたとしても、SD_SSやSPIのクロックを動かす行為はお勧めできません。 また、SDのMISOピンは出力(にもなる)なので、回路も対応させなければなりません。 プログラム以前に、安全に動く回路を考えるべきです。 また、setup関数内で > char szBuffer[200]; > int pBuffer[200]; としています。 これは、setup関数が終われば寿命がつきます。 また、SDから読みだしたpBufferを利用している個所が見当たらないのですけど? (勿論、シリアルで表示しているのは判りますけど、LED表示に利用している、という意味です。 それともこのデータはシリアル表示用のデータなの?)