День добрый собрал мини метео станцию на трёх датчиках и дисплей на ks108.
вот что загружаю.
всё выводит всё ок, но почему то он градусы считает с погдешность 0.5 например 27.0 или 27.50 нет 27.31, я так понимаю это дело в библиотеке DallasTemperature.h но я заметил закономерность если во время работы отключить и подключить датчик обратно то показывает остаток температуры с сотнями т.е. 27.01 27.51. Как бы сделать чтоб он изначально показывал с сотнями?Код:#include <OneWire.h> #include <DallasTemperature.h> #include <glcd.h> #include "fonts/SystemRus5x7.h" #define ONE_WIRE_BUS 2 #define TEMPERATURE_PRECISION 9 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); DeviceAddress insideThermometer, outsideThermometer, Thermometer; char s[16]; float tempS1; float tempS2; float tempS3; void setup(void) { GLCD.Init(); GLCD.SelectFont(SystemRus); GLCD.print("Термометр v1.0"); Serial.begin(9600); sensors.begin(); if (!sensors.getAddress(insideThermometer, 0)) Serial.println("Unable to find address for Device 0"); if (!sensors.getAddress(outsideThermometer, 1)) Serial.println("Unable to find address for Device 1"); if (!sensors.getAddress(Thermometer, 2)) Serial.println("Unable to find address for Device 2"); sensors.setResolution(insideThermometer, TEMPERATURE_PRECISION); sensors.setResolution(outsideThermometer, TEMPERATURE_PRECISION); sensors.setResolution(Thermometer, TEMPERATURE_PRECISION); } void printAddress(DeviceAddress deviceAddress) { for (uint8_t i = 0; i < 8; i++) { if (deviceAddress[i] < 16); } } void printTemperature(DeviceAddress deviceAddress) { float tempC = sensors.getTempC(deviceAddress); tempS1 = sensors.getTempC(insideThermometer); tempS3 = sensors.getTempC(outsideThermometer); tempS2 = sensors.getTempC(Thermometer); GLCD.CursorTo(0, 2); GLCD.print("Датчик 1="); if (tempS1 == -127.00) { GLCD.CursorTo(10, 2); GLCD.print("Error"); } else { GLCD.CursorTo(10, 2); GLCD.print(tempS1); } GLCD.print("с"); GLCD.CursorTo(0, 3); GLCD.print("Кабинет ="); if (tempS2 == -127.00) { GLCD.CursorTo(10, 3); GLCD.print("Error"); } else { GLCD.CursorTo(10, 3); GLCD.print(tempS2); } GLCD.print("с"); GLCD.CursorTo(0, 4); GLCD.print("Улица ="); if (tempS3 == -127.00) { GLCD.CursorTo(10, 4); GLCD.print("Error"); } else { GLCD.CursorTo(10, 4); GLCD.print(tempS3); } GLCD.print("с"); } void printData(DeviceAddress deviceAddress) { printAddress(deviceAddress); printTemperature(deviceAddress); } void loop(void) { delay(10); sensors.requestTemperatures(); printData(insideThermometer); printData(outsideThermometer); printData(Thermometer); }
![]()


Ответить с цитированием
