Introducción
En este post vas a aprender cómo almacenar la información proporcionada por tu RTC.
Estos enlaces te van a redirigir a nuestro sitio web donde podrás encontrar:
Cómo programar un controlador PLC M-Duino RTC Leer >>
y también
Cómo usar una tarjeta SD Leer >>
Es muy importante echar un vistazo a estos artículos, ya que lo que vamos a hacer es una fusión entre el código del RTC y la tarjeta SD.
Requisitos
Con tal de trabajar con una micro SD, debes tener un M-Duino PLC (Controlador Lógico Programable basado en Arduino para la automatización industrial) incluido en las familias siguientes:
También necesitarás una tarjeta micro SD y unas pinzas.
Comprobación de los interruptores
Antes de proceder a conectar la tarjeta SD al controlador industrial, debes verificar que el interruptor SD está correctamente configurado. Debes verificar los interruptores de comunicación y coloca el interruptor SD en la posición OFF (si tu PLC lo tiene) . Además, tienes que comprobar que el RTC SCL y RTC SDA están en modo ON para habilitar cables I2C al RTC.
Software
Una vez se haya realizado con éxito la programación del RTC siguiendo los pasos del blog RTC test en versión M-Duino PLUS,donde se enviaban los datos utilizando el Monitor Serie, procederemos a guardarlos a la tarjeta SD. Lo primero que tienes que hacer es incluir las librerías RTC, SD y SPI.
El segundo paso es crear el archivo donde almacenarás la información. Luego creas todas las constantes, configuras el bus que comunica el Arduino con la tarjeta SD y almacenas todas las constantes en una nueva variable interna.
En el siguiente paso, debes abrir el archivo de la tarjeta SD y almacenar toda la información de cada variable. El último paso consiste en cerrar el archivo porque si no lo haces, el almacenamiento nunca se detendrá.
#include <RTC.h> #include <SD.h> #include <SPI.h> File myFile; const int YEAR = 2020; const int MONTH = 2; const int DAY = 26; const int HOUR = 12; const int MINUTE = 20; const int SECOND = 25; //const int TIME = 1522242547; //UNIX timestamp (spent seconds since Jan 1 1970 00:00:00) //////////////////////////////////////////////////////////////////////////////////////////////////// void setup() { SD.begin(53); RTC.setYear(YEAR); //sets year RTC.setMonth(MONTH); //sets month RTC.setMonthDay(DAY); //sets day RTC.setHour(HOUR); //sets hour RTC.setMinute(MINUTE); //sets minute RTC.setSecond(SECOND); //sets second //RTC.setTime(TIME); //sets UNIX timestamp if(!RTC.write()){ //RTC.write writes in the RTC memory all that has been set Serial.println("Write date error: Are the switches well placed?"); } } //////////////////////////////////////////////////////////////////////////////////////////////////// void loop() { SD.begin(53); myFile = SD.open("test.txt", FILE_WRITE); if (!RTC.read()) { Serial.println("Read date error: is time set?"); } else { Serial.print("Time: "); myFile.println(RTC.getYear()); Serial.print("-"); myFile.println(RTC.getMonth()); Serial.print("-"); myFile.println(RTC.getMonthDay()); Serial.print(" "); myFile.println(RTC.getHour()); Serial.print(":"); myFile.println(RTC.getMinute()); Serial.print(":"); myFile.println(RTC.getSecond()); Serial.print(" ("); myFile.println(RTC.getTime()); Serial.println(")"); myFile.close(); } delay(1000); }