09-02-2022, 13:17
(08-02-2022, 19:27)kaczakat napisał(a): A skąd masz tę funkcję pow? Jak jest z biblioteki SHT85.h to daj do niej linka/podaj autora.Wielkie dzięki. POMOGŁO!!!!
W sumie nieważne, domyślam się że to zwykle potęgowanie, a nie funkcja z biblioteki. Dla przybliżonego wzoru znalezionego na WIKI to powinno wyglądać tak:
float Tpr(float hum, float temp)
{
return pow(hum/100,1.0/8.0)*(112+(0.9*temp))+0.1*temp-112;
}
Zrobiłem coś takiego:
Kod:
#include "SHT85.h"
#include <LiquidCrystal_I2C.h>
byte znak0[8] = { 0b01100, 0b10010, 0b10010, 0b01100, 0b00000, 0b00000, 0b00000, 0b00000 };
byte znak1[8] = { 0b11111, 0b10000, 0b10000, 0b11111, 0b10000, 0b10000, 0b11111, 0b00010 };
#include <Wire.h>
#define SHT85_ADDRESS 0x44
float pr;
float temp;
float hum;
float Tpr;
LiquidCrystal_I2C lcd(0x27,16,2);
SHT85 sht;
void setup()
{
Serial.begin(9600);
Wire.begin();
sht.begin(SHT85_ADDRESS);
lcd.noBacklight();
lcd.init();
lcd.backlight();
lcd.clear();
}
void loop()
{
sht.read();
temp=sht.getTemperature();
hum=sht.getHumidity();
Tpr= pow(hum/100,1.0/8.0)*(112+(0.9*temp))+0.1*temp-112;
Serial.print(Tpr);
Serial.println(" °C");
Serial.print(temp);
Serial.println(" °C");
Serial.print(hum);
Serial.println(" %");
////////////////////////////////////////////////////////
lcd.createChar(0, znak0);
lcd.createChar(1, znak1);
lcd.setCursor(0,0);
lcd.print("TEMP.POM: ");
lcd.print(sht.getTemperature(),1);
lcd.print((char)0);
lcd.print("C");
/////////////////////////////////////////////////////////
lcd.setCursor(0,1);
lcd.print("HUM: ");
lcd.setCursor(5,1);
lcd.print(sht.getHumidity(),0);
lcd.print("%");
////////////////////////////////////
lcd.setCursor(10,1);
lcd.print(Tpr);
lcd.print((char)0);
lcd.print("C");
delay(5000);
}
Pozdrawiam wszystkich