Відповісти

Введіть повідомлення і натисніть Надіслати
Параметри

Назад

Огляд теми (нові повідомленні вгорі)

nitrometall
2016-11-06 00:52:52

спасибо! получилось!))))

Saddamko
2016-11-05 22:29:37

Пишут, что в 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);
}
nitrometall
2016-11-03 22:19:34

тоже мучаюсь с этим делом, ни фига не выходит)), будут сдвиги, пиши

AlexPi
2016-10-28 16:54:27

Всем добрый день!
Для для вывода в последовательный порт строки содержащей значения переменных питался воспользоваться функцией sprintf.
Но увы ничего не получилось в месте где должны содержаться значения переменных подставляются пробелы оканчивающиеся знаком '?'.

Вроде ничего сложного в сети полно примеров, а не получается. Главное все компилируется без ошибок. Подскажите пожалуйста может кто сталкивался с подобной проблемой?
вот к примеру:

#include <stdio.h>
...

void loop()
{
   char buffer[12];
   float value = 12.987;
   sprintf(buffer, " % 8.3f", value );
   Serial.println(buffer);
}

В порт выкидывает: "       ?".
Я ожидал увидеть примерно такое: "   12.987"

Имею довольно приличный стаж разработки электронных устройств на базе МК. С ардуино начал работать не давно.
Данную функцию не раз использовал на чистом Си, проблем не было.

Підвал форуму