Ви не увійшли.
Сторінки 1
Всем добрый день!
Для для вывода в последовательный порт строки содержащей значения переменных питался воспользоваться функцией sprintf.
Но увы ничего не получилось в месте где должны содержаться значения переменных подставляются пробелы оканчивающиеся знаком '?'.
Вроде ничего сложного в сети полно примеров, а не получается. Главное все компилируется без ошибок. Подскажите пожалуйста может кто сталкивался с подобной проблемой?
вот к примеру:
#include <stdio.h>
...
void loop()
{
char buffer[12];
float value = 12.987;
sprintf(buffer, " % 8.3f", value );
Serial.println(buffer);
}
В порт выкидывает: " ?".
Я ожидал увидеть примерно такое: " 12.987"
Имею довольно приличный стаж разработки электронных устройств на базе МК. С ардуино начал работать не давно.
Данную функцию не раз использовал на чистом Си, проблем не было.
Неактивний
тоже мучаюсь с этим делом, ни фига не выходит)), будут сдвиги, пиши
Неактивний
Пишут, что в Aрдуино не реализован sprintf с %f, вроде по соображениям быстродействия - чтобы обойти эту проблему, предлагаю попробовать другой способ вывода float:
#include <stdio.h>
// the setup routine runs once when you press reset:
void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
}
// the loop routine runs over and over again forever:
void loop()
{
char buffer[12];
float value = 12.987;
char str_temp[6];
/* 4 is mininum width, 2 is precision; float value is copied onto str_temp*/
dtostrf(value, 5, 3, str_temp);
sprintf(buffer,"%s F", str_temp);
Serial.println(buffer);
}
Остання редакція Saddamko (2016-11-05 22:29:51)
Неактивний
спасибо! получилось!))))
Неактивний
Сторінки 1