Buenas arduineros,
Estoy construyendo un sistema de adquisición de datos para una caldera de calefacción con un arduino leonardo; quiero ver temperaturas y guardarlas en una tarjeta SD con la hora real proporcionada por un RTC. Por separado funciona correctamente todo pero al unirlo hay alguna incompatibilidad.
Cuando meto el código para obtener la temperatura de un sensor digital ds18b20 en el código principal, la lectura del sensor de temperatura da valores irreales. Si borro la parte del código que pertenece al control del RTC, el sensor de temperatura funciona perfectamente.
He simplificado mucho el código para que os sea más rápido de ver. Aqui va:
#include <Time.h> // RTC DS1307
#include <Wire.h> // RTC DS1307
#include <RTClib.h> // RTC DS1307
#include <OneWire.h> // DS18b20
#include <DallasTemperature.h> // DS18b20
#define Pin 2 // DS18b20
OneWire ourWire(Pin); // DS18b20
DallasTemperature sensors(&ourWire); // DS18b20
RTC_DS1307 RTC; // RTC
void setup() {
Serial.begin(9600);
sensors.begin(); // DS18b20
Wire.begin(); // RTC // El sensor de temperatura funciona bien si elimino esta linea
RTC.begin(); // RTC // El sensor de temperatura funciona bien si elimino esta linea
}
void loop() {
sensors.requestTemperatures(); // DS18b20
// Publica en monitor serie:
DateTime now = RTC.now(); // El sensor de temperatura funciona bien si elimino esta linea
Serial.print(now.second(), DEC); // El sensor de temperatura funciona bien si elimino esta linea
Serial.print(" ; ");
Serial.print(sensors.getTempCByIndex(0));
Serial.println(" grados");
delay (2000);
}
Si dejo en el programa todas las líneas del código, el resultado publicado en el monitor serie es este:
6 ; -127.00 grados
9 ; -127.00 grados
11 ; -127.00 grados
etc...
son los segundos del RTC ; lectura del sensor de temperatura de -127 grados.
Si elimino del código las 4 líneas que estan comentadas en el código, el resultado es este:
; 19.31 grados
; 19.37 grados
; 19.37 grados
etc...
No hay lectura de segundos, pero el sensor de temperatura funciona perfectamente.
Alguien sabe a que puede ser debido??
Gracias por adelantado
Un saludo