Hallo zusammen,
Ich möchte auch mal meine Lösung hier kundgeben:
ich habe den Code von folgender Webseite für den DHT-22 angepasst.
http://avrproject.ru/publ/kak_podkljuchit/rabota_s_datchikom_vlazhnosti_dht11_v_bascom_avr/2-1-0-72
Es funktioniert gut auch das herausnehmen des Sensors und Einsetzen eines neuen stellt kein Problem dar.
Negative Temperaturen sind noch nicht möglich.
mich würde eure Meinung zu den Code mal Interessieren (gibt es Verbesserungsvorschläge, habe ich etwas nicht bedacht....)
Hier ein Auszug aus meinem aktuellen Programm:
Ich möchte auch mal meine Lösung hier kundgeben:
ich habe den Code von folgender Webseite für den DHT-22 angepasst.
http://avrproject.ru/publ/kak_podkljuchit/rabota_s_datchikom_vlazhnosti_dht11_v_bascom_avr/2-1-0-72
Es funktioniert gut auch das herausnehmen des Sensors und Einsetzen eines neuen stellt kein Problem dar.
Negative Temperaturen sind noch nicht möglich.
mich würde eure Meinung zu den Code mal Interessieren (gibt es Verbesserungsvorschläge, habe ich etwas nicht bedacht....)
Hier ein Auszug aus meinem aktuellen Programm:
Code:
......
Dht_put Alias Portk.7
Dht_get Alias Pink.7
Dht_io_set Alias Ddrk.7
Dim Temp_dht22 As String * 5 '12,2°C
Dim Humi_dht22 As String * 4 '23,3 %
Dim Aktuali_zeit_Temperatur as Word
Declare Sub Get_DHT22()
Set Dht_io_set
Set Dht_put
......
Do
.....
if Aktuali_zeit_Temperatur >= 10000 then
Aktuali_zeit_Temperatur =0
Call Get_dht22()
'Call Text(1 , Temp_dht22 +"°C" , Grün , Reset_ja)
'Call Text(2 , Humi_dht22 +"%" , Rot , Reset_ja)
else
Incr Aktuali_zeit_Temperatur
end if
.....
Loop
Sub Get_DHT22()
Local Chksum As Byte
Local Crc As Byte
Local Mybyte As Byte
Local Sensor_data As String * 40
Local Count As Byte
Local T As Word
Local H As Word
Local T_String As String *4
Local H_String As String *4
Local Data_temp As String * 16
Count = 0
Sensor_data = ""
Dht_io_set = 1
Dht_put = 0
Waitms 1
Dht_put = 1
Waitus 20
Dht_io_set = 0
Waitus 40
If Dht_get = 1 Then
Temp_dht22 = "Err1"
Humi_dht22 = "Err1"
Exit Sub
End If
Waitus 80
If Dht_get = 0 Then
Temp_dht22 = "Err2"
Humi_dht22 = "Err2"
Exit Sub
End If
While Dht_get = 1 : Wend
Do
While Dht_get = 0 : Wend
Waitus 30
If Dht_get = 1 Then
Sensor_data = Sensor_data + "1"
While Dht_get = 1 : Wend
Else
Sensor_data = Sensor_data + "0"
End If
Incr Count
Loop Until Count = 40
Dht_io_set = 1
Dht_put = 1
Data_temp = Left(sensor_data , 16)
H = Binval(Data_temp)
H_String =Str (H)
Data_temp = Mid(sensor_data , 17 , 16)
T = Binval(Data_temp)
T_String =Str (T)
Data_temp = Right(sensor_data , 8)
Crc = Binval(Data_temp)
Chksum = Low(H ) + High(H )
Chksum = Chksum + Low(T)
Chksum = Chksum + High(T)
If Chksum = Crc Then
Temp_dht22 = Format(T_String , "#.#")
Humi_dht22 = Format(H_String , "#.#")
Else
Temp_dht22 = "Err3"
Humi_dht22 = "Err3"
End If
End Sub