Display LCD + RTC DS 3231 no funcionan bien

Hola, a ver si alguien me ilumina, conecte al arduino uno un display LCD con el adaptador I2C de esta forma: vcc al pin 5v de arduino, (tambien lo probe con alim. externa) , GND a gnd de arduino y SDA y SCL a los pines A4 y A5. Por otro lado conecte un modulo RTC ds3231 de la misma manera solo que la alimentacion yo suelo conectarla a un pin digital del arduino en este caso D3 de modo que cuando requiero fecha y hora pongo dicho pin en HIGH y luego en LOW.
Utilizando este codigo que, asi como esta, no me muestra nada la pantalla LCD. Ahora si yo descomento las lineas que activan el reloj (aunque yo no necesite usarlo) entonces si veo en la pantalla "Hola que tal". Ahora volvemos al programa con las lineas comentadas, si yo quiero ver la pantalla desconecto la alimentacion del RTC y entonces si puedo verlo (aunque en esa circunstancia el led del modulo se enciende ligeramente). Es mas, cada vez que no muestra nada la pantalla el programa esta en espera y no sale del setup. Gracias.
Saludos.

#include <LiquidCrystal_I2C.h>
#include <DS3231_Simple.h>

DS3231_Simple Clock;
LiquidCrystal_I2C lcd(0x27,20,4);

void setup() {
    Serial.begin(9600);
    lcd.init();
    lcd.backlight();
    lcd.clear();
    
    pinMode(3,OUTPUT);       
    delay(2000);   
    
  //  digitalWrite(3,HIGH);  // ACTIVO  el reloj
    lcd.setCursor(1,0);
    lcd.print("Hola que tal");
  //  digitalWrite(3,LOW);  // desACTIVO  el reloj 
                                            
}

void loop() {
Serial.println("ya estoy en el void loop");
delay(1000);

}

El problema es que el módulo RTC incluye las resistencias pull-up del bus I2C, cuando vos mandas LOW estás haciendo que las resistencias se conviertan en pull-down.
Si además pusiste resistencias pull-up externas del mismo valor que las del módulo, cada vez que mandas LOW tenés un divisor de tensión que entrega 2.5V al bus, en esas condiciones seguramente se pierde la comunicación I2C.
Y la situación empeora si las resistencias externas son de mayor valor o si directamente no las pusiste.

Por eso cuando pones el pin en HIGH el display te muestra el mensaje pero al volver a poner el pin en LOW se cae la comunicación I2C y muy probablemente sea lo que bloquea al micro.

La solución sería eliminar las resistencias pero hay un pequeño problema, están en un pack de 4 resistencias compartidas con las de las salidas SQW y 32K.

Saludos

ahh!, si ademas en el proyecto original utilizo la eeprom (con direccion 0x57) y anda perfecto, si, casi seguro que es lo que dices, gracias.
Saludos.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.