[SOLUCIONADO] lcd+ i2c+ pulsador+dth22 = problemas

Hola, después de mucho leer, no me queda otra que consultar :D..

Estoy intentando montar una incubadora de reinas(apicultura), realice el menú y todo marchaba perfecto.
Cuando horas 3-4 horas mas tarde mi lcd comenzó con caracteres raros y cuadros blancos. reinicio el arduino y al cabo de unos minutos volvía a suceder, esto era progresivo al punto de simplemente partir con caracteres raros.,

Componentes utilizados:
Arduino duemilanove
dth22
pulsador
(faltan los componentes para pwm y controlar una placa peltier, y rele para controla humidificador.)

Después de comenzar a ocurrir los caracteres raros para los cuales no encontré solución: culpe la libreria en cuestion del lcd.

busque hasta que encontré una que funcionara y empece de 0 con un arduino pro mini, ya que con el duemilanove nunca mas pude en poner en marcha el lcd.

-------- EL PROBLEMA ACTUAL, LOS ANTERIOR ES BÁSICAMENTE LO MISMO SOLO QUE SOBRE DUEMILANOVE---

Ahora en este momento estoy con un arduino pro mini + i2c(pcf8574t)+4093 para eliminar el efecto rebote del pulsador.

hasta aquí todo bien cuando agregue el dth22 y el respectivo código, todo parecía marchar bien hasta después de unos 30 min. comenzo el problema nuevamente caracteres raros.. saque el dth22 y elimine el respectivo codigo.

Conecto arduino mediante ftdi232, y pasado unos minutos denuevo caracteres raros, desconecto y al reconectar nuevamente lo mismo.

Al cargar el ejemplo blink, reiniciar y volver a cargar el programa marcha bien por unos segundos y vuelven los caracteres.

Cosas que eh intentado:
Agregar pull-up 4.7k al i2c, se noto el cambio ahora cada vez que prendo tengo casi 20 segundos de funcionamiento.

Condensador 100nf para desacople según leí unos links por hay(ningún cambio aparente.)

Infinidad de librerías y códigos de prueba de las mismas unas aguanta unos segundos mas otras simplemente no marchan.

Solo arduino y el i2c, los mismo segundos de funcionamiento.

La verdad ya estoy pensando en botar el proyecto pero algo me dice que no puede vencerme xD..

Aqui: Video referencia del problema.

Conexion actual:
Arduino pro mini a4->sda a5->scl y pull-up 4.7k

Mi Codigo:

#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
#define I2C_ADDR    0x27  // Define I2C Address where the PCF8574A is
#define BACKLIGHT_PIN     3
#define En_pin  2
#define Rw_pin  1
#define Rs_pin  0
#define D4_pin  4
#define D5_pin  5
#define D6_pin  6
#define D7_pin  7
LiquidCrystal_I2C  lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);

int n = 1;
int buttonState = 0; 
const int buttonPin = 2;     // the number of the pushbutton pin

void setup()
{
  lcd.begin (16,2);
  pinMode(buttonPin, INPUT);//boton
  lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
  lcd.setBacklight(HIGH);

  
//lcd.home ();                   // go home
  //lcd.print("I2C tester");  
  //lcd.setCursor ( 0, 1 );        // go to the 2nd line
  //lcd.print("Malpartida ");
 }

void loop()
{
  buttonState = digitalRead(buttonPin);
  if (buttonState == HIGH) {
    lcd.begin(16,2);
    lcd.clear();
    lcd.home ();
    lcd.print("on"); 
  }
  else {
    lcd.clear();
    lcd.setCursor ( 0, 1 );
    lcd.print("off"); 
  }
  
  lcd.setCursor (10,1);        // go col 14 of line 3
  lcd.print(n++,DEC);
  delay(1000);
}

Disculpen los confuso de mi explicación, ojala se logre comprender :smiley:

De ante manos muchas gracias

Hola espero que esto te ayude, me puse a analizar tu código un momento y veo que haces esto:

#include <LCD.h>
#include <LiquidCrystal_I2C.h>
#define I2C_ADDR    0x27  // Define I2C Address where the PCF8574A is
#define BACKLIGHT_PIN     3
#define En_pin  2
#define Rw_pin  1
#define Rs_pin  0
#define D4_pin  4
#define D5_pin  5
#define D6_pin  6
#define D7_pin  7
LiquidCrystal_I2C  lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);

Es una especie de configuración que estas usando por lo visto.

Luego tambien haces esto en el setup:

void setup()
{
  lcd.begin (16,2);
  pinMode(buttonPin, INPUT);//boton
  lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
  lcd.setBacklight(HIGH);

  
//lcd.home ();                   // go home
  //lcd.print("I2C tester");  
  //lcd.setCursor ( 0, 1 );        // go to the 2nd line
  //lcd.print("Malpartida ");
 }

Me parece muy raro la verdad ya que es la primera vez que veo esta configuración, yo también uso display mediante I2C ya que me ahorro varios pines para usar en otras cosillas a la hora de desarrollar algo.

La configuración que yo uso es esta revisala y prueba a ver si te puede servir.

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,16,2);

void setup() {
  
//////////////////////////////// Mensaje de Bienvenida /////////////////////////////////////////// 
 lcd.init();
 lcd.backlight();
 delay(1000);
 lcd.setCursor(0,0);
 lcd.print("Cargando");
 delay(600);
 lcd.clear();
 lcd.print("Cargando.");
 delay(600);
 lcd.clear();
 lcd.print("Cargando..");
 delay(600);
 lcd.clear();
 lcd.print("Cargando...");
 delay(600);
 lcd.clear();
 lcd.print("Bienvenido");
 lcd.setCursor(6,1);
 lcd.print("Usuario");
 delay(1300);

Este es un pequeño ejemplo de un mensaje de bienvenida, pero a lo que voy es que yo no uso esa configuración que usas en tu código y a mi me va perfecto. Intenta con eso y me dices que tal salio.

Hola, gracias por responder, intento probar tu codigo pero no logro compilarlo talvez tenemos version distinta de LiquidDisplay_i2c

Arduino:1.6.5 (Windows 8.1), Placa:"Arduino Duemilanove or Diecimila, ATmega328"

sketch_aug23b:4: error: invalid conversion from 'int' to 't_backlighPol' [-fpermissive]
In file included from sketch_aug23b.ino:2:0:
C:\Users\PancheX\Documents\Arduino\libraries\LiquidCrystal/LiquidCrystal_I2C.h:53:4: error:   initializing argument 3 of 'LiquidCrystal_I2C::LiquidCrystal_I2C(uint8_t, uint8_t, t_backlighPol)' [-fpermissive]
    LiquidCrystal_I2C (uint8_t lcd_Addr, uint8_t backlighPin, t_backlighPol pol);
    ^
C:\Users\PancheX\Documents\Arduino\libraries\LiquidCrystal/LiquidCrystal_I2C.h: In function 'void setup()':
C:\Users\PancheX\Documents\Arduino\libraries\LiquidCrystal/LiquidCrystal_I2C.h:154:9: error: 'int LiquidCrystal_I2C::init()' is private
    int  init();
         ^
sketch_aug23b:9: error: within this context
invalid conversion from 'int' to 't_backlighPol' [-fpermissive]

  This report would have more information with
  "Show verbose output during compilation"
  activala desde Archivo > Preferencias

Continuo con el problema, luego intentare probar con un arduino nano y el lcd sin i2c tal vez hay este mi problema.

por otro lado, mi código xD en realidad no es mio la parte de control del lcd, estaba en una web donde explicaban justamente como controlar mi lcd con mi modulo12c, y estaba funcionando impecable, hasta que decidí agregar nuevo sensores y comenzaron los problemas... lo raro es que el problema no desaparece una vez eliminado el sensor. :S

Cabe destacar que mis conocimientos en programación escasos xD.. muchas gracias :))))

PDT: Encontré el post done esta el código cual eh comenzado, y marchaba muy bien el lcd.
http://forum.arduino.cc/index.php?topic=128635.0

Lamentablemente ya no funciona :S (arme todo de cero nuevamente y lo intente)

Te recomiendo que bajes la versión 1.6.0 y recompiles todo con esta versión.
La versión 1.6.5 viene reportando estos problemas.

de hecho estoy trabajando sobre la 1.6.0.. :D..

Porque no tratas de bajar otra versión de la librería? te digo porque el ejemplo que te puse lo tengo más que probado, lo uso para darle más "Presentación" al proyecto y jamás me ha fallado.

volví al soft 1.0.5 al darme cuenta qeu era beta el 1.6.x..

se había arreglado el problema, pero volvió a ocurrir un poco mas tarde.

Solucionado!!!! elimine el i2c... talvez al ser chino o simplemente mis conocimientos al respecto eran muy débiles...

Muchas Gracias por su ayuda!!! el cambiar el soft y librerías ayudo muchisimo... pero lamentablemente al final volvía a tener el mismo problema.

Despues de mucho luchar opte por botar el i2c ...perdi pines digitales, pero va por buen camino:D

WIIIIIIIIIIIIIIIIIII!!!!! :slight_smile: :slight_smile: :slight_smile: :slight_smile:

muchas gracias por la ayuda!!

PDT:(si, no es una solución al problema planteado, pero puedo continuar con mi proyecto)