Столкнулся с проблемой ограничения символов во float переменной (я новичок =))
Вот скетч:
Суть такова: считываем значение температуры с датчика 5 раз и вычисляем среднее значение.
Ключевая переменная float tempMiddle. С ней я буду работать и ее надо вывести на дисплей и в Serial-порт
В Serial-порте выглядит так: 23.62
На дисплее LCD 2004 так: 23.620 (почему-то 0 в конце дописывает)
Нужно сделать число 23.6, помогите пожалуйста решить задачу!
Вот скетч:
C++:
#define measureCntMax 5 // Количество необходимых измерений температуры для вычисления среднего значения
#include <OneWire.h> //Библиотека для работы с протоколом 1-Wire
#include <DallasTemperature.h> //Библиотека для работы с датчиком DS18B20
#include <LiquidCrystal_I2C.h> // Библиотека для работы с дисплеем LED 2004
LiquidCrystal_I2C lcd(0x27,20,4); // Инициалируем дисплей
#define ONE_WIRE_BUS 6 //Сигнальный провод DS18B20
OneWire oneWire(ONE_WIRE_BUS); //Создаём объект для работы с библиотекой OneWire
DallasTemperature sensor(&oneWire); //Создаём объект для работы с библиотекой DallasTemperature
float temperature; //Переменная для хранения значения температуры
int measureCnt = 0; //Счетчик произведенных измерений температуры
float tempMiddle = 100; //Для хранения усредненного значения температуры
float tempMiddleCnt = 0; //Хранилище для вычислений усредненного значения
void setup() {
//Датчик температуры
pinMode(ONE_WIRE_BUS, INPUT);
//Дисплей
lcd.init(); // Инициируем работу с LCD дисплеем
lcd.backlight(); // Включаем подсветку LCD дисплея
//Тепература
sensor.begin(); //Инициализация работы датчика DS18B20
sensor.setResolution(12); //Устанавливаем разрешение датчика от 9 до 12 бит
Serial.begin(9600);
}
void loop() {
if(millis() % 1000 == 0) {
//Температура
sensor.requestTemperatures(); //отправляем запрос на измерение температуры
temperature = sensor.getTempCByIndex(0); //считываем данные из регистра датчика и записываем в переменную
measureCnt++;
tempMiddleCnt = tempMiddleCnt + temperature;
if(measureCnt == measureCntMax) {
tempMiddle = tempMiddleCnt/measureCntMax; // Вычисляем среднее значение температуры
measureCnt = 0;
tempMiddleCnt = 0;
}
// выводим температуру в Serial-порт
Serial.print("Усредненное значение температуры C: ");
Serial.println(tempMiddle);
// Вывод на дисплей
lcd.setCursor(0, 0); // Устанавливаем курсор
lcd.print("Temp C: "); // Выводим температуру
lcd.print(tempMiddle);
}
}
Ключевая переменная float tempMiddle. С ней я буду работать и ее надо вывести на дисплей и в Serial-порт
В Serial-порте выглядит так: 23.62
На дисплее LCD 2004 так: 23.620 (почему-то 0 в конце дописывает)
Нужно сделать число 23.6, помогите пожалуйста решить задачу!