Supla+Arduino+odczyt_temperatury

P4tryk
Posty: 10
Rejestracja: pn sty 23, 2017 4:28 pm

pn sty 23, 2017 4:40 pm

Witam
Testuję odczyt temperatury z DS18B20 przy pomocy Supla+Arduino. Przykładowa funkcja działa poprawnie gdy pod zmienną t podstawiam wartość odczytaną z DS18B20. Gdy do zmiennej t przypiszę ręcznie wartość - całość nie działa - Supla nie pokazuje temperatury, jedynie trzy kreski. Poniżej przykładowy kod:

float get_temperature(int channelNumber, double last_val) {
float t = -275;
if ( sensors.getDeviceCount() > 0 )
{
sensors.requestTemperatures();
t = sensors.getTempCByIndex(0);
//t = 15.6790;
};
Serial.println(t);
return t;
}

Wydaje mi się że powinno działać, a jednak nie działa. Co robię źle? Czytałem inne wątki i rozumiem że idea jest taka, iż mogę pod zmienną t podstawić wartość odczytaną z całkiem innego czujnika i także powinno być OK.
Awatar użytkownika
pzygmunt
Posty: 8647
Rejestracja: wt sty 19, 2016 9:26 am
Lokalizacja: Paczków
Kontaktowanie:

pn sty 23, 2017 5:03 pm

Podstaw 15.67
Musi nastąpić zmiana temperatury dlatego przy pierwszym odczycie daj np 15.67, a przy drugim 15.68
P4tryk
Posty: 10
Rejestracja: pn sty 23, 2017 4:28 pm

pn lut 13, 2017 4:46 pm

Dziękuję, faktycznie działa.
Jak często jednak powinny odbywać się zmiany temperatury, lub komunikacja z serwerem SuplaDevice.iterate(); ?
Mam tą czynność w pętli z opóźnieniem delay(3000) i znikają mi odczyty (---), a później pojawiają się po jakimś czasie. Czy powodem będzie to opóźnienie, lub przy np. dłuższym braku zmian temperatury serwer traktuje czujnik jak nieobecny ?
Awatar użytkownika
pzygmunt
Posty: 8647
Rejestracja: wt sty 19, 2016 9:26 am
Lokalizacja: Paczków
Kontaktowanie:

wt lut 14, 2017 8:35 am

Nie dawaj opóźnień w pętli.
Jeżeli potrzebujesz wykonywać w pętli coś dodatkowego z opóźnieniem to licz czas i nie zatrzymuj wykonywania.
ODPOWIEDZ

Wróć do „Pomoc”