@Suyano
Новичок

Как убрать плавающую точку в значении температуры с датчика в Ардуино?

Добрый вечер!

Есть код, преобразующий аналоговое значение с термистора в сопротивление и далее в температуру.
reading_temp = analogRead(A0); // Write thermistor data to variable
    // Convert Data to Resistance Thermistor
    reading_temp = (1023 / reading_temp) - 1;
    reading_temp = SERIESRESISTOR / reading_temp;
    // Convert Resistance to Temperature
    temp_data = reading_temp / THERMISTORNOMINAL; // (R/Ro) -> Data / Nominal Thermistor (10k)
    temp_data = log(temp_data); // ln(R/Ro) Logarifm
    temp_data /= BCOEFFICIENT; // 1/B * ln(R/Ro)
    temp_data += 1.0 / (TEMPERATURENOMINAL + 273.15); // + (1/To)
    temp_data = 1.0 / temp_data; // Inverting
    temp_data -= 273.15; // Converting to Temp *C

В некоторый промежуток времени мне необходимо отослать температуру на другой модуль по UART шине. Для этого я буду использовать sprintf() и далее Serial.println().
sprintf не поддерживает числа с плавающей точкой, а применять String я не хочу из-за плохих слухов о нем (вроде как портит чип).
Вопрос: как возможно убрать плавающую точку из температуры, чтобы к примеру температура +26.7 отправлялась как +26?
  • Вопрос задан
  • 2223 просмотра
Пригласить эксперта
Ответы на вопрос 3
@kalapanga
Бред и про sprintf() и про String.
А нужно скорее всего просто
Serial.println(1.23456, 0) выводит "1"
0 - число выводимых знаков после запятой.
Ответ написан
@vanyamba-electronics
float x = 4.567;
int z = (int) x;            // z == 4

#include <math.h>
z = (int) roundf(x);        // z == 5
Ответ написан
@CHolfield
конвертируй число с плавающей запятой в массив байт и передавай последовательно с помощью Serial.write(). На той стороне собирай и конвертируй обратно. Вот тип данных для конвертации:

union cvt {
float val;
unsigned char b[4];
} x;

На отправителе:
x.val = 22.2;

x.b - здесь будет массив байт для передачи

На принимающем наоборот, присваивай x.b считывай x.val как число
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы