Wpis z mikrobloga

Mireczki, mam problem, którego nie mogę za nic rozwiązać.
Na arduino składam system, którego jedną z funkcjonalności ma być odczyt temperatury z czujnika (na razie DHT11) i wyświetlenie na wyświetlaczu.
Wywołuję odczyt, wrzucam wynik do zmiennej >temperatura< typu float, później dane zawarte w tej zmiennej wyświetlam na wyświetlaczu. Wszystko działa.
Problem pojawia się kiedy chcę, żeby w przypadku błędu wyświetlić "err" zamiast danych z czujnika. W tym celu po odczycie dałem ifa, który sprawdza, czy w zmiennej >temperatura< jest liczba i jeśli jest, nic nie robi, a jeśli nie, ma zamienić tą zmienną na String i wpisać do niej tekst "err". To nie chce działać i problem jest na pewno przy operacji zamiany tej zmiennej, bo w ifa wykrywającego liczbę wrzuciłem linijkę, która ma wyświetlić "błąd" na terminalu i rzeczywiście wyświetla (więc dobrze wykrywa liczbę), ale zamiast wrzucić do zmiennej >temperatura< tekst "err", zostaje tam "nan" i tak też pokazuje wyświetlacz.
Macie jakiś pomysł? Jak byście zrealizowali zamianę float na string i wrzucenie do niej tekstu? Ja w żaden sposób nie mogę sobie poradzić. Załączam kawałek programu.

float wilgotnosc = dht.readHumidity();
float temperatura = dht.readTemperature();
if (isnan(temperatura) & isnan(wilgotnosc))
{
Serial.println("blad");
String(temperatura) = "err";
String(wilgotnosc) = "err";
}

#arduino #programowanie #majsterkowanie #elektronika
  • 23
  • Odpowiedz
  • 0
@pawel1410 oczywiście.
Zależy w jakim formacie czujnik podaje odczyt, ale zwykle jest to jakaś wartość którą możesz przechowywać jako int.
Ja kiedyś do tego celu wykorzystywałem dzielenie modulo.
Niestety nie pamiętam tego już dokładnie, musiałbym pogrzebać.

Ale też możesz władowac się na mine bo biblioteki do arduino często domyślnie zwracają wartość w
  • Odpowiedz
@Tymian: Hmm. To musiałbym rozgrzebać bibliotekę do tego czujnika i zobaczyć, czy da się z niej wyciągnąć jakieś bardziej surowe dane.
Swoją drogą zrobiłem sobie eksperyment i równocześnie zacząłem wypisywać z niego temperaturę we float i int. Okazało się, że temperatura float 22,1 pojawia się w int jako 22 a float 22,9 też jako int 22 xD
Albo ja nie umiem z tego korzystać, albo do dupy z taką biblioteką.
  • Odpowiedz