Arduinoのスケッチで「変化が有った時」に変更
お世話になります。
このスケッチを見るとHIGHの時に記録するようになっていると考えていますが、HIGHかLOWの変化の有った時に記録したいのですが、どのように変更すれば良いか教えて下さい。
また、記録上の0000 0000 0000のようにスペースを開けて記録する場合のスケッチも教えていただけますか。
参考にしたHP
http://www.mauroalfieri.it/en/elettronica/data-logging-con-arduino.html
元のスケッチのチャンネル数はアナログ4chですがこれにデジタル12chを加え合計16chにしてみました。
実機では、まだ検証していませんがソフト上ではエラーは発生していません。
その他、改善点なども有りましたら、ご教授お願い致します。
皆様、よろしくお願い致します。
// Date and time functions using a DS1307 RTC connected via I2C and Wire lib
#include <Wire.h>
#include "RTClib.h"
#include <SD.h>
#define readButton 16
#define CS 10
RTC_DS1307 RTC;
char buffer[40];
File myFile;
void setup () {
Serial.begin(57600);
Serial.print("Initializing SD card...");
pinMode(CS, OUTPUT);
pinMode(readButton, INPUT);
if (!SD.begin(CS)) {
Serial.println("initialization failed!");
return;
}
Serial.println("initialization done.");
Wire.begin();
RTC.begin();
RTC.sqw(1); //0 Led off - 1 Freq 1Hz - 2 Freq 4096kHz - 3 Freq 8192kHz - 4 Freq 32768kHz
if (! RTC.isrunning()) {
Serial.println("RTC is NOT running!");
// following line sets the RTC to the date & time this sketch was compiled
RTC.adjust(DateTime(__DATE__, __TIME__));
}
}
void loop () {
DateTime now = RTC.now();
sprintf(buffer, "%02d/d/%d d:%02d:%02d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d", now.day(), now.month(), now.year(), now.hour(), now.minute(), now.second(), digitalRead( A1 ), digitalRead( A2 ), digitalRead( A3 ),digitalRead( A4 ), digitalRead( A5 ), digitalRead( A6 ), digitalRead( A7 ),digitalRead( A8 ), digitalRead( A9 ), digitalRead( A10 ), digitalRead( A11 ),analogRead( A0 ), analogRead( A1 ), analogRead( A2 ), analogRead( A3 ));
Serial.println( buffer );
myFile = SD.open("dati.log", FILE_WRITE);
if (myFile) {
myFile.println(buffer);
myFile.close();
} else {
Serial.println("error opening dati.log");
}
if ( digitalRead( readButton ) == HIGH ) {
Serial.println(" ");
Serial.println("Log Reading Saved ----------- ");
Serial.println(" ");
myFile = SD.open("dati.log");
if (myFile) {
while (myFile.available()) {
Serial.write(myFile.read());
}
myFile.close();
}
delay( 5000 );
}
delay(1000);
}
補足
前者の可能性が高いです。 つまり、"string"を使えばいいという事でしょうか?