Autor Tema: GLCD Necesito insertar el dato seguido de un texto  (Leído 2042 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado Berto

  • PIC16
  • ***
  • Mensajes: 191
GLCD Necesito insertar el dato seguido de un texto
« en: 24 de Abril de 2016, 15:26:58 »
Esto es lo que e visto asta ahora

char texto[26]={"X= "};

glcd_text57(xe,ye,texto,1,on);
o vale glcd_text57(xe,ye,"X= ",1,on);

Pero no veo manera alguna de meter un int8 segido de "X= " o concatenar el int8 segido del char

Es decir esto es lo que quiero si fuese un LCD Alhafumerico
 printf(lcd_putc,"X= %u ",xg); //= resultado

Esoy usando el LCD Grafico LGM12641BS1R en Proteus

Desconectado rotting79

  • PIC12
  • **
  • Mensajes: 91
Re:GLCD Necesito insertar el dato seguido de un texto
« Respuesta #1 en: 25 de Abril de 2016, 21:47:36 »
hey there

let me see if i get it.... u try to print out a value, after some math, right??

what I do is to do the math first, then copy the value to a string, the call the sprintf ( ) function


Hola
déjame ver si lo consigo .... u tratar de imprimir un valor, después de un poco de matemática, ¿no ??
lo que hago es hacer los cálculos en primer lugar, a continuación, copiar el valor a una cadena, la llamada de la función printf ()


#include <stdio.h>
#include <stdlib.h>


unsigned char TFT_Text_5 [ 0x03 ];

float V;
char Vi, Vj, ViTemp, VjTemp;   


            SetADCChannel ( CH_AN0 );
            __delay_us ( 35 );
            unsigned int val1 = ReadADC ( );

            V = val1 * 5.0 / 1023.0;
            Vi = ( int ) V;
            Vj = ( int ) ( ( V - Vi ) * 10 );

            sprintf ( TFT_Text_5, "%d.%d", ViTemp, VjTemp );
            textTFT ( TFT_Text_5, 68, 130, BLACK );
            sprintf ( TFT_Text_5, "%d.%d", Vi, Vj );
            textTFT ( TFT_Text_5, 68, 130, WHITE );
            ViTemp = Vi;
            VjTemp = Vj;
            __delay_ms ( 150 );

   interruptFlagTMR4 = CLEAR;


...On November 2nd, a PIC10 became self-aware and decided our fate in __delay_us ( 1 ); ...

Desconectado Berto

  • PIC16
  • ***
  • Mensajes: 191
Re:GLCD Necesito insertar el dato seguido de un texto
« Respuesta #2 en: 26 de Abril de 2016, 18:20:26 »
NI X NI Y

porque %d because?

you create  textTFT ( TFT_Text_5, 68, 130, BLACK ){   ???????  }

no randon please.

Desconectado Berto

  • PIC16
  • ***
  • Mensajes: 191
Re:GLCD Necesito insertar el dato seguido de un texto
« Respuesta #3 en: 27 de Abril de 2016, 15:31:11 »
Caracteres--;

void corde(xt,yt,xx,yy){
texto="X= ";// && xg;
glcd_text57(xt,yt,texto,1,on);
sprintf ( texto, "%u  ", xg); 
 // glcd_text57(xt+13,yt,texto,1,OFF); //Aunque aqui vuelvo a perder el control
//borro todo con glcd_fillscreen(0); consecuencia es parpadeo constante
glcd_text57(xt+13,yt,texto,1,on);
texto="Y= ";// && xg;
glcd_text57(xt+33,yt,texto,1,on);
sprintf ( texto, "%u  ", yg); 
glcd_text57(xt+46,yt,texto,1,on);

}


Desconectado arielmdq

  • PIC16
  • ***
  • Mensajes: 166
Re:GLCD Necesito insertar el dato seguido de un texto
« Respuesta #4 en: 28 de Abril de 2016, 08:55:22 »
Hola ,te paso algo que estoy usando en este momento haber si te sirve  :
void displayVoltage(int adc0)
{
   char voltage[6];
   sprintf(voltage, "%f", (float)adc0 );
   voltage[4] = '\0';
   glcd_rect(70, 55, 95, 62, YES, Off); // este rectangulo limpia el valor cada vez que este cambia
   glcd_text57(70,55, voltage, 1, ON); //posiciono el valor de la variable en el glcd

  glcd_text57(3,55, Bateria, 1, ON);// pongo la palabra antes del valor
  glcd_text57(105,55, v, 1, ON);    // y un simbolo despues del valor
 
}
en este caso con esta funcion estoy leyendo un canal del adc del pic y muestro el valor con una variable tipo float ,pero puede ser la que vos quieras ,si te fijas bien todo se encuentra en la misma linea y esto quedaria algo asi

 Bateria       13.8   V

mas o menos

Espero haberte ayudado , ahora tengo que ir a trabajar pero cualquier cosa pregunta .Saludos!!!!
Pd: me olvidé de decirte que tenés que declarar las palabras antes de usarlas  ej:
 char bateria [ ]= " Batería" ;
« Última modificación: 28 de Abril de 2016, 09:33:46 por arielmdq »
El tiempo es una ilusión ,solo existe el presente................

Desconectado rotting79

  • PIC12
  • **
  • Mensajes: 91
Re:GLCD Necesito insertar el dato seguido de un texto
« Respuesta #5 en: 28 de Abril de 2016, 20:18:37 »
well mr Berto

it was an old application with a TFT Display, but the main concept remains, so basicly jsut change the variable's names to the ones you are using. Also i see two different functions on your code: one for a 2x16 LCD and another for a GLCD, two differents displays, but in both cases it would work, I use them in many projects.

answering to your question "porque %d because?" (I think is a question)

% it is the prefix to ask for a value, then the letter 'd' referst to int, so the whole thing is asking for a integer (int) value.
in the next picture, the values pinted are askthem the way Im showing you right now

así mr Berto

que era una aplicación de edad con una pantalla TFT, pero el concepto principal sigue siendo, por lo que básicamente jsut cambiar los nombres de la variable a los que usted esté usando. También veo dos funciones diferentes en su código: uno para un LCD de 2x16 y otro para un GLCD, dos pantallas diferentes, pero en ambos casos sería trabajar, yo los utilizo en muchos proyectos.

respondiendo a su pregunta "porque% d porque?" (Creo que es una pregunta)

% Es el prefijo para pedir un valor, a continuación, la letra 'd' referst a int, así que todo el asunto está pidiendo un valor entero (int).
En la siguiente imagen, los valores son pinted askthem la manera Im mostrando que en este momento


even on the back, my power supply with 2x16 LCD shows the voltage values in this way

incluso en la parte de atrás, mi fuente de alimentación con pantalla LCD de 2x16 muestra los valores de tensión de esta manera

http://www.todopic.com.ar/foros/index.php?topic=46058.msg385944#msg385944
...On November 2nd, a PIC10 became self-aware and decided our fate in __delay_us ( 1 ); ...

Desconectado Berto

  • PIC16
  • ***
  • Mensajes: 191
Re:GLCD Necesito insertar el dato seguido de un texto
« Respuesta #6 en: 03 de Mayo de 2016, 14:32:56 »
 El patron que funciona con graficos circulos cuadrados no va con el texto
Citar
glcd_rect(70, 55, 95, 62, YES, Off); // este rectangulo limpia el valor cada vez que este cambia
Tienes razon ahora e visto lo que haces, como no controlo a ojo y las cordenadas difieren de texto-datos a graficos, lo primero que e hecho es dibujar el rectangulo en negro "on" para cercionar lo que dejo en blanco. Buena idea gracias.

Citar
Also i see two different functions on your code:
donde?? in my code??
Tampoco entiendo el apartado al que me mandas, no se que estays haciendo apenas e visto algo de AXM y no e llegado a utilizar XC8

2 Saludos

Desconectado Berto

  • PIC16
  • ***
  • Mensajes: 191
Re:GLCD Necesito insertar el dato seguido de un texto
« Respuesta #7 en: 03 de Mayo de 2016, 15:18:19 »
En my proyecto una pelota "circle" avanza de izquierda a derecha reiniciandose proceso continuamente, Hay un grafico rectangulo "ret" horizontal estatico (no se mueve) relativamente cuesta mucho cargarlo continuamente, ¿se le puede dar prioridad visual?
Es decir las cordenadas-grafico "circle" no deben interferir dentro de el. Sobre todo en su

glcd_circle(xg,yg,vol,YES,off);*//El problema de borrar "circle" es que borra al "ret" delatando su posicion dentro de este. Lo soluciono impidiendo esta funcion* cuando llega a la Xgrafica inicial de "ret", pero la velocidad de la pelota varia continuamente y esta deja un rastro de entrada y en otras se come un cacho del retangulo en la entrada.

La simulacion visual pretendida es: La pelota esta lejos y al pasar esta por el no se ve. "ret" la tapa

Desconectado arielmdq

  • PIC16
  • ***
  • Mensajes: 166
Re:GLCD Necesito insertar el dato seguido de un texto
« Respuesta #8 en: 04 de Mayo de 2016, 18:23:33 »
Hola Berto , no logro interpretar bien tu explicacion , pero te pregunto, el circulo que estas moviendo es de color? osea esta rellenado.O solo es una circunferencia y el centro esta vacio?
Y el rectangulo tambien esta rellenado? ,podrias subir una simulacion (si es que usas proteus ) o algunas fotos del grafico ?
Y tambien el codigo ,que aunque no se mucho pero tal vez entre todos te podamos ayudar.
                                                                                                                        Saludos   
El tiempo es una ilusión ,solo existe el presente................

Desconectado Berto

  • PIC16
  • ***
  • Mensajes: 191
Re:GLCD Necesito insertar el dato seguido de un texto
« Respuesta #9 en: 06 de Mayo de 2016, 09:16:48 »
No no tenia ni idea de que se puede utilizar colores, no vi nada ni aqui ni en youtu, A hora algo producir un garfico mediante un programa llamado LCDAsistand Aparte que no consegui cargalo como explican, No creo estar generando bien el grafico todo pilxel esta a 0xff.

Respecto a lo anterior Esto es lo mejor Redibujar un pequeño cuadrupedo dentro del cuadrupedo mayor cada vez que la bola empieza a colisionar con el asta estar "dentro" el efecto quedo muy bien.
Esta preparado para que este pequeño glcd_rect(..) dentro del mayor GLD_RET(..) se redibuje al mismo tamaño que la bola  glcd_circle(..)
No solo tiende a probocar parpadeo el tiempo utilizado  de borrar-redibujar. Estoy viendo que esto se reduce tambien segun el tamaño del grafico.
Esto es lo principal:

Código: [Seleccionar]
//puente (rectangulo vertical)
glcd_rect(70, 15, 105, 60, YES, on); //Cuesta mucho dibujarlo pero no un cuadrupedo menor dentro de el
//vol=2;//radio circle=2;
do{//;
//El rectangulo mayor es estatico su Xinicial siempre es=70 Xfinal=105
if(xg<(70+vol)){     
glcd_circle((int8)xg,yg,vol,YES,off); }

if(xg>(69-vol) && xg<(75+vol)){
// glcd_rect(70, 22-vol, 72+vol, 22+vol, YES, off); //este ret-off sirve para controlar visualmente el de abajo
  glcd_rect(70, yg-vol, 72+vol, yg+vol, YES, on); }//se re-dibuja dentro de un cuadrupedo mayor --> glcd_rect(70, 15, 105, 60, YES, on); //puente (rectangulo vertical)
xg++;
if(trampa){ //Trampa=1 esta hecha para control de datos, pero originalmente debe ser trampa=0
glcd_rect(18, 3, 36, 13, YES, off);
sprintf ( texto, "%ld", xg); //mostrar este y otros datos te da un resultado temporal que hay que calcular mentalmente
glcd_text57(18,5,texto,yes,on);
}
//Si trampa=1 bola se delatara dibujandose cuando atraviesa el rectangulo dandote el resultado
if(xg<90 || trampa){//No es necesario dibujar bola_negra dentro de rectangulo_negro
glcd_circle((int8)xg,yg,vol,YES,on);//
}
.....
.....
}

El proyecto entero es este, gracias por cualquier aporte de tu experiencia si quieres echarle un vistazo. Si no puedes abrir el zip mandame uno valido.