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.