Nextion LCD zobrazenie s desatinnou ciarkou
Úvodní stránka › Fórum › Vaše projekty › Arduino › Nextion LCD zobrazenie s desatinnou ciarkou
- Toto téma obsahuje celkem 9 odpovědí. Do diskuze (3 diskutující) se naposledy zapojil uživatel
fundump a poslední změna proběhla před 9 roky.
-
AutorPříspěvky
-
22.12.2016 v 18:31 #9728
fundump
ÚčastníkDobry den.
Pracujem na viacerych projektoch arduino, programujem cca 2 roky, takze nie som zaciatocnik.
Mam problem s poslanim dat typu float na lcd. Konkretne z tepelneho cidla mi zobrazi hodnotu ale iba v stupnoch bez desatinnej ciarky. Pouzivam kniznicu Nextion.h
Program nebudem cely sem davat, ti co vedia tak by malo stacit toto:
memset(buffer, 0, sizeof(buffer));
itoa(sp_teplota, buffer, 10);
sp_temperature.setText(buffer);Podobny problem som nasiel na nextion fore ale nikto tam nereagoval, jedine tam bola odpoved, ze zmen „itoa“ na „ftoa“ a este nieco k tomu no nefunguje to co aj tam pisali, ze to nefunguje.
Zacina ma to brzdit, vela veci mam hotovych no necakal som, ze ma toto spomali. Co sa tyka hodnoty teploty na serial monitor, ten mam pekne s desatinnou ciarkou.
Dakujem za hociaku radu
22.12.2016 v 19:07 #9730Vojtěch Vosáhlo
ÚčastníkUrčitě by měl být použit ftoa() vzhledem k tomu že u int nemůžete nikam naprat desetinou čárku (aspoň co já vim). Co to vypíše? Např. teplota je 20.38C
Zobrazí to jen 20C nebo 2038C nebo vubec nic?Mimo toto můžete zkusit itoa/ftoa nahradit sprintf. Tady je doku. https://www.tutorialspoint.com/c_standard_library/c_function_sprintf.htm
Je tam mnoho dostupných formátů tak jich pár zkuste.
22.12.2016 v 19:22 #9732Vojtěch Vosáhlo
ÚčastníkEdit: Sorry za sprintf, to neni ono 😉 ty posledni řádky ignoruj
22.12.2016 v 19:34 #9733fundump
Účastníkhttp://support.iteadstudio.com/support/discussions/topics/1000068252
Tuto to tiez riesia no presne ako on pise tiez mi to vyhodi tuto chybu:
‚ftoa‘ was not declared in this scope.A teplotu napr. cez serial monitor zobrazi napr 22,38 ale na Nextion display zobrazi iba 22
22.12.2016 v 19:56 #9735Vojtěch Vosáhlo
ÚčastníkTo je tou konverzí, itoa prostě nezachová čárku. Pokud vám nevadí knihovny, zkuste třeba toto: https://playground.arduino.cc/Main/FloatToString
23.12.2016 v 16:07 #9739posjirka
Účastníktakovej hloupej nápad pramenící z neznalosti problému : a potřebuješ to ve tvaru float? String by ti nefungoval? Předpokládám, že se jedná pouze o zobrazení a nikoliv výpočet něčeho.
23.12.2016 v 18:42 #9741fundump
ÚčastníkVojtěch Vosáhlo Dakujem za moznost no pripada mi to zbytocne komplikovane. Tie displaye vyzeraju dost inteligentne na to aby sa to takto komplikovalo.
posjirka Mas pravdu tiez si myslim ze to bude mozno nieco jednoduche o com zatial neviem aj ked som stravil x hohin nad hladanim riesenia ci na youtube alebo forach no vsade bolo udavane v celych cislach ako keby to nikto neriesil, alebo sa to fakt neda. Je to cudne ked som nasiel zopar meteostanic a nebola teplota zobrazovana s desatinnou ciarkou.
Pytas sa ci to potrebujem float. No popravde je mi to jedno. Chcem to ako pises len zobrazit skutocnu teplotu na display a to mi staci jedna desatinka. Pouzivam DHT22 cidla.
String som neskusal, hlavne z toho dovodu ze vacsinou pracujem systemom ctrl+c, ctrl+v. Cize skor vyhladavam hotove funkcie, ktore si doladujem.
Chlapy dakujem za Vas cas, snad na nieco prideme spolocne
23.12.2016 v 19:05 #9742fundump
ÚčastníkChlapy neskutocne no nasiel som to. Tak ak by niekto riesil podobny problem pouzil som:
Povodne (nefunkcne):
memset(buffer, 0, sizeof(buffer));
itoa(sp_teplota, buffer, 10);
sp_temperature.setText(buffer);Nove (funkcne s desatinnou ciarkou):
memset(buffer, 0, sizeof(buffer));
dtostrf(sp_teplota,5, 2, buffer);
sp_temperature.setText(buffer);Velmi pekne dakujem
23.12.2016 v 19:10 #9743posjirka
Účastníktakže převod z Double na string 🙂 dtostr()
23.12.2016 v 19:14 #9744fundump
ÚčastníkNajlepsie je na tom to, ze je to uplne jednoduche co je super. No opat som mudrejsi 🙂
-
AutorPříspěvky
- Pro reakci na toto téma se musíte přihlásit.
