Saludos a todos, estoy experimentando con una LCD OLED 1602 modelo "LEC1621" por I2C, el problema es que de manera aleatoria y en ocaciones invierte los mensajes que imprime en las lineas; el mensaje de la linea de arriba la muestra abajo y el mensaje de abajo lo muesta arriba. Como tambien en ocaciones todos los mensajes se muestran en el orden correcto. Esto ocurre solo cuando se energiza el arduino.
Con la LCD 1602 I2C tradicional no ocurre la falla.
Este codigo lo estoy cargando, solo para pruebas:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display
void setup()
{
lcd.init();
lcd.clear();
lcd.setCursor(0,0);
lcd.print("LINEA DE ARRIBA ");
lcd.setCursor(0,1);
lcd.print("LINEA DE ABAJO ");
}
void loop()
{
}
Eso ocurre cuando se energiza porque tu código así lo dice
Todo lo que este en el setup() se ejecuta solo 1 vez o sea cuando se energiza el Arduino.
Yo creo que el problema es que la librería no debe ser 100% compatible con ese LCD OLED que usas, debe haber algún comando que genera esta ambiguedad.
Investigo mas y te amplío la respuesta.
Y creo que tenía razón, prueba con esta librería y sus ejemplos a ver si se repite o no el problema
https://werner.rothschopf.net/microcontroller/202106_arduino_liquid_crystal_oled_lec1621_en.htm
1 Like
Saludos, he probado con todos los ejemplos que ofrece esta libreria: <NoiascaLiquidCrystal.h>
<NoiascaHW/lcd_PCF8574.h>
Igual persiste el problema
De hecho cuando utilizo este ejemplo en particular trabaja bien, las lineas no se invierten, pero cuando apago y enciendo el arduino no imprime nada en la LCD, tengo que volver a cargar el codigo en el arduino.
`
#include <Wire.h> // needed for the I2C interface
#include <NoiascaLiquidCrystal.h> // download library from https://werner.rothschopf.net/202009_arduino_liquid_crystal_intro.htm/
#include <NoiascaHW/lcd_PCF8574.h> // include the proper IO interface
const byte cols = 16; // columns/characters per row
const byte rows = 2; // how many rows
const byte addr = 0x27; // set the LCD address to 0x3F or 0x27
const byte rs = 0;
//const byte rw = 255; // not used by library. You must connect RW to GND to enable write.
const byte en = 2;
const byte en2 = 1; // on common modules this pin is used for RW - so you can rewire this line to Enable2
const byte d4 = 4; // only four data pins are used in 4 bit mode
const byte d5 = 5;
const byte d6 = 6;
const byte d7 = 7;
const byte bl = 3; // on common modules pin 3 is used as driver for the backlight
const t_backlightPol blType = NEGATIVE;// set to either POSITIVE, NEGATIVE (or FAULTY if you have a fauly keypad shield)
LiquidCrystal_PCF8574_4004 lcd(addr, rs, en, en2, d4, d5, d6, d7, bl, blType, cols, rows);
void setup()
{
Wire.begin(); // start I2C library
lcd.begin(); // initialize the LCD
lcd.backlight(); // turn on backlight
lcd.setCursor(0, 0);
lcd.print("LINEA DE ARRIBA");
lcd.setCursor(0, 1);
lcd.print("LINEA DE ABAJO"); // show some special character entered in UTF-8
}
void loop()
{
}``
Moderador:
Por favor, lee las Normas del foro y publica/edita tu código/error usando etiquetas de código.
Ve a edición, luego selecciona todo el código que has publicado/editado, lo cortas y click en (<CODE/>
)
Y el código anterior funcionaba bien, o sea se mantenía en tu arduino y este no? Imposible que una librería haga eso.
Vuelve a poner el código anterior y dinos que pasa.