光センサモジュールを2つ利用【解決】
前回の日記を書いた後に、次のような記事を見つけた。
つまりデジタルの1番は書き込み中は使えない可能性があるということだった。
早速、デジタル出力のピンを「1,2」から「2,3」に変更してトライしたらあっさりと成功した。
その後、若干の変更を経て下記のコードでテストを行い、成功した。
#include <SD.h> //---SDCard D4 pin const int sd_chip_select = 4; //---テスト用 int test_count = 0; String test_str = ""; String test_str2 = ""; int val=0; int val2=0; void setup() { //---Serialポートを開く Serial.begin(9800); pinMode(SS, OUTPUT); Serial.print(F("SDCard:")); //---SDライブラリの初期化エラー if(!SD.begin(sd_chip_select)) { Serial.println(F(" error...")); }else{ Serial.println(F(" OK")); //---ファイル一覧を表示 Serial.println(F("----------------------------")); Serial.println(F("----------------------------")); } } void loop(){ val=digitalRead(2); //---文字列に追記 test_str += val; test_str +=","; //---文字列を書き込み SdFileWrite("SEN1.csv", test_str); Serial.print(F("SEN1:")); Serial.println(val); val2=digitalRead(3); //---文字列に追記 test_str2 += val2; test_str2 +=","; //---文字列を書き込み SdFileWrite("SEN2.csv", test_str2); Serial.print(F("SEN2:"));Serial.println(val2); Serial.println(F("----------------------------")); delay(5000); } void SdFileWrite(String p_file_name, String p_str) { //---上書きモードでファイルを開く File file = SD.open(p_file_name , FILE_WRITE | O_TRUNC); if(file){ //---書き込み file.print(p_str); } else{ Serial.println(F(" error...")); } //---ファイルを閉じる file.close(); }
出力は下記のとおり、SDカードでの書き込みも確認した。
次回はセンサを3つにした上で、一部のはんだ付けを実行したい。