Go Down

Topic: Reloj_RTC mas LCD I2c (Read 246 times) previous topic - next topic

mmsouto

Oct 21, 2019, 07:12 pm Last Edit: Oct 22, 2019, 03:54 pm by surbyte Reason: Agregado de etiqueta de enlaces
Buenas, tengo un proyecto que en función de unos valores recogidos por un sensor quiero que se guarden dentro de un fichero de texto en una sd conteniendo la hora, he estado mirando como hacerlo y lo veo mas o menos claro, estoy pendiente de que me llege el modulo sd y el reloj, pero a la vez tengo una pantalla conectada por i2c en la que se visualizan esos datos.
¿Puedo conectar simultaneamente las dos cosas, reloj y lcd?
Viendo este ejemplo https://programarfacil.com/blog/arduino-blog/reloj-con-arduino-rtc/ los pines que usan son el A4 y A5 al igual que el modulo para el lcd ¿Se puede modificar de alguna forma, o directamente el arduino diferencia entre el modulo de la pantalla con su direccion y el rtc?

Gracias.

tauro0221

Hi,
Cuando usas la comunicacion de I2C puedes leer 128 modulos siempre y cuando cada uno tenga su address dedicada. Asi que no tienes problemas conctando el relog y el lcd. Te sugiero que corras la rutina que tiene arduino para detectar los modulos instalados en la linea. Te va a decir si estan bien conectados y los address de cada uno.

surbyte

I2CScanner que esta en el mismo IDE.

mmsouto

Si, pero una vez averiguada su direccion ¿Donde se le indica? Pego el codigo de ejemplo en el que se ve que no se usa dirección en el mismo, ¿igual la propia libreria RTClib se encarga de gestionarlo?

Code: [Select]
// Librería para la comunicación I2C y la RTClib
#include <Wire.h>
#include "RTClib.h"

// Declaramos un RTC DS3231
RTC_DS3231 rtc;

void setup () {
 Serial.begin(9600);

 delay(3000);

 // Comprobamos si tenemos el RTC conectado
 if (! rtc.begin()) {
 Serial.println("No hay un módulo RTC");
 while (1);
 }

 // Ponemos en hora, solo la primera vez, luego comentar y volver a cargar.
 // Ponemos en hora con los valores de la fecha y la hora en que el sketch ha sido compilado.
 // rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}

void loop () {
 DateTime now = rtc.now();

 Serial.print(now.day());
 Serial.print('/');
 Serial.print(now.month());
 Serial.print('/');
 Serial.print(now.year());
 Serial.print(" ");
 Serial.print(now.hour());
 Serial.print(':');
 Serial.print(now.minute());
 Serial.print(':');
 Serial.print(now.second());
 Serial.println();
 delay(3000);
}

surbyte

Por supuesto, son cosas tan obvias para las librerías que simplemente no lo ponen. NO hay que gestionarlo, lo gestionas cuando escribes tu propia librería o te comunicas directamente al sensor usando la hoja de datos, pero nadie hace eso, a menos que sea un dispositivo tan nuevo que no tenga librería.

Si usas un RTC ya la librería lo hace. Si usas un LCD I2C lo mismo.
Solo le prestas atención cuando quieres usar un segundo LCD y en ese caso tienes que meter mano y cambiar la dirección fisicamente y luego indicarle al código que el 2do LCD esta trabajando en tal dirección.

Porque no lees acerca del bus I2C y luego consultas, porque al revés sigues sin conocimiento de lo que estas hablando. Lo que corresponde es que leas que es el bus I2C mas alla de lo técnico, comprendas lo que te dijo tauro sobre los 128 dispositivos y entiendas su potencial.


Go Up