Nie odczytuje temp. z kilku Ds18b20 - Wersja do druku +- Arduino Polska Forum (https://forum.arduinopolska.pl) +-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino) +--- Dział: Piaskownica (https://forum.arduinopolska.pl/dzial-piaskownica) +--- Wątek: Nie odczytuje temp. z kilku Ds18b20 (/watek-nie-odczytuje-temp-z-kilku-ds18b20) |
Nie odczytuje temp. z kilku Ds18b20 - george1255 - 23-01-2020 Witajcie, Potrzebuje pomocy w dopisaniu kilku linijek kodu. Mam Plytkę NodeMcu v3 z esp8266. Tworzę termometr na 3DS z wyświetlaniem na LCD oraz wysyłaniem do Blynk. Mam już ogarnięte praktycznie wyszystko, tylko kod odczytuje mi 1 czujnik, na pozostalych jest -127. Spowodowane jest to że pewnie nie wyszukuje reszty czujników. Prosiłbym o pomoc w dopisaniu tego kawałka kodu aby odczytywać temp. z 3 czujników. poniżej kod który mam do tej pory Kod: #define BLYNK_PRINT Serial RE: Nie odczytuje temp. z kilku Ds18b20 - Agregacik - 23-01-2020 Zapoznaj się z tym https://forbot.pl/blog/kurs-arduino-ii-termometry-analogowe-lm35-i-cyfrowe-ds18b20-id18414 Tam jest przykład z dwoma czujnikami. Można łatwo go rozbudować do 3. Zauważ, że indeksuje się od 0. Ponadto najpierw pobiera się temperatury z czujników a potem odczytuje. Ty masz odwrotnie. Stwórz sobie podprogram do odczytu temperatur, a odczytaną temperaturę zapisuj do zmiennych globalnych, aby był dostęp do nich w każdym miejscu programu. Najpierw potrenuj z wyświetleniem temperatur na konsoli. RE: Nie odczytuje temp. z kilku Ds18b20 - Robson Kerman - 23-01-2020 A ja dodam o siebie, żeby jednak ograniczać używanie zmiennych globalnych. Lepiej żeby funkcja zwracała odczytaną temperaturę i usuwała zmienne. Nawet wewnątrz funkcji możesz klamerkami ustawiać zasięgi dla skracania ich żywota. A jak już jesteśmy przy oszczędzaniu miejsca, to wiesz że można odczytywać dane z DS bez używania float? //******************************** Zmienne globalne to zło. Float to jeszcze większe zło. RE: Nie odczytuje temp. z kilku Ds18b20 - Agregacik - 24-01-2020 Oczywiście jak mamy dużo zmiennych to trzeba umiejętnie z nich korzystać. W tym przypadku i dodatkowo dla nauki pisania podprogramów można stosować te kilka zmiennych nawet float jako globalne. Tak na początek. Zapewne nie trzeba nawet zapisywać wartości temperatur do zmiennych bo są one w strukturze, którą tworzy biblioteka do czujników. Tego jednak nie analizowałem bo nie miałem potrzeby a i jestem cienki w te klocki. RE: Nie odczytuje temp. z kilku Ds18b20 - george1255 - 24-01-2020 ja jestem całkiem zielony z programowania w innym języku niż podstawy HTML na poziomie szkoły podstawowej. Powyższy kod skleiłem z kilku z tutoriali w internecie, trochę podpowiedział kolega. Przy pomocy kursu podesłanego przez kolegę agregacika napisałem taki kod Kod: #include <LiquidCrystal_I2C.h> Cytat:exit status 1 RE: Nie odczytuje temp. z kilku Ds18b20 - Agregacik - 24-01-2020 Według mnie ze sklejenia tych kodów wyszło "szwarc mydło i powidło" czyli nic. Proponuję zapoznać się z podstawami programowania czyli jak zbudować poprawnie program. Najpierw przez # include dodajemy gotowe biblioteki i możemy zdefiniować np. piny, potem inne magiczne powiązania, które wymagają dołączone biblioteki (proszę się nie śmiać nie jestem specjalistą). definiujemy też zmienne globalne. Potem mamy: void setup() { Tu pomiędzy klamrami wpisujemy to co ma się wykonać RAZ po uruchomieniu mikroprocesora. } Potem mamy: void loop() { Tu pomiędzy "klamrami" piszemy co ma robić procesor w kółko aż do "znudzenia". No chyba, że napotka z jakiejś przyczyny na problem, z którym sobie nie poradzi a właściwie programista nie przewidział czegoś, to się zatrzyma czyli "zawiesi" } To są podstawy, jak pomieszamy i będzie występował kilka razy setup czy loop jak to ma miejsce w Twoim przypadku to będzie kicha, nawet się nie skompiluje. Twoja "polka" to jest zmienna, której nie zadeklarowałeś przed setupem, zresztą inne też nie zadeklarowałeś. Naprawdę jak chcesz napisać jaki taki program to musisz się trochę poduczyć i zrozumieć co robisz. Bez tego nie da się rady pomóc. Może to poczytaj https://plociennik.info/index.php/arduino-wstep oraz inne części kursu, który podałem wcześniej. RE: Nie odczytuje temp. z kilku Ds18b20 - george1255 - 24-01-2020 Kod się kompiluje, łączy i wysyła temperatury do Blynk, jednak nie wyświetla nic na LCD. Kod: #define BLYNK_PRINT Serial Podpowiecie w czym problem? Już ostatnia rzecz mi została do zrobienia i nie zawracam głowy Wrzuciłem na płytkę kod i2c scanner, i powiem Wam że nic nie znajduje... tylko godzina-> //Edit Wszystko działa-ogarnąłem. Temat do zamknięcia Dzięki wszystkim za pomoc |