Home
Prox / RFID
Verichips
Ladder Logic
[interfacing] †
Tube Joints
Key Code From Photo
SolveSpace (3d CAD)
SketchFlat (2d CAD)
Photographs
Miscellany
Resume / Consulting
Contact Me

LDmicro Forum - idea for displaying text in lcd

(you are viewing a thread; or go back to list of threads)

idea for displaying text in lcd (by Alex)
hello guys, it´s me again with another idea :)

i have made like a multitask (temperature, clock and counter) message display in lcd with 16f877a using 2.4v (i used that version in order to be compatible with other ldmicro versions), video demostration:

https://www.youtube.com/watch?v=ENXIiVTRjMg&feature=youtu.be

the thing is that when doing that for just 3 messages, ladder gets bigger, as we can see in ladder attach, it gets bigger and uses more memory space when a lot of uart functions are used, i know that in ldmicro32 saves more space than 2.4v, but i think it would be easier to display text and use less uart functions if we could use "MOVE" function also with text:



|| ||
|| {print := } ||
1 ||------------------{ clock MOV}--||
|| ||
|| ||
|| ||
|| ||
|| print ||
2 ||------------{"\text"}-------------||
|| ||
|| ||
|| ||
||------[END]-----------------------||
|| ||
|| ||


or something to display different text in one uart, we choose what kinf of text we want according to our ladder logic
Mon Jan 28 2019, 20:58:00, download attachment multitask_display.ld
(no subject) (by Alex)
sorry ladder in text look bad, here is in image of what i mean:
Mon Jan 28 2019, 21:00:32, download attachment display many text in one uart function.jpg
(no subject) (by Alex)
using quotation marks " " if using text in MOVE function
Mon Jan 28 2019, 23:12:40
(no subject) (by Tom J.)
Funny Alex, I'll be looking for a way to move text in the manner of a variable soon to save space with uart data.
Mon Jan 28 2019, 23:14:45
(no subject) (by Alex)
that would be wonderful Tom J.
Tue Jan 29 2019, 00:12:12
(no subject) (by Luis)
Hola Alex que modelo de lcd utilizas
Tue Jan 29 2019, 03:09:29
(no subject) (by Alex)
hola luis yo uso el lcd hd44780 16x2
Tue Jan 29 2019, 07:50:06
(no subject) (by Tom J.)
How does UART SEND work? That could be promising.
Tue Jan 29 2019, 10:35:50
(no subject) (by Luis)
Hola Alex, lo conectas directamente al pic o lo conectas por medio de serial a la placa Arduino.

Si lo conectas via serial a la placa Arduino podrias pasar el codigo que le subes a la placa arduino.

Gracias.

Saludos.
Tue Jan 29 2019, 13:09:26
(no subject) (by Alex)
mnmmn creo que confundes algo, lo conecto por medio del pin serial del cualquier pic o atmel que tenga TX (es el pin que transmite para el lcd) al pic 16f628a , el cual tiene un pin llamado RX (recibe los datos), el pic 16f628a sirve como intefaz para el lcd 16x2, puedes ver el diagrama de conexión aquí:


https://github.com/LDmicro/LDm...CD-based-on-HD44780-controller


ese mismo pic 16f628a puede servir par pic o atmel ya que la comunicación serial es como un lenguaje universal, mira esta imagen que adjunto, ambos muestran la el mismo mensaje en el mismo interfaz ya sea usando pic o atmel(arduino uno)
Tue Jan 29 2019, 14:26:23, download attachment serial_pic_avr.jpg
(no subject) (by Alex)
el código para el pic 16f628a funcione como interfaz para el lcd 16x2 se encuentra dentro del enlace que te envié :



https://github.com/LDmicro/LDm...CD-based-on-HD44780-controller
Tue Jan 29 2019, 14:27:33
(no subject) (by Alex)
no olvides unir las tierras (GND) de ambos pic o avr al GND del 16f628a para que funcione.

saludos
Tue Jan 29 2019, 14:29:21
(no subject) (by Alex)
mnmmm UART SEND
Tue Jan 29 2019, 14:34:00
(no subject) (by Luis)
Hola Alex yo lo hago con dos arduinos, en uno estaria el programa leadder y en el otro el codigo con la libreria arduino pero ocurre esto mira el video.

https://drive.google.com/open?id=1dZ2Xhdq35E4XMNBI5bznlaVOMQ4OeZ6w

El codigo del lcd en el arduino que recibe es el siguiente.

#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

#define COLS 16
#define ROWS 2

void setup() {

Serial.begin(9600);
lcd.begin(COLS, ROWS);

lcd.setCursor(0, 0);
lcd.setCursor(0, 1);
}

void loop() {

if(Serial.available()){
lcd.write(Serial.read());

}
}


Saludos.
Tue Jan 29 2019, 14:58:26
(no subject) (by Alex)
mnm interesante, por casualidad lo tomaste de aquí o es algo parecido?:

http://plcmikro.blogspot.com/2013/01/062-menambahkan-lcd.html

lo que veo en el vídeo parece algo que me ha pasado pero podría darte algunas cosas que me sucedían a mí cuando no funcionaba, podrías revisarlo:

-verificar los baudios del ldmicro que coninsisan con el del arduino.
-si usas 2 arduinos que ambos compartan la misma tierra incluso el lcd.
-antes de armar mi módulo lcd usaba protoboard y aveces me pasaba lo mismo puesto que en ellos aveces no agarraba bien algún jumper o habia mucho ruido, colocaba un condensador de 10uF entre positivo y negativo de la alimentación del lcd y microncontrolador.
-aveces no diseñaba bien el ladder, eso también podrias revisarlo , prueba enviando un solo caracter.
- los caracteres de tu interfaz, en mi caso eran por ejemplo para borrar el lcd \xFE\x58, cúal serán los tuyos
Tue Jan 29 2019, 17:27:56
(no subject) (by Luis)
Hola Alex, no lo cogi de la pagina que indicas.

Los baudios pongo 9600 que es como funciona Arduino si los cambio no funciona nada, frecuencia cristal 16,000000 lo mismo si cambio no funcona nada, los jumper comprobados.

Lo he probado con tu programa multitask_display.ld
y cuando pruebo no se queda fijo se mueve de izquierda a derecha.

Si alguien tiene alguna idea de lo que puede ser.

Gracias por tu ayuda.
Tue Jan 29 2019, 17:43:29
(no subject) (by Alex)
ya veo, en el multitask_display estas usando los mismos uarts? o lo has cambiado?. Me refiero por ejemplo, donde dice lcd==1 ahí está este función uart {"\xFE\x58\xFE\x42\xFE\x34"}, como en mi display aparece por defecto un mensaje del autor del programa lo tengo que borrar con \xFE\x58, el \xFE\x42 para el backlight ON, cómo el has puesto tu en los uarts para que imprima en tu arduino?
Tue Jan 29 2019, 18:13:28
(no subject) (by Luis)
No he cambiado nada solo lo he adaptado a la placa Arduino Uno.

Subo tu leadder Modificado para Arduino.

luego conecto un cable de TX A RX

Y en la placa Arduino que recibe inserto este codigo.



#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

#define COLS 16
#define ROWS 2

void setup() {

Serial.begin(9600);
lcd.begin(COLS, ROWS);

lcd.setCursor(0, 0);
lcd.setCursor(0, 1);
}

void loop() {

if(Serial.available()){
lcd.write(Serial.read());

}
}

Saludos.
Tue Jan 29 2019, 19:23:06, download attachment multitask_display(1).ld
(no subject) (by Alex)
mnm ya veo, estas usando el mismo ladder sin modificar, lo que pienso es que tu al usar ese ladder en la parte de uart debes borrar {"\xFE\x58\xFE\x42\xFE\x34"} y de todos los demás uarts, esos comandos son para el pic que uso con el lcd y que interpreta el uart que le envío con esos comandos, tu al usar un arduino con el código que me describes no deberías usar tales comandos, deberías usar los que arduino entienda, por ejemplo "conteo: \1\r\n", la página que te pase que es esta:


http://plcmikro.blogspot.com/2013/01/062-menambahkan-lcd.html

el tipo hace lo mismo que tu has hecho, pero el no usa un arduino uno(atmega 328p), el usa un ATmega8 para el lcd y no usa el i2c para lcd, además para imprimit en su lcd el usa el siguiente comando "\4"aquí su vídeo:

https://www.youtube.com/watch?v=GEBcu6dWgxA

Bueno, hice la prueba también pero con este código(el cual está en el arduino IDE en sus ejemplos y el cual el tipo en esa página que te pase explica que ahí está el código que el usa y que yo también usé, pero lo modifique para usarlo con lcd i2c):

#include <LiquidCrystal_I2C.h> // Debe descargar la Libreria que controla el I2C
#include<Wire.h>

LiquidCrystal_I2C lcd(0x27,16,2);



void setup() {
Serial.begin(9600);
lcd.init();
lcd.backlight();
lcd.clear();
}

void loop() {

// when characters arrive over the serial port...
if (Serial.available()) {
// wait a bit for the entire message to arrive
delay(100);
// clear the screen
lcd.clear();
// read all the available characters
while (Serial.available() > 0) {
// display each character to the LCD
lcd.write(Serial.read());
}
}
}


aquí hay un vídeo para demostrarlo, bueno no soy experto con este serial interface para arduino lcd asi que me salio así:

https://www.youtube.com/watch?v=sU640NMmlTY&feature=youtu.be


te adjunto el ladder de desmotración para que veas que no uso tales comandos como en el ladder original "multitask_display.ld" y bueno yo uso otra libirería para i2c display

P.D.: te ha funcionado antes el lcd serial de arduino ?
Tue Jan 29 2019, 21:09:07, download attachment ldmicro_conte_arduino_serial_lcd.ld
(no subject) (by Luis)
Hola Alex he probado el ladder de la pagina que me indicas y mas o menos funciona igual.

Seguire probando.

Gracias por tu ayuda.

https://drive.google.com/open?id=1oOxK1asdrb8duyNv988eYEemWj5lhd6s

Saludos.
Wed Jan 30 2019, 14:48:31
(no subject) (by Alex)
que bueno, podrías intentar usar estos comandos que da la pagina de arduino para comunicación serial y probar, así le podrás asignar ubicación del texto o insulso limpiar la pantalla:

https://playground.arduino.cc/Learning/SerialLCD
Wed Jan 30 2019, 20:32:05
(no subject) (by Luis)
Hola Alex he probado parte de los codigos de la pagina que indicas pero parece ser que no funcionan con mi Lcd.



saludos.
Thu Jan 31 2019, 16:23:57
Post a reply to this comment:
Your Name:
Your Email:
Subject:
(no HTML tags; use plain text, and hit Enter for a line break)
Attached file (if you want, 5 MB max):