Задать вопрос
@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?
  • Вопрос задан
  • 2295 просмотров
Подписаться 2 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 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 как число
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы