Autor Tema: Como refrescar sólo un caracter en un lcd?  (Leído 624 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado MINDFIELD

  • PIC16
  • ***
  • Mensajes: 139
Como refrescar sólo un caracter en un lcd?
« en: 05 de Noviembre de 2018, 12:18:46 »
Hola gente queria saber que opciones tengo de refrescar sólo un caracter en un lcd ya sea de 16x2 o 20x4?

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 7334
Re:Como refrescar sólo un caracter en un lcd?
« Respuesta #1 en: 05 de Noviembre de 2018, 12:29:58 »
Moves el "cursor" a la posición que queres editar. Y escribís un carácter.

en CCS por ejemplo :

Código: C
  1. lcd_gotoxy(1,5);  // Fila 1 posicion 5
  2. lcd_putc('c');       // Escribo una 'c'

Desconectado MINDFIELD

  • PIC16
  • ***
  • Mensajes: 139
Re:Como refrescar sólo un caracter en un lcd?
« Respuesta #2 en: 05 de Noviembre de 2018, 12:41:04 »
hola y si por ejemplo quiero que se refresque un dato osea tengo un frecuencimetro que lee 123456hz y y si la frecuencia cambia y es menor supongamos 1111 me quedan los digitos 56 imprimidos igual... como puedo refrescar eso o hacer algun arreglo?

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 7334
Re:Como refrescar sólo un caracter en un lcd?
« Respuesta #3 en: 05 de Noviembre de 2018, 13:27:30 »
Para ese caso te posicionas en donde va el primer dato (el 1 del 123456) y escribis: "  1111"

Desconectado MINDFIELD

  • PIC16
  • ***
  • Mensajes: 139
Re:Como refrescar sólo un caracter en un lcd?
« Respuesta #4 en: 05 de Noviembre de 2018, 13:39:26 »
Bueno muchas gracias por tú buena intencion pero ya nos estamos alejando del titulo de este post! igual te agradezco hice un arreglo y funciona por ahora! gracias!

Desconectado nico

  • PIC16
  • ***
  • Mensajes: 180
Re:Como refrescar sólo un caracter en un lcd?
« Respuesta #5 en: 05 de Noviembre de 2018, 14:33:31 »
hola y si por ejemplo quiero que se refresque un dato osea tengo un frecuencimetro que lee 123456hz y y si la frecuencia cambia y es menor supongamos 1111 me quedan los digitos 56 imprimidos igual... como puedo refrescar eso o hacer algun arreglo?

No no te quedarían igual, supongamos que tienes la variable frec, usas el valor de la variable y listo.

en CCS, printf(lcd_putc,"La frecuencia es: %d", frec);

Poniendolo así te imprimira el valor de frec y listo, si tienes algo escrito luego del lugar donde se imprime la frecuencia debes dejar los espacios justos para que no te corra de lugar el texto.
Salutes.

Desconectado MINDFIELD

  • PIC16
  • ***
  • Mensajes: 139
Re:Como refrescar sólo un caracter en un lcd?
« Respuesta #6 en: 05 de Noviembre de 2018, 14:37:22 »
gracias! no lo e provado todavia porque lo que hice fue esto

  Lcd.setCursor(0,0);
  Lcd.print("                    ");
un pequeño arreglo algo rebuscado pero funciona!

Desconectado MINDFIELD

  • PIC16
  • ***
  • Mensajes: 139
Re:Como refrescar sólo un caracter en un lcd?
« Respuesta #7 en: 05 de Noviembre de 2018, 14:59:02 »
nico cuando trato de verificar me dice

Arduino:1.8.3 (Windows 8.1), Tarjeta:"Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)"

C:\Users\romboidal.ino: In function 'void loop()':

Formadora_de_alambrado_romboidal:49: error: 'lcd_putc' was not declared in this scope

exit status 1
'lcd_putc' was not declared in this scope

Este reporte podría tener más información con
"Mostrar salida detallada durante la compilación"
opción habilitada en Archivo -> Preferencias.

Desconectado Robert76

  • PIC16
  • ***
  • Mensajes: 249
Re:Como refrescar sólo un caracter en un lcd?
« Respuesta #8 en: 05 de Noviembre de 2018, 15:03:02 »
Hola, sucede que nico, escribió una línea de código en CCS, que es utilizado para PIC.
Si tú usas Arduino, debes mantener la sintaxis que el compilador soporta.

Desconectado MINDFIELD

  • PIC16
  • ***
  • Mensajes: 139
Re:Como refrescar sólo un caracter en un lcd?
« Respuesta #9 en: 05 de Noviembre de 2018, 17:25:52 »
hola probe de todo para intentar muchas cosas pero no me funciona nada como para hacer algo parecido a esto printf(lcd_putc,"La frecuencia es: %d", frec); pero no nada me funciona y lo que no me da error en el ide de arduino en el lcd no imprime nada!

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 7334
Re:Como refrescar sólo un caracter en un lcd?
« Respuesta #10 en: 05 de Noviembre de 2018, 17:33:11 »
hola probe de todo para intentar muchas cosas pero no me funciona nada como para hacer algo parecido a esto printf(lcd_putc,"La frecuencia es: %d", frec); pero no nada me funciona y lo que no me da error en el ide de arduino en el lcd no imprime nada!

Debido a que parece que no conoces el lenguaje C, ni distintos compiladores, para intentar no estar un buen rato con problemas, lo mejor seria que pongas un ejemplo MUY breve con el LCD (un programa que escriba algo sobre el LCD ) y luego te decimos que debes corregir.

PD para el que entienda:
Es imposible prestarle ayuda cuando ni siquiera uno sabe el nombre del objeto que es el LCD, sabiendo el nombre del objeto, supongamos "lcd" ya se puede usar:

Código: C
  1. lcd.print(String("La frecuencia es: ") + String(frec));
« Última modificación: 05 de Noviembre de 2018, 17:36:18 por KILLERJC »

Desconectado MINDFIELD

  • PIC16
  • ***
  • Mensajes: 139
Re:Como refrescar sólo un caracter en un lcd?
« Respuesta #11 en: 05 de Noviembre de 2018, 17:59:17 »
te respondo el PD! Tú lo as dicho! no soy programador ni intento serlo! no es mi rubro, sólo soy una persona que se divierte cuando hace algo con la programación debes en cuando!

Aclarado el punto anterior esto es lo que tengo

Código: [Seleccionar]
#include <LiquidCrystal.h>
#include <FreqCount.h>

LiquidCrystal Lcd(8, 9, 4, 5, 6, 7); //Crea un objeto LC. Parametros: (rs, enable, d4, d5, d6, d7)

void setup()
{
  Serial.begin(57600);
  FreqCount.begin(1000);
}


void loop()
{
  if (FreqCount.available())
  {
    unsigned long count = FreqCount.read();
    //Serial.println(count);                    no me sirve para el lcd!!!!!!
   
    // Cursor en la primera posición de la primera fila
  Lcd.setCursor(0,0);
  Lcd.print("                    ");  //limpia la linea
   
  Lcd.setCursor(0,0);
  Lcd.print("RPS: ");
  Lcd.print(count);

  //printf("La frecuencia es: %d", count);
« Última modificación: 05 de Noviembre de 2018, 18:03:37 por MINDFIELD »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 7334
Re:Como refrescar sólo un caracter en un lcd?
« Respuesta #12 en: 05 de Noviembre de 2018, 18:39:13 »
Como lo planteaste vos es correcto.. Si quisiera hacer algo como vos tenes comentado en el printf seria como lo puse yo:

Código: C++
  1. Lcd.print(String("La frecuencia es: ") + String(count));

Pero primero deberias borrar toda la pantalla..


Código: C++
  1. Lcd.clear();              // Borra TODO y lo posiciona en 0,0
  2. Lcd.print(String("RPS: ") + String(count));    // Escribe el mensaje.


En caso de querer actualizar solo un pedacito, el mayor problema se encuentra en que el largo sea correcto. Es entonces que lo unico que se me ocurre es:

Teniendo escrito la parte de "RPS: " y supongamos que el maximo son 6 numeros

Código: C++
  1. Lcd.setCursor(0,5);
  2. String s1 (count);   // Crea el texto del numero si era 1111 queda "1111"
  3. s1 =  String(6 - s1.length(), ' ') + s1;  // En caso de ser 6 lugares entonce relleno con un texto de 6 - 4 lugares , es decir 2 veces ' ', es decir "  "
  4. Lcd.print(s1);    // Escribe el mensaje "  1111".