Sto realizzando un semplice datalogger e mi piacerebbe capire come creare una funzione per semplificare un po' il listato. Ammesso che si possa fare, (le funzioni devo ancora capirle per bene) è possibile crearla da questo blocco
RTC.read(tm);
dataFile.print("Data= ");
dataFile.print(tm.Day);
dataFile.print('/');
dataFile.print(tm.Month);
dataFile.print('/');
dataFile.print(tmYearToCalendar(tm.Year));
dataFile.print(" ");
dataFile.print("Time= ");
dataFile.print(tm.Hour);
//print2digits(tm.Hour);
dataFile.print(':');
dataFile.print(tm.Minute);
//print2digits(tm.Minute);
dataFile.print(':');
dataFile.print(tm.Second);
//print2digits(tm.Second);
dataFile.print(" >> ");
dataFile.print(incoming);
dataFile.println(" <<");
dataFile.close();
preso dal listato completo ciè questo?
/* Connessioni:
* SD card collegata al bus SPI
- MOSI - pin 11
- MISO - pin 12
- CLK - pin 13
- CS - pin 10
*/
// Ricevitore con funzione "Uomo presente"
//#include <SoftwareSerial.h>
#include <DS1307RTC.h>
#include <Time.h>
#include <Wire.h>
#include <SPI.h>
#include <SD.h>
#define out1 3
//#define out2 7 // feedback di stato uscita
//SoftwareSerial mySerial(8, 9); // RX, TX per debug
char incoming;
const int chipSelect = 10;
void setup()
{
pinMode(out1, OUTPUT);
//pinMode(out2, OUTPUT);
Serial.begin(9600); // inzializzo seriale
//mySerial.begin(9600); // inzializzo seriale di debug
SD.begin(chipSelect);
/*
mySerial.println("Inizializzo SD card...");
if (!SD.begin(chipSelect)) { // see if the card is present and can be initialized
mySerial.println("Inizializzazione fallita o SD non presente");
return; // don't do anything more:
}
mySerial.println("Card inizializzata.");
*/
}
void loop()
{
tmElements_t tm;
if(Serial.available()>0){
incoming = Serial.read();
File dataFile = SD.open("datalog.txt", FILE_WRITE);
if (dataFile) { // if the file is available, write to it
RTC.read(tm);
dataFile.print("Data= ");
dataFile.print(tm.Day);
dataFile.print('/');
dataFile.print(tm.Month);
dataFile.print('/');
dataFile.print(tmYearToCalendar(tm.Year));
dataFile.print(" ");
dataFile.print("Time= ");
dataFile.print(tm.Hour);
//print2digits(tm.Hour);
dataFile.print(':');
dataFile.print(tm.Minute);
//print2digits(tm.Minute);
dataFile.print(':');
dataFile.print(tm.Second);
//print2digits(tm.Second);
dataFile.print(" >> ");
dataFile.print(incoming);
dataFile.println(" <<");
dataFile.close();
}
/*
else { // if the file isn't open, pop up an error:
mySerial.println("error opening datalog.txt");
}
*/
if(incoming == 'H' ){ // se arriva comando ON
digitalWrite(out1, HIGH); // scrivo su out1
//digitalWrite(out2, HIGH);
//mySerial.println('H');
delay(100);
}
if(incoming == 'L'){ // se arriva comando OFF
digitalWrite (out1, LOW); // scrivo su out1
//digitalWrite (out2, LOW);
//mySerial.println('L');
delay(100);
}
}
}
/*
void print2digits(int number) {
if (number >= 0 && number < 10) {
Serial.write('0');
}
Serial.print(number);
}
*/
Ho provato parecchio anche tentando di capire cosa c'è scritto su alcuni testi in mio possesso ma proprio non ci riesco....
Grazie per l'eventuale dritta.