ошибка при компелировании

J-Tec
Offline
Зарегистрирован: 23.07.2014

Написал небольшую програмку под TFT 3,5" 400х240

#include <UTFT.h>
#include <Wire.h>

UTFT myGLCD(ITDB32WD,38,39,40,41);
extern uint8_t BigFont[]; 
int analogPin = 3;     
    int val = 0;           
    float voltage ;
  
void setup()
{
myGLCD.InitLCD();
myGLCD.clrScr();
myGLCD.setFont(BigFont);
}

void loop()
{
    
    myGLCD.print("Voltage:",CENTER,60); 
     
      val = analogRead(analogPin);   
      voltage = val * (5.0 / 1023.0);   
      myGLCD.print("        ", 80, 10);
      myGLCD.printNumF(voltage,3, 80, 10);
   
      delay(500);
}

Выдает такую ошибку

 

UTFT\UTFT.cpp.o: In function `UTFT::printNumF(double, unsigned char, int, int, char, int, char)':
F:\adruino\arduino-1.0.5-r2-windows\libraries\UTFT/UTFT.cpp:852: undefined reference to `UTFT::_convert_float(char*, double, int, unsigned char)'

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

Вы жалуетесь или хвастаетесь? Научить пользоваться гуглем и в частности его переводчиком? Вроде все черным по белому написано.

J-Tec
Offline
Зарегистрирован: 23.07.2014

Я спрашиваю. Т.к. новичек в програмировании.

гуглом я умею пользоваться!!! так что не надо туда отпровлять. Для кого то черным по белому, а для кого то темный лес, т.к. учусь только

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

UTFT\UTFT.cpp.o: In function `UTFT::printNumF(double, unsigned char, int, int, char, int, char)':
F:\adruino\arduino-1.0.5-r2-windows\libraries\UTFT/UTFT.cpp:852: undefined reference to `UTFT::_convert_float(char*, double, int, unsigned char)'

Выделил в чем проблема.

J-Tec
Offline
Зарегистрирован: 23.07.2014

подстовлял double. и не помогает

J-Tec
Offline
Зарегистрирован: 23.07.2014

причем человек делал осцилогроф

вот код



#include <UTFT.h>

// Declare which fonts we will be using
extern uint8_t SmallFont[];
extern uint8_t BigFont[];
extern uint8_t SevenSegNumFont[];

int analogPin = 3;     // номер порта к которому подключен потенциометр
int val = 0;           // переменная для хранения считываемого значения
int x=0;
int y=239;
int xx=1;
int yy=238;
float voltage ;


// Uncomment the next line for Arduino Mega
UTFT myGLCD(ITDB32S,38,39,40,41);   // Remember to change the model parameter to suit your display module!

void setup()
{
  myGLCD.InitLCD();

  myGLCD.clrScr();
  Serial.begin(9600);
//рисуем сетку
  myGLCD.setColor(0, 255, 0);
  myGLCD.setBackColor(0, 0, 0);

  myGLCD.setFont(BigFont);

 Grid();

  
}

void loop()
{

  while(1) {
  //myGLCD.print("@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_", CENTER, 132);
  //myGLCD.print("`abcdefghijklmnopqrstuvwxyz{|}~ ", CENTER, 144);

 //через сколько выводить на экран (БОЛЬШЕ ПИШЕМ В ПОРТ)
//  for (int i = 0; i < 3; i++) {
  val = analogRead(analogPin);     // считываем значение
  voltage = val * (5.0 / 1023.0);
  myGLCD.print("        ", 220, 10);
  myGLCD.printNumF(voltage,3, 220, 10);
//  Serial.println(voltage);
  //delay(1); 
// }


//ВЫВОД ЛИНИЕЙ МЕДЛЕННО
  yy = 230-voltage*50;
  //myGLCD.drawLine(x++,yy,xx++,y); // У,Х рисуем линию (работает) 
  myGLCD.drawLine(x,y,xx,yy); // У,Х рисуем линию (работает)
  x = xx;
  y = yy;
  xx++;

//ОЧИСКА ЭКРАНА
    if (x >= 319) {
     x=0;
    // y=239;
     xx=1;
    // yy=238;
      Grid();
      }
  
  };



  while(1) {};
}


void Grid()
{
  myGLCD.clrScr();
  myGLCD.setColor(100, 125, 0); // ЦВЕТ СЕТКИ
  myGLCD.drawLine(0,0,0,230); // рисуем линию (работает)
  myGLCD.drawLine(0,230,319,230); // У,Х рисуем линию () 
  myGLCD.drawLine(0,180,319,180); // У,Х рисуем линию () 
  myGLCD.drawLine(0,130,319,130); // У,Х рисуем линию () 
  myGLCD.drawLine(0,80,319,80); // У,Х рисуем линию ()   
  myGLCD.drawLine(0,30,319,30); // У,Х рисуем линию ()  
  myGLCD.setColor(0, 255, 0);  // цвет графика
}  

и он у него работал

 

подстовлял и double и ошибка осталась та же

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

обновите иде и библиотеку. Я не поленился и поставил на работе -

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

у меня и с float компилится

J-Tec
Offline
Зарегистрирован: 23.07.2014

Спасибо что проверили

Puld
Offline
Зарегистрирован: 19.09.2014

По видимому автор топика сдесь использует библиотеку UTFT после моей редакции. В ошибке и сообщается что неизвестно описание функции (undefined reference to ...). Видимо я забыл добавить эту функцию во внуторь самой либы, т.к. она описывалась в подключаемых файлах.

Нужно просто добавить в конец UTFT.cpp следующий код:

void UTFT::_convert_float(char *buf, double num, int width, byte prec)
{
	dtostrf(num, width, prec, buf);
}