Здравствуйте, захотелось сделать bluetooth метеостанция с выводом на экран значений. Вывести влажность и давление получилось, а с температурой не могу понять. Код (C++): #include <OneWire.h> #include <DallasTemperature.h> #include <Wire.h> #include <BMP085.h> #include <DHT.h> #include <LiquidCrystal_I2C.h> #include <EEPROM.h> #define ONE_WIRE_BUS 4 OneWire oneWire(ONE_WIRE_BUS); LiquidCrystal_I2C lcd(0x3F,16,2); DallasTemperature sensors(&oneWire); DeviceAddress Thermometer1 = { 0x28, 0x15, 0x3A, 0x01, 0x00, 0x00, 0x80, 0x94 }; DeviceAddress Thermometer3 = { 0x28, 0xF3, 0x4C, 0x03, 0x00, 0x00, 0x80, 0xF9 }; BMP085 dps = BMP085(); long Temperature = 0, Pressure = 0, Altitude = 0; DHT dht(8, DHT11); char incomingByte; int x=0; void setup() { lcd.init(); lcd.backlight(); sensors.begin(); sensors.setResolution(Thermometer1, 10); sensors.setResolution(Thermometer3, 10); Wire.begin(); dps.init(MODE_ULTRA_HIGHRES, 21000, true); dht.begin(); Serial.begin(9600); } void printTemperature(DeviceAddress deviceAddress) { float tempC = sensors.getTempC(deviceAddress); Serial.println(tempC,1); } void loop(){ sensors.requestTemperatures(); dps.getPressure(&Pressure); int h = dht.readHumidity(); float t = dht.readTemperature(); if (Serial.available() > 0) { incomingByte = Serial.read(); if(incomingByte == '1') { x=2; } if(incomingByte == '2') { x=1; } if(incomingByte == '3') { x=3; } if(incomingByte == '4') { x=4; } } delay(100); switch (x) { case 1: printTemperature(Thermometer1); break; case 2: printTemperature(Thermometer3); break; case 3: Serial.println(Pressure/133.3,1); break; case 4: Serial.println(h); break; } { lcd.setCursor(0, 0); lcd.print("T1="); lcd.print(??????); lcd.setCursor(0, 1); lcd.print("T2="); lcd.print(???????); lcd.setCursor(9, 0); lcd.print("P="); lcd.print(Pressure/133.3,1); lcd.setCursor(9, 1); lcd.print("H="); lcd.print(h); lcd.print('%'); } }
Как вариант: превратите printTemperature в функцию, пущай возвращает значение температуры Код (C++): float printTemperature(DeviceAddress deviceAddress) { float tempC = sensors.getTempC(deviceAddress); Serial.println(tempC,1); return tempC ; } А далее вызывайте Temperature = printTemperature(Thermometer1);