Arduino sprintf float nie formatuje
Mam ten szkic arduino,
char temperature[10];
float temp = 10.55;
sprintf(temperature,"%f F", temp);
Serial.println(temperature);
Temperatura wyświetla się jako
? F
Jakieś pomysły jak sformatować ten float? To musi być łańcuch znaków.
2 answers
Ze względu na pewne przyczyny wydajności {[2] } nie jest uwzględniony w implementacji Arduino sprintf()
. Lepszym rozwiązaniem byłoby użycie dtostrf()
- przekonwertujesz wartość zmiennoprzecinkową na łańcuch w stylu C, podpis metody wygląda następująco:
char *dtostrf(double val, signed char width, unsigned char prec, char *s)
Użyj tej metody, aby przekonwertować go na ciąg w stylu C, a następnie użyj sprintf, np:
char str_temp[6];
/* 4 is mininum width, 2 is precision; float value is copied onto str_temp*/
dtostrf(temp, 4, 2, str_temp);
sprintf(temperature,"%s F", str_temp);
Możesz zmienić minimalną szerokość i precyzję, aby dopasować zmiennoprzecinkowy, który konwertujesz.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-18 05:25:09
Jak stwierdzono wcześniej wsparcie Float nie jest zawarte w {[2] } Na Arduino.
Klasa String
Arduino posiada własną klasęString .
String value = String(3.14);
Wtedy,
char *result = value.c_str();
String class reference, link powyżej
Konstruuje instancję klasy String. Istnieje wiele wersji, które konstruują łańcuchy z różnych typów danych (tzn. formatują je jako sekwencje znaków), w tym:
- stały ciąg znaków w podwójnych cudzysłowach (tj. tablica znaków)
- pojedynczy stały znak, w pojedynczych cudzysłowach
- kolejna instancja obiektu String
- stała liczba całkowita lub długa liczba całkowita
- stała liczba całkowita lub długa liczba całkowita, przy użyciu określonej bazy
- zmienna integer lub long integer
- zmienna integer lub long integer, używając określonej bazy
- zmiennoprzecinkowy lub podwójny, przy użyciu określonego palca dziesiętnego
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-31 11:08:24