seguimos con la libretia UTFT error instruccion "myGLCD.NumF"

Hola de nuevo, alguien ha intentado imprimir una float con la siguiente instruccion?

myGLCD.NumF, se supone que es para poder imprimir numeros con decimales, pero he utilizado un ejemplo de la libreria modificando la linea y no hace nada, mejor dicho ni compila…
pongo el codigo y el error.

#include <UTFT.h>
#include <SPI.h>

// Declare which fonts we will be using
extern uint8_t SmallFont[];
float consumo1;


UTFT myGLCD;

void setup()
{
  myGLCD.InitLCD();
  myGLCD.clrScr();
}

void loop()
{
  myGLCD.setColor(0, 255, 0);
  myGLCD.setBackColor(0, 0, 0);
  myGLCD.setFont(SmallFont);
  myGLCD.printNumF(consumo1,1,100,148,'.', 4, ' ');
  //myGLCD.printNumF(consumo1,1,100,148);

}

como veis no tiene nada, esto lo he hecho por si era problema en el programa que estoy creando, pero veo que en este sale igual.

Y el error

UTFT\UTFT.cpp.o: In function UTFT::printNumF(double, unsigned char, int, int, char, int, char)': C:\Program Files (x86)\Arduino\libraries\UTFT/UTFT.cpp:939: undefined reference to UTFT::_convert_float(char*, double, int, unsigned char)’

O hay alguna otra forma de poder imprimir un valor con decimal y que no ocupe casi que solo me quedan 2k de los 32.

Un saludo y gracias.

Lo mas basico que puedes hacer es separa las dos partes entera y decimal en dos variables enteras:

float consumo;


...
void loop
{
int pEnt, pDec;

pEnt  = consumo;              //solo la parte entera es almacenada en pEnt
pDec = consumo * 100;       //corremos el punto decimal hacia la derecha dos posiciones al multiplicar por 100 (temporal)
pDec = pDec % 100;           //hacemos una división modular entre 100 que nos regresa el resto, en este caso la parte "decimal"
//Imprimimos...
Serial.print(pEnt);
Serial.print('.');
Serial.println(pDec);

}

Hola, muchas gracias ehrja, lo mirare, haré un map a consumo (ya que el 3.3v equivalen al máximo 2A) y veremos que sale. Gracias por la información.

Hola ehrja lo he probado pero no consigo nada ya que el valor lo tengo que mapear, en este post http://forum.arduino.cc/index.php?topic=161234.0 indican que el mapeo se come los decimales.... pero también indica como solucionarlo, lo malo es que estamos con lo mismo al final hay que imprimir un float.

Le he mandado un correo al creador de la librería, ya veremos que dice. Que fastidio, es lo ultimo que me queda para terminar con todo (programa y memoria del chip xD). Un saludo y comentare lo que me indique el creador de la libreria.

Sólo por probar, prueba como te ha dicho ehrja, pero modifica la multiplicación: pDec=100.0 * consumo A ver su se fuerza cálculo flotante

Hola

Nunca dijiste algo de mapear, y de cuanto a cuanto lo quieres mapear? No tengo la libreria ni la pantalla pero veré que puedo hacer, dime de donde bajaste la libreria para tener la misma.

Hola ehrja, no comente nada al principio ya que el problema era con la función que indico.... pero pido disculpas. La biblioteca es una basada en la UTFT, esta modificada para usarla con el controlador ili9341, la librería se llama TFT9341SPI-master este es el enlace:

https://github.com/pantata/TFT9341SPI

noter, mañana intentare hacer lo que comentas.

Indicar que el sistema que hay en el post que he indicado funcionaria bien si la función no diese error. Y que me sobra 0,4 kb de memoria...

Con que versión IDE estas compilando? Con la versión 1.5.4r2 no me da errores.
Solo aporto eso que tal vez ayude.

Hola surbyte, pues arriba en el IDE pone 1.0.6, voy a mirar con la que dices..... en descargas solo veo la que tengo y la 1.5.8 beta (es esa?). Un saludo.

Mira hace unos dias hubo un problema similar. Las versiones 1.0.6 dan problemas, nome preguntes porque? Intenta con la que me comentaste y verás que desaparece el problema. No te preocupes porque diga BETA, a mi no me ha dado problemas.

He probado con la 1.5.8 y directamente me da errores al cargar las fuentes del UTFT. Por lo que este queda descartado....

Esto es lo que sale, he eliminado la 1.06 y he instalado de nuevo la 1.5.8 y sigue igual.

Arduino: 1.5.8 (Windows 7), Placa:"Arduino Duemilanove or Diecimila, ATmega328"

C:\Program Files (x86)\Arduino\libraries\UTFT\DefaultFonts.c:21:14: error: variable 'SmallFont' must be const in order to be put into read-only section by means of 'attribute((progmem))' fontdatatype SmallFont[1144] PROGMEM={ ^ C:\Program Files (x86)\Arduino\libraries\UTFT\DefaultFonts.c:125:14: error: variable 'BigFont' must be const in order to be put into read-only section by means of 'attribute((progmem))' fontdatatype BigFont[3044] PROGMEM={ ^ C:\Program Files (x86)\Arduino\libraries\UTFT\DefaultFonts.c:234:14: error: variable 'SevenSegNumFont' must be const in order to be put into read-only section by means of 'attribute((progmem))' fontdatatype SevenSegNumFont[2004] PROGMEM={ ^ Error de compilación

This report would have more information with "Show verbose output during compilation" enabled in File > Preferences.

Bueno, aca tienes mi reporte parcial (ultimas líneas) para un Mega

C:\Users\Bichy\AppData\Local\Temp\build5917796239462415293.tmp\SPI\SPI.cpp.o C:\Users\Bichy\AppData\Local\Temp\build5917796239462415293.tmp/core.a -LC:\Users\Bichy\AppData\Local\Temp\build5917796239462415293.tmp -lm
C:\Program Files (x86)\Arduino\hardware\tools\avr\bin\avr-objcopy -O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0 C:\Users\Bichy\AppData\Local\Temp\build5917796239462415293.tmp/TFT.cpp.elf C:\Users\Bichy\AppData\Local\Temp\build5917796239462415293.tmp/TFT.cpp.eep
C:\Program Files (x86)\Arduino\hardware\tools\avr\bin\avr-objcopy -O ihex -R .eeprom C:\Users\Bichy\AppData\Local\Temp\build5917796239462415293.tmp/TFT.cpp.elf C:\Users\Bichy\AppData\Local\Temp\build5917796239462415293.tmp/TFT.cpp.hex

Sketch uses 31.736 bytes (12%) of program storage space. Maximum is 258.048 bytes.
Global variables use 62 bytes (0%) of dynamic memory, leaving 8.130 bytes for local variables. Maximum is 8.192 bytes.

Adjunto librería y archivo.
no me lo permite hacer porque superan 1.28 Mbytes

TFT.ino (396 Bytes)

lo he descargado y na... sigue igual incluso seleccionando el mega. >:(

Dije mega porque fue el que usé pero da igual. Que raro!!!!. Como a mi me funciona y a ti no.

veamos. Tu versión ahora es 1.5.8 La librería es la misma ya que yo la bajé del sitio que tu indicaste. a menos que tengamos problemas en las versiones IDE no veo razón alguno para que a ti te de errores y a mi no. La librería esta correctamente en C:\Archivos de programa (X86)\Arduino\libraries\UTFT ? Yo asi la tengo.

La he descargado de nuevo, yo que se por si al desinstalar copiar pegar se estropeo ¿?¿? pero hace lo mismo, la librería esta en el sitio correcto, yo no tengo la de botones y geometría porque no la he utilizado.
Esto es el misterio del nunca acabar…

Lo he instalado en el portátil y hace lo mismo.....

Me parece que ya veo la diferencia. Tu pusiste que la libreria que usas es TFT9341SPI y yo debo haber buscado UTFT como mencionabas al principio encontrando esta UTFT.RAR que pensé era la que referías.

Ahi debe estar la diferencia entre tus errores y la compilación correcta en mi caso. A ver si es por ahi?

Si. Creo que encontré el misterio de la librería que falla!!!

Y no es lo mismo?.... yo creía que simplemente quitaron los demás módulos tft para ganar espacio (ya que en la UTFT original hay que poner el modulo, pines....) y dejaron solo el ILI9341. Pues que pu**da. Voy a ver si puedo ver la diferencia de la original a esta en la función que me falla por si se dejaron o borraron algo.... Ya os contare algo.

Pues no veo diferencia en esa parte.... he mirado de utilizar la libreria UTFT.RAR parece que lo compila pero se pasa de largo mira:

Sketch uses 43.632 bytes (142%) of program storage space. Maximum is 30.720 bytes. Global variables use 1.055 bytes (51%) of dynamic memory, leaving 993 bytes for local variables. Maximum is 2.048 bytes. processing.app.debug.RunnerException: Programa muy grando: visite http://www.arduino.cc/en/Guide/Troubleshooting#size para ver cómo reducirlo. at processing.app.Sketch.size(Sketch.java:1675) at processing.app.Sketch.build(Sketch.java:1589) at processing.app.Sketch.build(Sketch.java:1508) at processing.app.Editor$DefaultRunHandler.run(Editor.java:1912) at java.lang.Thread.run(Unknown Source) Programa muy grando: visite http://www.arduino.cc/en/Guide/Troubleshooting#size para ver cómo reducirlo.