※記事内に商品プロモーションを含む場合があります
気圧計にシリアル出力を付けたので ロギングしようと思い、
前買ったarduino unoでシリアルデータロガーを作りました。
arduino unoでシリアルデータロガー
SDカードへの保存は、
ArduinoでSDメモリカードを読み書きする
を参考にしました。
動作はシリアルデータを受信してSDカードのlog.txtに保存します。
ログをWindowsで開くと改行が出来てなかったりしたので
0x0Dは無視して、 0x0Aならprintln(“”);で改行コードを入れる様にしました。
SDカードスロットが無かったのでマイクロSDからSDカードに変換する
アダプタを使用しました。
5Vから3.3Vへのレベル変換は分圧抵抗で行いました。
今後は、arduino用シールドに実装してRTCモジュールを入れて
改行コード挿入時に時間などを挿入出来る様にしたいと思います。
スケッチ
現時点のスケッチです。
// 変数の定義
#include <SD.h>
// 初期化
void setup(){
// シリアルポートを9600 bps[ビット/秒]で初期化
Serial.begin(9600);
Serial.print(“Initializing SD card…”);
pinMode(10, OUTPUT);
if (!SD.begin(4)) {
Serial.println(“initialization failed!”);
return;
}
Serial.println(“initialization done.”);
}
// 繰り返し処理
void loop(){
char inputchar;
if (Serial.available() > 0) {
// シリアルポートより1文字読み込む
inputchar = Serial.read();
File myFile;
myFile = SD.open(“log.txt”, FILE_WRITE);
if (myFile) {
if(inputchar == 0x0A or inputchar == 0x0D){
if(inputchar == 0x0A){
Serial.print(“\n”);
myFile.println(“”);
myFile.close();
}
if(inputchar == 0x0D){
myFile.close();
}
}else{
Serial.print(inputchar);
myFile.print(inputchar);
myFile.close();
}
} else {
Serial.println(“error opening LOGFILE”);
}
}
}