PitSDMicroModuleRTC

L'utilizzo del PitSDMicroModuleRTC modulo SD + RTC.

 

 

Utilizzo collegamenti e spiegazioni

Il PitSDMicroModuleRTC in azione:

Cosa serve:

  • PitSDMicroModuleRTC

Codice sorgente:




/*
 * 
 * 
 * 
 * 
 * 
 * 
 * 
 * 
 Il codice è l'adattamento del codice SD datalogger e del codice RTC by zappoco 2019
 
 SD card datalogger

 This example shows how to log data from three analog sensors
 to an SD card using the SD library.

 The circuit:
 * analog sensors on analog ins 0, 1, and 2
 * SD card attached to SPI bus as follows:
 ** MOSI - pin 11
 ** MISO - pin 12
 ** CLK -  pin 13
 ** CS - pin 4 (for MKRZero SD: SDCARD_SS_PIN)

 created  24 Nov 2010
 modified 9 Apr 2012
 by Tom Igoe

 This example code is in the public domain.

 -----------------------------------
 Date and time functions using a DS1307 RTC connected via I2C and Wire lib


 */

#include "SPI.h"
#include "SD.h"
#include "RTClib.h"


// SD
const int chipSelect = 4;

// RTC
#if defined(ARDUINO_ARCH_SAMD)  // for Zero, output on USB Serial console, remove line below if using programming port to program the Zero!
   #define Serial SerialUSB
#endif

RTC_DS1307 rtc;

char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};

void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }
  delay (1000);

  //
  // SD
  //
  Serial.print("Initializing SD card...");

  // see if the card is present and can be initialized:
  if (!SD.begin(chipSelect)) {
    Serial.println("Card failed, or not present");
    // don't do anything more:
    return;
  }
  Serial.println("card initialized.");

  //
  // RTC
  //


  if (! rtc.begin()) {
    Serial.println("Couldn't find RTC");
    while (1);
  }

  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(F(__DATE__), F(__TIME__)));
    // This line sets the RTC with an explicit date & time, for example to set
    // January 21, 2014 at 3am you would call:
    // rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
     // rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
  }
  //rtc.adjust(DateTime(2019, 2, 9, 19, 52, 0));
  //SD.remove("datalog.txt");

  File dataFile = SD.open("datalog.txt", FILE_WRITE);
  dataFile.println("Inizio scrittura");
  dataFile.close();
}

void loop() {
  // make a string for assembling the data to log:
  String dataString = "";

  // lettura RTC
  DateTime now = rtc.now();
  
  dataString += String(now.year()) ;
  dataString += "/";
  dataString += String(now.month());
  dataString += "/";
  dataString += String(now.day());
  dataString += " - ";
  
  dataString += String(daysOfTheWeek[now.dayOfTheWeek()]);
  
  dataString += " - ";

  //sprintf(buf, "Hello!%d", n);

  dataString += String(now.hour());
  dataString += ":";
  dataString += String(now.minute());
  dataString += ":";
  dataString += String(now.second());

  dataString += " - ";

  // read three sensors and append to the string:
  for (int analogPin = 0; analogPin < 3; analogPin++) {
    int sensor = analogRead(analogPin);
    dataString += String(sensor);  
    if (analogPin < 2) {
      dataString += ",";
    }
  }
  
  // open the file. note that only one file can be open at a time,
  // so you have to close this one before opening another.
  File dataFile = SD.open("datalog.txt", FILE_WRITE);

  // if the file is available, write to it:
  if (dataFile) {
    dataFile.println(dataString);
    dataFile.close();
    // print to the serial port too:
    Serial.println(dataString);
  }
  // if the file isn't open, pop up an error:
  else {
    Serial.println("error opening datalog.txt");
  }
  delay (1000);
}




Scarica tutto quello che serve: