Čidlo teploty a vlhkostí SHT31-D

jankop
Příspěvky: 1029
Registrován: 06 zář 2017, 20:04
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: Čidlo teploty a vlhkostí SHT31-D

Příspěvek od jankop » 03 úno 2021, 18:54

Ale ja potřebuji float 20.2 ;)
Mám kovid a asi mi to zatemňuje mozek.
Proč to neuděláš, jak se to dělá normálně?

Kód: Vybrat vše

float test = 12.444;
void setup() {}

void loop() {
  Serial.begin(115200);
  Serial.println();
  Serial.println(test, 1);
}

BigSandy
Příspěvky: 219
Registrován: 23 zář 2017, 07:09
Reputation: 0

Re: Čidlo teploty a vlhkostí SHT31-D

Příspěvek od BigSandy » 03 úno 2021, 19:08

Protože to nepotřebuji jenom odesilat.
Ono když budu chtit třeba sepnout rele, když bute teplota od - do tak ?

jankop
Příspěvky: 1029
Registrován: 06 zář 2017, 20:04
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: Čidlo teploty a vlhkostí SHT31-D

Příspěvek od jankop » 03 úno 2021, 19:22

Tak porovnáš

Kód: Vybrat vše

if (teplota >1.5&&teplota<2.3){sepni rele}
Dej mi konkrétní příklad, ve kterém ti to vadí.

BigSandy
Příspěvky: 219
Registrován: 23 zář 2017, 07:09
Reputation: 0

Re: Čidlo teploty a vlhkostí SHT31-D

Příspěvek od BigSandy » 03 úno 2021, 19:37

Ono se to přes se.port vubec odesilat nebude.
Pojede to na ESP8266 a data se budou odesilat do raspi přes POST a take vypisovat na displey což by ale převedene jako string nemělo vadit.

jankop
Příspěvky: 1029
Registrován: 06 zář 2017, 20:04
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: Čidlo teploty a vlhkostí SHT31-D

Příspěvek od jankop » 03 úno 2021, 19:40

Já nemluvím o sériovém portu, já chtěl po tobě konkrétní příklad kódu, kde ti to vadí. Ty jsi to nečetl? Mám pocit, že hledáš problémy, kde nejsou. A když to budeš odesílat postem, tak to stejně budeš konvertovat do stringu.
Tady taky odesílám zaokrouhlenej float

Kód: Vybrat vše

String StringToSend = "GET /?" + String(guid) + "=" + String(temperature, FloatRounding) + "&humV=" + String(humidity, FloatRounding) + " HTTP/1.1\r\n" +
                        "Host: " + host + "\r\n" +
                        "Connection: close\r\n\r\n";

ondraN
Příspěvky: 932
Registrován: 08 srp 2019, 20:01
Reputation: 0

Re: Čidlo teploty a vlhkostí SHT31-D

Příspěvek od ondraN » 03 úno 2021, 20:19

Já bych viděl problém v tom zaokrouhlení. Pokud omezíš počet míst formátem, tak se vlastně provede trunc (2,25 zobrazí jako 2,2). Pokud uděláš jenom round, zaokrouhluje se na celé číslo. Proto, když chceš zaokrouhlit třeba třetí desetinné místo, musíš to vynásobit tisíci, zaokrouhlit a zase vydělit tisíci.
vadit to může třeba tady

Kód: Vybrat vše

temp=2.29;	//tady jako zmerim
if (temp>=2.3){
...}else{
...}
první část if se provede až po dosažení 2.3, ale pokud budu zaokrouhlovat na jedno des. místo, provede se už při 2.25

jankop
Příspěvky: 1029
Registrován: 06 zář 2017, 20:04
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: Čidlo teploty a vlhkostí SHT31-D

Příspěvek od jankop » 03 úno 2021, 20:49

Řekni mi, proč by měl pro komparace zaokrouhlovat. Pracuji s float a výstupy zaokrouhlím. Tohle zaokrouhluje správně

Kód: Vybrat vše

float test = 12.46;
void setup() {
  Serial.begin(115200);
  Serial.println();
  Serial.println(test, 1);
  Serial.println(String(test, 1));
}
void loop() {

}
A pro displej nepochybně funguje funkce display.print(teplota,1)
Tvrdím, že neexistuje důvod, proč za běhu programu float zaokrouhlovat. S takovou mu ten projekt vydrží opravdu na dlouhou dobu, když bude řešit problémy, které neexistují.

BigSandy
Příspěvky: 219
Registrován: 23 zář 2017, 07:09
Reputation: 0

Re: Čidlo teploty a vlhkostí SHT31-D

Příspěvek od BigSandy » 04 úno 2021, 08:14

No a když budu chtit to čidlo kalibrovat za pomoci funkce map()
Přece jen lepe se pracuje s hodnotou na jedno desetine čislo.

jankop
Příspěvky: 1029
Registrován: 06 zář 2017, 20:04
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: Čidlo teploty a vlhkostí SHT31-D

Příspěvek od jankop » 04 úno 2021, 10:50

Funkce map() neslouží ke kalibraci, ale změně škály a zároveň je to docela problematická funkce. Pokud máš referenční měřidlo, se kterým chceš kalibrovat, tak ti stejně stačí úprava směrnice a offsetu přímky. Funkce map() je celočíselná, tak bys stejně musel vstupy normalizovat.

BigSandy
Příspěvky: 219
Registrován: 23 zář 2017, 07:09
Reputation: 0

Re: Čidlo teploty a vlhkostí SHT31-D

Příspěvek od BigSandy » 04 úno 2021, 13:34

jankop píše:
04 úno 2021, 10:50
Pokud máš referenční měřidlo, se kterým chceš kalibrovat, tak ti stejně stačí úprava směrnice a offsetu přímky.
Mužeš prosím bliže upřesnít. Mame v praci kvalitní infra teploměr. Ja myslel že tu teplotu budu nasobit 10 a dam do map().

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 4 hosti