Kurs Arduino #9: Obsługa czujnika Dallas DS18B20 1-Wire

Pierwszy program: odczyt temperatury

Okej, to jak już się przebiliśmy przez cały proces konfiguracji to możemy wyświetlić nasze dane:

9.1

Najpierw dodajemy do naszego programu biblioteki obsługujące 1-Wire, czujniki Dallas i wyświetlacz LCD. Następnie przypisujemy alias pinowi odpowiedzialnemu za transmisję 1-Wire. Teraz wywołujemy tą transmisję oraz „chęć komunikacji” z czujnikiem DS18B20. Następnie wpisujemy konfigurację pinów dla LCD oraz konfigurację znaku stopnia. W setup() tworzymy znak stopnia z konfiguracji, rozpoczynamy transmisję z czujnika oraz ustawiamy rozdzielczość ekranu 20×4. W pętli głównej programu na samym początku powinniśmy zażądać odczytu danych z czujnika. Teraz przygotowujemy nasz ekran do działania. W tym celu czyścimy go pozbywając się śmieciowych danych z linii transmisyjnej. Ustawiamy kursor w pozycji 0,0, czyli lewy górny róg. Następnie przechodzimy do wyświetlenia wartości temperatury. Wyświetlamy napis temperatura, a następnie przy pomocy funkcji sensors.getTempCByIndex(0) wyświetlamy naszą temperaturę. Na sam koniec dodajemy znak stopnia oraz literkę C. Pętlę główną zamyka opóźnienie 50ms, aby odczyt był w miarę szybko aktualizowany.
Po zastosowaniu takiego programu powinniśmy otrzymać efekt jak poniżej:

DSCN1408

Gdy już nasz program spełnia podstawową funkcję to teraz możemy pomyśleć nad lekkim rozbudowaniem naszego programu.

Przykład realizacji alarmu:

Skoro nasza funkcja sensors.getTempCByIndex(0) podaje wartość dziesiętną naszej temperatury to na jej podstawie możemy stworzyć prosty alarm. Założenie. Jeżeli wartość temperatury będzie równa lub większa 30 stopni Celsjusza to włącz alarm w przeciwnym wypadku nie włączaj.

9.2

Program jest ten sam co wcześniej, tylko dopisaliśmy funkcję warunkową, która będzie uruchamiać alarm. Jak widać nie jest to trudny program. Po wgraniu programu powinniśmy otrzymać taki efekt:

(radzę lekko przyciszyć ze względu na buzzer ;) )