Добрый вечер! столкнулся с такой проблемой: есть переменная типа float. Ее значение нужно перевести в строку, соединить со строкой "S0_" и отправить в порт. То есть в порт должно отправиться, например: "S0_25.15". Как сделать преобразования float числа в строку?
Код (Text): float num = 15.25; char* msg; void setup() { Serial.begin(9600); sprintf(msg, "S0_%d", num); Serial.println(msg); } void loop() { } Проверяйте!
Код (Text): Я сделал так: Код: int a = 125; String b; b = String(a); А полностью код не можете привести?
Тут и так, по сути, уже весь код написан. Но только уж, чтобы все откомпилировалось: Код (Text): String s; int a; void setup() { a = 25; Serial.begin(9600); } void loop() { s = "S0_"+String(a); Serial.println(s); delay(100); }
У вас же тип float, а не int в вопросе! Тогда уж так: Код (Text): String s; float a; void setup() { a = 25.77; Serial.begin(9600); } void loop() { s = "S0_"+String(a); Serial.println(s); delay(100); }
Всем привет. Пытаюсь сделать преобразование из строки в число следующим образом: Код (Text): float hum = ((float)DHT11.humidity, 2); float temp = ((float)DHT11.temperature, 2); String result = String(hum) + "," + String(temp); Serial.print(result); На выходе получаю строку: Датчик работает корректно, в чём проблема? Заранее спасибо!
float hum = ((float)DHT11.humidity, 2); Вообще странная конструкция, не понятно что собираетесь сделать. Какой тип у членов класса .temperature и .humidity в библиотеке? Если float, то достаточно такого вывода Serial.print(DHT11.humidity, 2); Serial.print("," /t); Serial.println(DHT11.temperature, 2); если int с фиксированной точкой, скажем в 1 знак после запятой, то Serial.print(float(DHT11.humidity)/10, 1); Serial.print("," /t); Serial.println(float(DHT11.temperature)/10, 1);
Проблема в том, что контрукция float hum = ((float)DHT11.humidity, 2); никак не выполняет то, что задумано, а просто присваивает двойку (результат вычисления выражения ((float)DHT11.humidity, 2)), поскольку результатом выполнения оператора ',' (запятая) является последнее выражение в списке. Если я правильно понял, то задумано присваивание DHT11.humidity (кстати, какой у него тип?) переменной float, чтобы значение было с двумя знаками после запятой. Если предположить, что DHT11.humidity - это строка, которая char* (исхожу из фразы "преобразование из строки в число"), то можно так. Код (Text): Serial.print(String(DHT11.humidity).toFloat,2); Serial.print(","); Serial.print(String(DHT11.temperature).toFloat,2); Если же это String, то все еще проще: Код (Text): Serial.print(DHT11.humidity.toFloat,2); Serial.print(","); Serial.print(DHT11.temperature.toFloat,2); Если необходимо округлить до второго знака значение, хранимое во float, то float hum=round(DHT11.humidity.toFloat*100)/100 (исхожу из того, что DHT11.humidity - это String). Естественно в силу особенностей обработки типа float может получиться не точно два знака после запятой, но число будет приближено к необходимому, а окончательная шлифовка картинки должна осуществляться при выводе.
Привет Ребята ! Уже 3 дня бьюсь над обработкой данных из буфера ! не могу правильно посчитать данные из за данных в виде Hex , а надо в Dec. скажите как переконвертировать ? и потом уже спокойно делать арифметику if (RxBuffer[0] == 0x83 && RxBuffer[1] == 0xF1 && RxBuffer[2] == 0x13 && RxBuffer[3] == 0x41 && RxBuffer[4] == 0x07) { s = String(RxBuffer[5] , DEC); Serial.println(""); Serial.print(s); Long = s.toInt() * 0,78125 - 100; // Long = (RxBuffer[5]);//* 0,78125 - 100 ; // Long = (Long, DEC) * 0,78125 - 100; // Long = Long / 128; RxBuffer[5] = 0; Serial.println(""); Serial.print("Long ");
В буфере (RxBuffer[5]) данные приходят в Hex. Вот эти 2 стречки мне не удаются ни как .. Что не правильно делаю ? s = String(RxBuffer[5] , DEC); и Long = s.toInt() * 0,78125 - 100; особенно s.toInt().
а можно пример таких "данных в виде Нех"? что именно там может лежать в RxBuffer[5],RxBuffer[6] и т.д.? или данные это значение ячейки RxBuffer[5] в виде числа?