Könnte jmd bitte das Programm vom DHT22 hochladen?
Im letzten Forum gab es ein verständliches, kurzes.
Ich weiß leider nicht mehr von wem dieses war.
Danke!
Ich habe zwar einen funktionierenden Code, der ist allerdings unverständlich.
Alles anzeigen
Ich habe zwar einen funktionierenden Code, der ist allerdings unverständlich.
Im letzten Forum gab es ein verständliches, kurzes.
Ich weiß leider nicht mehr von wem dieses war.
Danke!
Ich habe zwar einen funktionierenden Code, der ist allerdings unverständlich.
Quellcode
- 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