ошибка при компелировании
- Войдите на сайт для отправки комментариев
Чт, 25/09/2014 - 16:46
Написал небольшую програмку под 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)'
Вы жалуетесь или хвастаетесь? Научить пользоваться гуглем и в частности его переводчиком? Вроде все черным по белому написано.
Я спрашиваю. Т.к. новичек в програмировании.
гуглом я умею пользоваться!!! так что не надо туда отпровлять. Для кого то черным по белому, а для кого то темный лес, т.к. учусь только
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)'
Выделил в чем проблема.
подстовлял double. и не помогает
причем человек делал осцилогроф
вот код
#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 и ошибка осталась та же
обновите иде и библиотеку. Я не поленился и поставил на работе -
у меня и с float компилится
Спасибо что проверили
По видимому автор топика сдесь использует библиотеку UTFT после моей редакции. В ошибке и сообщается что неизвестно описание функции (undefined reference to ...). Видимо я забыл добавить эту функцию во внуторь самой либы, т.к. она описывалась в подключаемых файлах.
Нужно просто добавить в конец UTFT.cpp следующий код:
void UTFT::_convert_float(char *buf, double num, int width, byte prec) { dtostrf(num, width, prec, buf); }