Dziś przedstawię jak wyświetlić informacje z wbudowanego w moduł uruchomieniowy Gotronik, jednego z najpopularniejszych, czujnika DS18B20 na ekranie LCD zgodnym z HD44780.
Czego użyjemy:
- moduł uruchomieniowy Gotronik
- Programator USBasp
- Środowisko programistyczne Eclipse
- Przewody połączeniowe żeńsko – żeńskie
- Biblioteki obsługujące czujnik DS18B20
Czujnik DS18B20 jest jednym z najpopularniejszych czujników temperatury dostępnych na rynku. Podłączenie, jak i obsługa są banalne. Jego zaletą jest możliwość pracy w trybie 1-Wire. Oznacza to, że czujnik może pracować jedynie z podłączoną linią danych i masą – nie potrzebna jest dodatkowa żyła zasilająca. Możliwe jest to dzięki zastosowaniu wbudowanego kondensatora, który ładując się w krótkich odstępach czasu, naprzemiennie z odczytem temperatury, zasila czujnik.
Jeśli chodzi o podłączenie, wystarczy że pin DQ podłączymy np. do pinu PC0. Jak pisałem wcześniej, zasilanie nie jest wymagane.
Biblioteki rozpakujmy do folderu: C:\WinAVR-20100110\avr\include\ds18b20
Kod źródłowy programu jest następujący:
/* * DS18B20.c * * Created on: 3 sie 2015 * Author: Gotronik_1 */ #include <avr/io.h> #include <hd44780/hd44780.c> #include <ds18b20/ds18b20.c> #include <stdlib.h> int main (void){ LCD_Initalize(); char bufor[100]; uint8_t temperatura; while(1){ LCD_GoTo(4,0); LCD_WriteText("DS18B20: "); temperatura=ds18b20_gettemp(); itoa(temperatura, bufor, 10); LCD_GoTo(6,1); LCD_WriteText(bufor); LCD_GoTo(8,1); LCD_WriteData(223); LCD_GoTo(9,1); LCD_WriteText("C"); } }
A oto efekt działania programu:
W innym artykule uruchomiliśmy moduł czujnika temperatury i wilgotności DHT11. Możemy pokusić się o małe porównanie wartości przez nie odczytywanych.
Moim pomysłem było wykorzystanie przycisków, aby przełączać się pomiędzy odczytami z DHT11 i DS18B20.
Użyłem przycisków nr 7 i nr 6, podłączonych do pinów odpowiednio PA7 i PA6. Następnie, użyłem instrukcji switch-case, ze zmienną sterującą, która pozwoliła przełączać się między „ekranami”.
/* * main.c * * Created on: 3 sie 2015 * Author: Gotronik_1 */ #include <avr/io.h> #include <stdlib.h> #include <hd44780/hd44780.c> #include <dht11/dht11.c> #include <ds18b20/ds18b20.c> int main (void){ PORTA = 192; //włączenie rezystorów podciągających dla przycisków uint8_t wybor=0; uint8_t temperatura=0; uint8_t wilgotnosc=0; char bufor[100]; LCD_Initalize(); while(1){ if (!(PINA & 128)){ LCD_Clear(); wybor = 1; } if (!(PINA & 64)) { LCD_Clear(); wybor = 2; } switch(wybor){ case 1: { LCD_GoTo(0,0); LCD_WriteText("Temp:"); temperatura=dht11_gettemperature(); itoa(temperatura,bufor,10); //funkcja zamieniajaca typ integer na char LCD_GoTo(6,0); LCD_WriteText(bufor); LCD_GoTo(8,0); LCD_WriteData(223); //instrukcja wyświetlająca znak stopnia LCD_GoTo(9,0); LCD_WriteText("C"); LCD_GoTo(0,1); LCD_WriteText("Wilg:"); wilgotnosc=dht11_gethumidity(); itoa(wilgotnosc,bufor,10); LCD_GoTo(6,1); LCD_WriteText(bufor); LCD_GoTo(8,1); LCD_WriteText("%"); break; } case 2: { LCD_GoTo(4,0); LCD_WriteText("DS18B20: "); temperatura=ds18b20_gettemp(); itoa(temperatura, bufor, 10); LCD_GoTo(6,1); LCD_WriteText(bufor); LCD_GoTo(8,1); LCD_WriteData(223); LCD_GoTo(9,1); LCD_WriteText("C"); break; } } } }
Jak widać, wszystko działa zgodnie z naszymi oczekiwaniami 🙂
Dodaj komentarz
Musisz się zalogować, aby móc dodać komentarz.