Формат данных

Тема в разделе "Arduino & Shields", создана пользователем turob, 27 сен 2015.

  1. turob

    turob Нуб

    Привет Всем!
    Помогите кто может пожалуйста,неполучается преобразовать данные с датчика в 'экспоненциальную форму'
    Плата Arduino Uno считываю с аналогового входа данные сдатчика через "Serial.println"
    Тип данных <Float>выводит 0,55 а мне нужно выводить в формате 5.5Е-1.
     
  2. Unixon

    Unixon Оракул Модератор

    Используйте sprintf(), потом выводите полученную строку.
     
  3. turob

    turob Нуб

    Cпасибо за отклик.
    Я раньше работал на Delphi и выводил вот так(ledPT1.Text:=FloatToStrF(power(10,ArrInfoPLC.valword/4096*10-5.5),ffExponent,2,1);

    На С++ неработал.Сейчас у меня получается вот такой скейтч:


    float datchik1;
    // 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() {
    // read the input on analog pin 0:
    float sensorValue = analogRead(A0) * 5 / 1023;
    datchik1 = pow(10, (sensorValue - 5.5));

    // print out the value you read:
    Serial.print("\n datchik1=");
    Serial.println(datchik1);
    delay(1000);

    И не как не могу его переформатировать. Если Вам не трудно не смогли бы показать не большой пример.
    Спасибо!
     
  4. geher

    geher Гуру

    Для плавающей точки sprintf не прокатит. Реализация ее для AVR такого просто не предусматривает.
    Наверное придется самостоятельно разбирать число на части и составлять из них строку.
    Как вариант, найти исходники полноценного printf и сделать из них свою функцию.
     
  5. turob

    turob Нуб

    Спасибо! Попробую.