Close

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 Profilový obrázekfundump a poslední změna proběhla před 3 roky a 6 měsíci.
Aktuálně je na stránce zobrazeno 10 příspěvků - 1. až 10. (celkem z 10)
  • Autor
    Příspěvky
  • #9728
    Profilový obrázekfundump
    Účastník

    Dobry 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

    #9730
    Profilový obrázekVojtěch Vosáhlo
    Účastník

    Urč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.

    #9732
    Profilový obrázekVojtěch Vosáhlo
    Účastník

    Edit: Sorry za sprintf, to neni ono ;) ty posledni řádky ignoruj

    #9733
    Profilový obrázekfundump
    Účastník

    http://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

    #9735
    Profilový obrázekVojtěch Vosáhlo
    Účastník

    To je tou konverzí, itoa prostě nezachová čárku. Pokud vám nevadí knihovny, zkuste třeba toto: https://playground.arduino.cc/Main/FloatToString

    #9739
    Profilový obrázekposjirka
    Účastník

    takovej 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.

    #9741
    Profilový obrázekfundump
    Účastník

    Vojtě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

    #9742
    Profilový obrázekfundump
    Účastník

    Chlapy 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

    #9743
    Profilový obrázekposjirka
    Účastník

    takže převod z Double na string :) dtostr()

    #9744
    Profilový obrázekfundump
    Účastník

    Najlepsie je na tom to, ze je to uplne jednoduche co je super. No opat som mudrejsi :)

Aktuálně je na stránce zobrazeno 10 příspěvků - 1. až 10. (celkem z 10)
  • Pro reakci na toto téma se musíte přihlásit.