技術士をとってからの日記

一般企業に勤めている技術士(金属)の30代。技術士をとってからの日常、CPDについて書ければいいと思っています。あと競馬。

光センサモジュールを2つ利用【解決】

前回の日記を書いた後に、次のような記事を見つけた。

qiita.com

つまりデジタルの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カードでの書き込みも確認した。
f:id:metaroid:20181121233409j:plain

次回はセンサを3つにした上で、一部のはんだ付けを実行したい。