Skocz do zawartości

Biblioteka "UTFTGLUE.h" jak wyświetlić liczby po przecinku


Pomocna odpowiedź

Napisano

Nie wiem jak zrobić żeby wyświetlało temperature po przecinku np: 26.05 wyświetła mi tylko dwie

pierwsze liczby w biblioteka UTFTGLUE.h

Fragment kodu:

myGLCD.setBackColor(0, 0, 0);

myGLCD.setColor(178, 34, 34);

myGLCD.printNumI( t_piec_ust , 170, 2);

A wcześniej, zanim zacząłeś tej biblioteki używać, czy zadałeś sobie trud choćby pobieżnego przejrzenia jej dokumentacji czy tylko wklejasz sobie kawałki cudzych kodów? Bo jeśli przejrzałeś, to na pewno dotarłeś do listy dostępnych funkcji i zauważyłeś różnicę między printNumI() a printNumF(), prawda? A jeśli nie, to zrób to teraz i nie marnuj naszego czasu (dla leniwych: strona 7):

http://www.rinkydinkelectronics.com/resource/UTFT/UTFT.pdf

Acha, i postaraj się dowiedzieć co znaczy "type casting" w C, bo skoro funkcja oczekuje argumentu typu int a Ty wysyłasz jej (zapewne) float to takie zjawisko właśnie zachodzi. Dobrze jest mieć pojęcie co się we własnym programie dzieje.

Nie jest to biblioteka UTFT.h jak by ktoś nie zauważył jest to UTFTGLUE.h i w tej bibliotece komenda myGLCD.printNumF nie działa tak jak i zmiana czcionki i nie wklejam cudzych linijek

Jestem początkującym

Drogi początkujący, zobacz, tu masz dwie linijki kodu z nagłówka UTFTGLUE.h:

	void printNumI(long num, int x, int y, int length=0, char filler=' ') {
	 char buf[16]; ltoa(num, buf, 10); 
	 settextcursor(buf, x, y); MCUFRIEND_kbv::print(buf);}

void printNumF(double num, byte dec, int x, int y, char divider='.', int length=0, char filler=' ') {
	 settextcursor((char*)"", x, y); MCUFRIEND_kbv::print(num, dec);}

Ja tam widzę obie funkcje i tak jak zapowiada dokumentacja jedna oczekuje liczby typu long (a więc całkowitego) a druga double (czyli zmiennoprzecinkowego). Potrzebują różnej liczby argumentów i znaczą one co innego, ale to chyba sam widzisz. I co to znaczy "nie działa"? Nie kompiluje się, nie daje żadnych wyników, wypisuje głupoty, program zwisa? Czy mógłbyś pokazać fragment swojego programu w którym wołasz printNumF() i to "nie działa"?

Zrobiłem przykładowy kod: ale i tak się nie kompiluje

#include

#include

UTFTGLUE myGLCD(0x0154, A2, A1, A3, A4, A0);

#include

double i = 23.34;

uint8_t YP = A1;

uint8_t XM = A2;

uint8_t YM = 7;

uint8_t XP = 6;

uint8_t SwapXY = 0;

uint16_t TS_LEFT = 920;

uint16_t TS_RT = 150;

uint16_t TS_TOP = 940;

uint16_t TS_BOT = 120;

TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300);

TSPoint tp;

#define MINPRESSURE 20

#define MAXPRESSURE 1000

void setup() {

TS_LEFT = 920; TS_RT = 150; TS_TOP = 940; TS_BOT = 120;

SwapXY = 0;

ts = TouchScreen(XP, YP, XM, YM, 300);

randomSeed(analogRead(5));

pinMode(A0, OUTPUT);

digitalWrite(A0, HIGH);

myGLCD.InitLCD();

myGLCD.clrScr();

myGLCD.fillScr(0, 0 , 0);// tło Czarne

}

void loop() {

myGLCD.setTextSize(3);

myGLCD.setBackColor(0, 0, 0);

myGLCD.setColor(255, 255, 255);

myGLCD.printNumF(i, 12, 48);

}

[ Dodano: 20-01-2017, 13:00 ]

Znalazłem rozwiązanie mojego problemu zamykam temat

__________

Komentarz dodany przez: Treker

Kody programów należy umieszczać przez narzędzie KOD (znajdziesz je w edytorze pod ikonką "<>"). Dzięki niemu składania programów jest automatycznie kolorowana, a wtedy wszystkim znacznie łatwiej analizować wklejone programy. Proszę to poprawić - z góry dziękuję za zrozumienie i pomoc przy utrzymaniu porządku na forum.

A "nie kompiluje" to u Ciebie znaczy "nie działa"? Bo wiesz, jeśli nie umiesz napisać poprawnego w danym języku programu to wcale nie oznacza, że użyte biblioteki mają błędy. Zdradzisz znam tajemnicę komunikatów kompilatora czy mamy sami się domyślić co Ci tam wypisał?

Z resztą, skoro nawet nie pochyliłeś się żeby zajrzeć do dokumentacji, to dlaczego miałbyś czytać komunikaty kompilatora. A wiem, że nie zajrzałeś do wskazanego dokumentu bo od razu byś zauważył, że printNumF() potrzebuje min. 4 argumentów. Napisałem Ci nawet "Potrzebują różnej liczby argumentów", ale pewnie przydługi był post albo jakoś tak.. To, że jesteś początkującym nie zwalnia Cię od dociekliwości, czytania i zrozumienia.

Na koniec zostawiam Ci przyjemność odkrycia co owe 4 argumenty oznaczają.

EDIT: Brawo, więcej skupienia i będziesz sobie radził. A zamknąć tematu to chyba nie możesz 😐

  • Pomogłeś! 1

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...