Skocz do zawartości

ESP8266 wyciągnięcie miejsc po przecinku


Pomocna odpowiedź

Napisano

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);

 

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

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