Está en la página 1de 5

#include <RTClib.

h> //librería para el reloj DS13073


#include <Wire.h>
#include <SD.h> //librería para la microSD
#include <SPI.h> //agregamos la librería para escritura
#include <LiquidCrystal_I2C.h> //librería para el LCD
//librería para sensor DS18B20
#include <OneWire.h>
#include <DS18B20.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2 //define la entrada digital del arduino para leer los DS18
//#define I2C_ADDRESS 0x77 //dirección del reloj
OneWire oneWire(ONE_WIRE_BUS);
int b=4;
//definimos los sensores a conectar, anotar la dirección del sensor
DallasTemperature sensors(&oneWire);
DeviceAddress S1 = {0x28, 0xFF, 0x46, 0x43, 0xc4, 0x17, 0x04, 0x7B}; //direction del
sensor Frio
DeviceAddress S2 = {0x28, 0xFF, 0x00, 0xCF, 0xC3, 0x17, 0x04, 0xBF}; //dirección
del sensor caliente

//LiquidCrystal lcd (8, 7, 6, 5, 4, 3); // los pines se definen de acuerdo a la conexión que
hagamos
LiquidCrystal_I2C lcd (0x27, 16, 2);

RTC_DS1307 RTC;
#define DS1307_ADDRESS 80 (0x50)
File myFile;
void setup ()
{
Serial.begin (9600);
RTC.begin ();
Wire.begin(); //para arduino UNO
lcd.init (); // Inicializar el LCD
lcd.backlight();//Encender la luz de fondo.
if (! RTC.isrunning())
{
Serial.print("RTC_no_detectado");
Delay (100);
}
RTC.begin(); //Inicializamos el RTC
Serial.println("Estableciendo Hora y fecha...");
RTC.adjust(DateTime(F(__DATE__), F(__TIME__)));
Serial.println("DS1307 actualizado con la hora y fecha que se compilo este
programa:");
Serial.print("Fecha = ");
Serial.print(__DATE__);
Serial.print(" Hora = ");
Serial.println(__TIME__);

sensors.begin();
Serial.println("buscando dispositivo");
Serial.println(" dispositivo encontrado:");
Serial.print(sensors.getDeviceCount());
Serial.print("sensores");
lcd.begin(16, 2);
lcd.setCursor (2, 1); //mostrar temperatura fria en LCD
lcd.print("TF:");
lcd.setCursor (18, 1);
lcd.print("TC:"); //mostrar temperatura caliente en LCD
//while (!Serial) ; //para arduino leonardo
pinMode(ONE_WIRE_BUS,INPUT);
/*se verifica el inicio del SD
*/
Serial.print("SD ...");
lcd.begin(16, 2);
lcd.setCursor(0,0);
lcd.write("Iniciando SD ...");
delay (500);

if (!SD.begin(4)) // pin por donde se SC elegible para realizar el guardado


{
Serial.println("No se pudo inicializar");
lcd.begin(16, 2);
lcd.setCurso r(0,0);
lcd.write("No inicializado");
return;
}
Serial.println("inicializado");
lcd.begin(16, 2);
lcd.setCursor (0,0);
lcd.write("inicializado V1");

if(!SD.exists("datos.csv"))
{
myFile = SD.open("datos.csv", FILE_WRITE);
if (myFile)
{
myFile.println("Fecha, Hora, TF, TC");
myFile.close();
}
else
{
Serial.println("Error creando el archivo");
lcd.begin(16, 2);
lcd.setCursor(0,0);
lcd.write("Error/archivo");
}
}
}
void loop()
{
lcd.scrollDisplayLeft();
delay(1);
/*ajustamos la resolución de los sensores DS18B20
*/
//Resolucion a 9 bits 0.50 ºC
//Resolucion a 10 bits 0.25 ºC
//Resolucion a 11 bits 0.125 ºC
//Resolucion a 12 bits 0.0625 ºC

sensors.setResolution(S1, 12);
sensors.setResolution(S2, 12);

sensors.requestTemperatures();
float TF = sensors.getTempC(S1);
float TC = sensors.getTempC(S2);

/*abre el archivo de la sd para escribir en el


*/
myFile = SD.open("datos.csv", FILE_WRITE);//abrimos el archivo
if (myFile)
{
DateTime now = RTC.now(); // Obtiene la fecha y hora del RTC
myFile.print(now.year(), DEC);
myFile.print("/");
myFile.print(now.month(), DEC);
myFile.print("/");
myFile.print(now.day(), DEC);
myFile.print(",");
myFile.print(now.hour(), DEC);
myFile.print(":");
myFile.print(now.minute(), DEC);
myFile.print(":");
myFile.print(now.second(), DEC);
myFile.print(" , ");

myFile.print(TF);
myFile.print(",");
myFile.println(TC);
myFile.close(); //cerramos el archivo

//DateTime now = RTC.now(); // Obtiene la fecha y hora del RTC


Serial.print(now.year(), DEC);
Serial.print("/");
Serial.print(now.month(), DEC);
Serial.print("/");
Serial.print(now.day(), DEC);
Serial.print(",");
Serial.print(now.hour(), DEC);
Serial.print(":");
Serial.print(now.minute(), DEC);
Serial.print(":");
Serial.print(now.second(), DEC);

Serial.print(", TF=");
Serial.print(TF);
Serial.print(", TC=");
Serial.print(TC);
lcd.setCursor (22, 1);
sensors.requestTemperatures();
float TF = sensors.getTempC(S1);
lcd.print(sensors.getTempCByIndex(0));
lcd.print(" C");
lcd.setCursor(7, 1);
float TC = sensors.getTempC(S2);
lcd.print(sensors.getTempCByIndex(1));
lcd.print(" C");
Serial.print(' ');
delay(1000);
delay(1000);

lcd.backlight();
lcd.setCursor(0, 0);
lcd.print(" ");
lcd.print(now.day(), DEC);
lcd.print('/');
lcd.print(now.month(), DEC);
lcd.print('/');
lcd.print(now.year(), DEC);
lcd.print(' ');
lcd.setCursor(14, 0);
lcd.print(" ");
lcd.print(now.hour(), DEC);
lcd.print(':');
lcd.print(now.minute(), DEC);
lcd.print(':');
lcd.print(now.second(), DEC);
lcd.print(" ");
lcd.println();
delay(1);
}
else
{
Serial.println("Error al abrir el archivo");
}
delay(5000);
}