Skocz do zawartości

ESP8266 wyciągnięcie miejsc po przecinku


ewemarkam

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 do komentarza
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

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 do komentarza
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 do komentarza
Share on other sites

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

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.