Skocz do zawartości

ESP8266 wyciągnięcie miejsc po przecinku


Pomocna odpowiedź

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 to post
Share on other sites

sprintf a potem dzielisz napis na kropce.

Masz od razu napis do wyświetlenia i nie przejmujesz się wiodącymi zerami czy minusami.

  • Lubię! 2
Link to post
Share on other sites
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

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

(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 przez ethanak
Link to post
Share on other sites
(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 przez ewemarkam
Link to post
Share on other sites
  • Gieneq zmienił tytuł na: ESP8266 wyciągnięcie miejsc po przecinku

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.