[url=https://www.schematheek.net/index.php?p=upload/weergeven&id=2834][img]http://upload.schematheek.net/thumbs/2834.jpg[/img][/url]
De DHT11 Lowcost Temperature & Humidity sensor van Arduino is een veel gebruikte temperatuur en vochtigheids sensor die niet prijzig is.
Om deze aan de praat te krijgen kun je het beste een analoge poort gebruiken.
Onderstaande code werkt perfect op een 18F4620.
Wil je de code op een andere IC gebruiken pas dan even de poort aan in de [b]Symbol DHT11poort = LATA.5[/b].
Dim DataIn As Byte 'hi pulse from sensor Dim Temp As Word Dim Hum As Word Dim ChkSum As Byte Dim Index As Byte Symbol DHT11poort = LATA.5 DelayMS 500 Clear Cls Print At 1,2,"DHT11 Sensor" DelayMS 3000 Cls While 1 = 1 Temp=0:Hum = 0:ChkSum=0 TRISA.5 = 0 'portb o/p DHT11poort=1 'make high DelayMS 50 'wait for a while DHT11poort=0:DelayMS 180 'send 18ms low DHT11poort=1:DelayUS 30 'send 30us hi DataIn = PulsIn DHT11poort,1 'wait for hi If DataIn < 33 Then Cls Print At 1,1, "DataIn = ",Dec DataIn ' if < 80us loop Print At 2,1, "Sensor not ready" ' if < 80us loop GoTo SNR EndIf For Index = 15 To 0 Step -1 DataIn = PulsIn DHT11poort,High 'recieve pulses from sensor If DataIn > 18 Then SetBit Hum,Index Next Index For Index = 15 To 0 Step -1 DataIn = PulsIn DHT11poort,High 'recieve pulses from sensor If DataIn > 18 Then SetBit Temp,Index Next Index For Index = 7 To 0 Step -1 DataIn = PulsIn DHT11poort,High If DataIn > 18 Then SetBit ChkSum,Index Next Index Cls Print At 3,1,"Check Sum = ",Dec ChkSum Print At 4,1,"H:",Dec Hum.HighByte," %" Print At 4,10,"T:",Dec Temp.HighByte,0,"C" If ChkSum <> (Temp.HighByte + Hum.HighByte) Then Cls Print At 3,1,"Check Sum Error!" EndIf SNR: DelayMS 1000 Wend
Ingestuurd door: pascalbianca