ewemarkam Napisano Styczeń 21, 2022 Udostępnij Napisano Styczeń 21, 2022 Mam problem. Robię sobie prosty wyświetlacz temperatur, są trzy temperatury. Wyświetlam to na OLED 128x64. Chciałbym aby wartości ważne tzn te przed przecinkiem były większą czcionką a te po przecinku mniejszą. Czyli wartości dziesiętne czcionką 3 a po przecinku wielkością czcionki 1. Jest to do wykonania jakoś prosto? Mam pomysł: Przepisać do int zmienną float, odjąć od tej flaot poźniej wartość int i przemnożyć przez 10, będę miał miejsca po przecinku w int. To wyświetlić w mniejszej czcionce po właściwej temperaturze. Może jest jakaś funkcja która to wyciągnie? np wartość tego co jest po przecinku. display.setTextSize(1); display.setCursor(26, 82); display.print("ATF"); display.setTextSize(3); if ( tempSensor3 > 99.9){ display.setCursor(4, 94);} else{ display.setCursor(16, 94);} display.print(tempSensor3,0); Link do komentarza Share on other sites More sharing options...
ethanak Styczeń 21, 2022 Udostępnij Styczeń 21, 2022 sprintf a potem dzielisz napis na kropce. Masz od razu napis do wyświetlenia i nie przejmujesz się wiodącymi zerami czy minusami. 2 Link do komentarza Share on other sites More sharing options...
ewemarkam Styczeń 21, 2022 Autor tematu Udostępnij Styczeń 21, 2022 (edytowany) Dzięki Edytowano Styczeń 21, 2022 przez ewemarkam Link do komentarza Share on other sites More sharing options...
ewemarkam Styczeń 21, 2022 Autor tematu Udostępnij Styczeń 21, 2022 Czyli, sprintf przerabiam float na string a później substring() wydzielam sobie to co potrzebuje? Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Produkcja i montaż PCB - wybierz sprawdzone PCBWay! • Darmowe płytki dla studentów i projektów non-profit • Tylko 5$ za 10 prototypów PCB w 24 godziny • Usługa projektowania PCB na zlecenie • Montaż PCB od 30$ + bezpłatna dostawa i szablony • Darmowe narzędzie do podglądu plików Gerber Zobacz również » Film z fabryki PCBWay
ethanak Styczeń 21, 2022 Udostępnij Styczeń 21, 2022 (edytowany) sprinfem pakujesz daje do bufora (tablica char[]). Możesz z tego zrobić String ale to overkill. Znajdujesz kropkę orzez strchr, zamieniasz na \0 i masz gotowe dwa napisy. Coś w stylu char tablica[8]; sprintf(tablica, "%5.1f", t); char *d=strchr(tablica, '.'); *d++=0; i w tablicy zostają trzy znaki (część całkowita) a w d masz znak odpowiadający ułamkowi. Te już możesz wrzucać bezpośrednio do display.print() Edytowano Styczeń 21, 2022 przez ethanak Link do komentarza Share on other sites More sharing options...
ewemarkam Styczeń 21, 2022 Autor tematu Udostępnij Styczeń 21, 2022 (edytowany) Może jestem oporny, ale teraz to już nic z tego nie rozumiem. 😅 To zadziała? String mystring = String(tempSensor1); String dziesietne = mystring.substring(4, 5); Zakładam że na 4 i 5 miejscu będe miał dwie liczby po przecinku. ESP nie robi nic więcej jak odczyt z trzech DS18B20 i wyświetlenie ich na OLed. Edytowano Styczeń 21, 2022 przez ewemarkam Link do komentarza Share on other sites More sharing options...
_LM_ Styczeń 22, 2022 Udostępnij Styczeń 22, 2022 @ewemarkam https://www.tutorialspoint.com/c_standard_library/c_function_sprintf.htm 1 Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
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ę »