Go Down

Topic: LCD 128x64 con I2C 4pines (Read 229 times) previous topic - next topic

cescbit

Buenas tardes a todos,

estoy en un quebradero de cabeza el cuál no consigo salir...

he encontrado este mini tutorial
https://hetpro-store.com/TUTORIALES/lcd-i2c-arduino-128x64/

el cual usa una lcd128x64 a través de un I2C típico para los LCD 16x2 por ejemplo... y no sé si es cuestión de librerías o qué, pero no consigo entender ni hacer a mi antojo la escritura en el lcd dónde quiero:

Code: [Select]
lcd.setCursor(-3,2)

no se que estoy haciendo mal! visualizo el texto y cuando juego con las columnas y filas, no corresponden "teoricamente" como hasta ahora las había usado... ¿me podrían ayudar?

gracias

surbyte

Las librerías son las que corresponden al LCD 128x64

Quote
u8glib-master: https://code.google.com/archive/p/u8glib/
LiquidCrystal_I2C2004V1: http://www.frostcode.es/descargas/LiquidCrystal_I2C2004V1.rar
no la que esas usando abajo.

cescbit

Buenas noches Surbyte y gracias por la respuesta.

No me habré explicado bien...disculpas! visualizo según el ejemplo del tutorial correctamente, pero "creo" que funciona de forma distinta a las clasicas 16x2, es decir, no he sido capaz ni de encontrar un ejemplo ni mediante pruebas, saber la salida en esta lcd sea del estilo mediante row i columns.
Code: [Select]

T1:xx.xx  T4:aa.aa
T2:yy.yy  T5=bb.bb
T3:zz.zz  T6:cc.cc



y ese -3 mi no entender... disculpa si es algo obvio y no lo esoty viendo...

gracias de antemano!

surbyte

Si tu no entender que lo tienes enfrente yo MENOS ENTENDER que no lo tengo.

No se como guiarte.

cescbit

 :)  :)  :)
Hola que tal,

he optado por otra solución, que por separado me ha funcionado. Usando la librería U8glib y mediante un tuto bastante majo (https://www.youtube.com/watch?v=DQoQtSKa6Tc) he hecho funcionar la lcd 128x64. Ahora bien, cuando junto la lcd con el proyecto que estoy elaborando, corregidme por favor!!!! al ser un arduino UNO + shield (rtc+microSD), el pin digital 10 por lo menos, ya está ocupado por esta shield, con lo que creo que mi gozo en un pozo, espero que el i2c para esta lcd me llegue pronto ya que creo que es mi salida... a menos que algún experto me de alguna idea más...

muchas gracias de verdad!

surbyte

Define otro pin para el control del SD.
Ese no debe ser un problema.
La SD es un dispositivo SPI. usan los pines 11,12,13 de modo común a SD y la placa ethernet.
Pero luego falta un pin para hacer la selección del CHIP o Chip Select.

Solo debes indicarla a la placa cual usar. Si el 10 está en uso se suele usar el pin 4.

cescbit

uhmmm muchas gracias!, entonces probaré:

Code: [Select]

const int pinDatoSDQ = 6;
const int chipSelect = 10;



el chipselect pasaré de 10 a 4

y para la lcd se queda así¿?:

Code: [Select]

U8GLIB_ST7920_128X64 u8g( 13,11, 10, U8G_PIN_NONE);


no interferirá con los otros pins del RTC, micro sd? (D9,D11,D12,D13,A4 y A5)

mi shield es como ésta:
https://es.aliexpress.com/item/Data-logger-shield-for-Arduino-MicroSD-card-RTC-Assembled/32530882474.html

muchas gracias!

surbyte

SD usa 10 como CS x defecto y los SPI 11, 12 y 13.
Ya te lo escribí.

Los demás conflictos dependen del hardware que uses.
Como no soy adivino para mi de 2 a 9, no hay nada lo mismo con A0..A5

cescbit

gracias Surbyte por tu pacienca  :smiley-kiss:

estoy usando un arduino UNO + shield como esta:




Dónde, efectivamente usa el CS D9 y los D11,D12 y D13 para D,DO y reloj.



El proyecto me lee 12 sondas tipo DS18B20 conectadas a través del único pin D8. (conexion tipo parasito)
Además incorpora 1 sensor de presión 12bar que sólo me ocupa el A0.
Y finalmente un caudalimetro por pulsos que me ocupa el D2.

Todo esto sin el LCD 128x64 me funciona y muestra y graba datos en el serial y micro sd con la hora y fecha correctas.

Si realizo la prueba únicamente del LCD sin nada, en otro arduino UNO y sin shield, modificando los pines como bien has comentado, ej:

Code: [Select]

U8GLIB_ST7920_128X64 u8g( 6, 5, 4, U8G_PIN_NONE);


me funciona bien.

Cierto es, y creo que no debería interferir, es que los demás pines del LCD, el LCD GND y LCD VCC van a GND y 5v respectivamente,

LCD RS al D4 (SPI SS)
LCD R/W al D5 (SPI MOSI)
LCD E al D6  (SPI SCK)
LCD PSB al GND (for SPI mode)
LCD BLA a 5V
LCD BLK a GND

la librería U8glib soporta paralelo y SPI

y cargando el ejemplo "hello World" de dicha librería y modificando la línea a:
Code: [Select]

U8GLIB_ST7920_128X64 u8g( 6, 5, 4, U8G_PIN_NONE);


me funciona bien, por lo que voy más perdido que un pulpo en un garaje... ¿me dejo ago? estoy haciendo algo mal?

muchas gracias por adelantado

surbyte

Separemos las cosas asi hablamos el mismo idioma.
si quieres usar SPI probemos todo SPI eso es 11,12y13 para SCK, DI, DO

Veo que tu SD tiene CS fijo en el pin 9. Asi que ya esta asignado.
Tmb veo que en una de las pruebas usaste el LCD con CS en el pin 4.

Probemos ambas cosas juntas a ver como se comportan.

SD y LCD compartiendo 11,12,13 (en la sd no tienes que hacer nada y en el LCD conectarlo).
Un código simple como "Hola mundo" y algo que al menos te diga que la SD se inicializó es suficiente.

No hagas códigos completos con DS18B20 sensores etc etc... olvida  eso. Estamos probando si pueden coexistir las cosas.


cescbit

hola de nuevo... siento dar la lata, pero no consigo hacer funcionar el LCD con el shield rtc+sd... si mi shield como hemos visto es a traves de spi y usa los pines d9,d11,d13 y el d10, no entiendo pq no me funciona si pongo como cs para el lcd el pin2 por ejemplo... he quitado todas las sondas, caudalimetros, etc... está pelado el arduino uno + shield + lcd   :smiley-confuse:

alguna surgerencia mas? sabéis si sería más practico a través de un i2c para este lcd de 128x64?


muchas gracias

surbyte

No confundas las cosas.

11, 12 y 13 son los pines SPI y veo que pones y mezclas otros.



El CS es otra cosa.. puede ser cualquier otro pin.

Ten claro eso y lo demas debe funcionar.
Ademas te dije.. desconecta todo, y solo trabaja con SD y LCD y prueba hacerlos funcionar.

Ahora debes tener claro que pines se usan y como se le dice que vas a usar otro pin.

Go Up