Как в Arduino форматировать вывод результата?!

stagnez
Offline
Зарегистрирован: 19.05.2013

Добрый день! Подключаю сонар ультразвуковой HC-SR04. Если снимать данные через тип Int до обрезает точность, выводя целое число сантиметров (но в паспорте обозначена точность 0,3). Вывожу через float, но тут проблема: не фиксирует количество символов в числе (например выводит расстояние 12,59 как только падает ниже 10 появляется третий знак, типа 07,451). Если верить паспорту датчик за 2$ не может мерять с такой точностью. 

Как форматировать в коде вывод результата всегда в формате ##.##?

Спасибо!

stagnez
Offline
Зарегистрирован: 19.05.2013

И да, пользуюсь Arduino MEGA2560, для прошивки - Arduino 1.0.3. 

maksim
Offline
Зарегистрирован: 12.02.2012

В каком коде??? Куда вывод??? 

"Уважаемые товарищи ученые, у меня в подвале стук. Объясните, пожалуйста, причину этого стука"

Geronimo
Offline
Зарегистрирован: 06.05.2013

stagnez пишет:

Добрый день! Подключаю сонар ультразвуковой HC-SR04. Если снимать данные через тип Int до обрезает точность, выводя целое число сантиметров (но в паспорте обозначена точность 0,3). Вывожу через float, но тут проблема: не фиксирует количество символов в числе (например выводит расстояние 12,59 как только падает ниже 10 появляется третий знак, типа 07,451). Если верить паспорту датчик за 2$ не может мерять с такой точностью. 

Как форматировать в коде вывод результата всегда в формате ##.##?

Спасибо!

char* c = ftoa(input);
char cout[5];

int len = strlen(c);
int dot;
for(dot=0;dot<len;dot++)
{
  if(c[dot]=='.') break;
}

  for(int i = 0;i<dot+2;i++)
 { 
   cout[i] = c[i];
 }
Serial.println(cout);

 

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Ну и код.. Слова только неприличные крутятся в голове. Удачи!

maksim
Offline
Зарегистрирован: 12.02.2012

Вы бы описание print() почитали...

float input = 123.45;
Serial.println(input);

всегда после точки будет 2 знака даже меньше 10.