SDカードに光センサモジュール出力を書き込み
いよいよ購入したカードシールドと光センサモジュールを組み合わせたデバイスを作成することにした。
前回参考にしたホームページ
qiita.com
のコードの一部から
・カウントアップの機能を削除
・'SD'の文字追加を光センサモジュールの出力結果(val)にするように変更
・出力ファイルを加工しやすいように「STR.TXT」から「SEN1.CSV」に変更し、光センサモジュールの出力の後ろにカンマを追加するコードを追加
した結果、このようになった。
#include <SD.h> //---SDCard D4 pin const int sd_chip_select = 4; //---テスト用 int test_count = 0; String test_str = ""; int val=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("----------------------------")); SdFileList(); Serial.println(F("----------------------------")); } } void loop(){ val=digitalRead(2); //---文字列に追記 test_str += val; test_str +=","; //---文字列を書き込み SdFileWrite("SEN1.csv", test_str); Serial.println(F("----------------------------")); delay(5000); } void SdFileList() { File dir = SD.open("/"); while(1){ File entry = dir.openNextFile(); if(!entry){ break;} //---ファイルのみを表示(ファイル名は8文字+3文字) if (!entry.isDirectory()) { Serial.print('\t'); Serial.print(entry.name()); Serial.print("\t"); Serial.println(entry.size(), DEC); } entry.close(); } } String SdFileRead(String p_file_name) { String str; //---読み込みモードでファイルを開く File file = SD.open(p_file_name); Serial.print(F("SD FileRead: ")); Serial.print(p_file_name); if(file){ //---1byteずつ読み込んだ文字を結合 while (file.available()) { str += char(file.read()); } Serial.print(F(" > ")); Serial.println(str); } else{ Serial.println(F(" error...")); } //---ファイルを閉じる file.close(); //--------------------- // +返り値 //--------------------- return str; } void SdFileWrite(String p_file_name, String p_str) { //---上書きモードでファイルを開く File file = SD.open(p_file_name , FILE_WRITE | O_TRUNC); Serial.print(F("SD FileWrite: ")); Serial.print(p_file_name); if(file){ //---書き込み file.print(p_str); Serial.print(F(" << ")); Serial.println(p_str); } else{ Serial.println(F(" error...")); } //---ファイルを閉じる file.close(); }
結果、出力
SDカードファイルにあったCSVファイル
明日以降でもう少し不要なコードの整理と光センサモジュールの増設を行いたい。