Pantalla LCD 128x64 imprime datos "basura" con el Serial.print

Hola!
Soy nuevo en el foro y mi pregunta o problema que tengo es con la pantalla lcd serial 128x64. En mi código de programación utilizo algunas variables de tipo int y float para realizar algunos procesos u operaciones, pero al momento de imprimirlos en la pantalla (lcd) utilizando la opción “Serial.print ó Serial.println” me aparecen datos de más, números o símbolos que no se porqué aparecen. Dentro de las opciones o “funciones” de la pantalla, hay un código que se puede utilizar para imprimir en la pantalla, pero aun así me visualiza datos “parásitos” en la pantalla, ya cambié los tipos de datos que uso, todos enteros o todos flotantes y sigo con el problema.

En fin la verdad no se cual sea mi error o problema en la realización de esto, espero puedan ayudarme un poco con esto.

Saludos. (dejo mi codigo) Gracias!

PD. el problema que tengo es cuando se imprime en la pantalla la variable de porcentaje, litros y level. Estoy usando la version de arduino 0023 y les dejo el enlace codigo con el que he estado trabajando.

https://dl.dropbox.com/u/57429772/Pantalla/Pantalla.pde

¿Es el lcd se sparkfun?

Sí, ese mismo es, aqui dejo unas imagenes de lo que se muestra en pantalla a la hora de imprimir las variables que marcan error
1º Porcentaje
2º Valor de lectura analógica
3º Contador
4º Litros

https://dl.dropbox.com/u/57429772/2012-11-15-1447.jpg
https://dl.dropbox.com/u/57429772/2012-11-15-1452.jpg

Les agradecería mucho su ayuda.

A ver, dime que librería usas.
Otra cosa a añadir es que estas lcd traen un firmware con muchos errores. Yo la tengo y está aparcada.

La única libreria que utilizé fué "#include <avr/pgmspace.h> //libreria para poder guardar los arrays de datos de imagenes en memoria de programa", sólo ésa, en sí reutilizé el codigo que proporciona el blog:

de ahí lo descargué y lo fuí modificando para que mostrara lo que necesitaba, todo lo visualiza bien, imagenes, lineas, circulos, rectangulos (éstos solo los podia dibujar pero no borrar, por eso utilizé varios ciclos for con lineas), etc. sólo a la hora de imprimir esas variables salen "digitos basura" en la pantalla.

Bueno, comparte tu código. Puede ser que tu lcd tenga el firmware actualizado.
Un saludo.

El link del codigo que utilizo esta en la pregunta, de cualquier forma lo pongo nuevamente y gracias.

https://dl.dropbox.com/u/57429772/Pantalla/Pantalla.pde

Aquí tienes. Algo tan simple como mostrar Bienvenido y Bienvenidos en diferentes líneas, y lo que pasa es un error y sale por varios sitios. Como ya te he dicho, el firmware que lleva es una patata. Nos toca actualizar..
A lo mejor este código a ti te va bien.
Ya me cuentas :wink:

#include <avr/pgmspace.h> 
int x; 
int y; 
void setup() {
  Serial.begin(115200);
}


void loop() {
   x=(50);
    y=(35);
    coordenadas(x,y);
    escribir_LCD("Bienvenido");

    
       x=(40);
    y=(45);
    coordenadas(x,y);
    escribir_LCD("Bienvenidos  ");
 
}


void escribir_LCD(char *data){
 Serial.print(data);
 delay(20);
}



void coordenadas(int x, int y){    //x de 0 a 127
  Serial.print(0x7C,BYTE);         //y de 0 a  63
  Serial.print(0x18,BYTE);
  Serial.print(x,BYTE);
  Serial.print(0x7C,BYTE); 
  Serial.print(0x19,BYTE);
  Serial.print(y,BYTE);
  delay(20);
}

Mira, de cuando estuve en guerra con el lcd.

Hola!
No entendí el porqué del comentario de "mostrar Bienvenido y Bienvenidos en diferentes lineas" ya que no tengo problemas con el despliegue de información en la pantalla, o con las figuras (bueno, sólo con los rectangulos, los puedo digujar (rectangulo (0,0,127,63,1);), pero al querer borrarlos (rectangulo (0,0,127,63,0):wink: no puedo hacerlo, no lo hace) lo que creo que pasa es que quizá hago un mal manejo de las variables en la programación, o quizá alguna operación incorrecta que hace que al momento de ralizarla e imprimirla vaya generando resultados con "residuos" que hace que se impriman en pantalla.

Con respecto a la actualización del firmware, ví tu anterior post, pero ya no ví el como hacen la actualización o donde puedo encontrar el firmware (ya busque en la red y encontré pero para otro tipo de pantallas, a color o con mayor resolución).

https://dl.dropbox.com/u/57429772/2012-11-16-1453.jpg (imagen de bienvenida, sale bien)
https://dl.dropbox.com/u/57429772/2012-11-16-1457.jpg (selección, esta bien)
https://dl.dropbox.com/u/57429772/2012-11-16-1458.jpg (muestra porcentaje, lectura analógica, contador, valor de litros y barras de porcentaje respectivamente, estas si salen bien, no tengo problemas)
https://dl.dropbox.com/u/57429772/2012-11-16-1459.jpg ( en lecturas después, al vajar el nivel o el porcentaje [con el potenciometro] en la variable "litros" comienzan a aparecer simbolos que no deberian, en ocaciones aparecen cosas raras, números o X caracter, al igual que en la variable de porcentaje)

Con lo de Bienvenido y Bienvenidos he querido mostrar que mi LCD no funciona. Algo tan simple como mostrar eso, y no lo hace.
Respecto a tu problema, no dudo que esos residuos sean tema de firmware también. Me harías un favor si probases también tu ese código.
Tu código creo que está bien.
Un saludo.

Yo no veo nada mal en el código pero si las frases se imprimen bien y los floats no, una solución de emergencia podría ser convertir el float en una frase y luego imprimir la frase.

Por ejemplo, imprimir "litros" con 2 decimales

float litros = 425.63; 
long  a;
String ss;

a = (long) litros;
ss = String(a, DEC);

Serial.print(ss);
Serial.write('.');

a = (long) (litros*100.0);
a %=100;
ss = String(a, DEC)

Serial.print(ss);

Para verificar si la LCD está bien tienes que probar mi código. Si te sale lo que a mí (foto) es que el firmare es el malo. Si fuera lo contrario, pues se mira el error en el código. Yo creo que lo mejor en ésto es ir paso a paso.
Un saludo!!

Hola nuevamente y gracias por su ayuda y comentarios :slight_smile:

El problema que tenía es que la hora de imprimir los datos en pantalla se sobreescribian los números haciendo que aparecieran esos "digitos bausra" lo qui hice fué algo sencillo (y creo que obvio :blush:) solo fué borrar los datos antes de volver a escribirlos en la pantalla.

Con respecto al firmware no tuve ningun problema al respecto (quizá solo a la hora de dibujar algunas figuras, pero creo que era porque estaban mal "deffinidas" las funciones), y PascuaL, el codigo que me pediste que probara si funcionó bien, el texto apareció donde debia de estar de acuerdo a las coordenadas, quizá mi lcd ya viene con el firmware actualizado o algo por el estilo.

Ahora presento otro "problema", es sobre el envio de datos capturados por el arduino de un potenciomentro por medio de dos XBee, pero... para eso abriré otra pregunta en el foro.

Nuevamente gracias por sus comentarios! :slight_smile: