2 Stk DHT 22 am Atmega?

#7047163
Lesenswert?

Ich möchte gern 2 Stk DHT22 am Atmega8 mit Bascom auslesen .
Leider habe ich vom DHTxx überhaupt keine Ahnung bzw. bekomme das 
Auslesen selber nicht hin.

Ich habe diverse Beispiel Codes für einen DTH22 gefunden , schaffe es 
aber nicht den Code für 2 Stk zu erweitern.

Brauche auch bitte keine guten Ratschläge.
Wenn da jemand etwas parat hat bin sehr dankbar.
#7047180
Lesenswert?

Ich habe folgendes :
1
'######################## DHT-22 Humidity & Temperature Sensor####################
2

3

4
$regfile = "m8def.dat"
5
$crystal = 8000000
6
$baud = 9600
7

8
$hwstack = 64
9
$swstack = 64
10
$framesize = 64
11

12

13
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.2 , Rs = Portd.3
14
Config Lcd = 16 * 2
15
Cursor Off
16
Cls
17

18

19
'#####################################
20

21
Config Pinc.2 = Input
22
Config Timer0 = Timer , Prescale = 8
23

24
'#####################################
25

26
Const Min_time = 70                                         'this has to be changed according to your frequency settings in $crystal
27

28
Dim Count As Byte
29
dim timec as byte
30
dim x as byte
31
dim chksum as byte
32

33
Dim Humidityw As Word
34
Dim Temperaturew As word
35
dim tneg as byte 'indicate if temperature<0
36
Dim Humsens_chksum As Byte
37

38
Dim Humiditys As String * 16
39
Dim Temperatures As String * 16
40

41
Do
42

43
gosub Read_sensor 'takes 3 seconds
44

45
locate 1,1
46
lcd Format(humiditys , "0.0")
47
locate 2,1
48
lcd Format(temperatures , "0.0")
49

50

51
Loop
52

53
End
54

55

56
Read_sensor:
57
 Humidityw = 0
58
 Temperaturew = 0
59
 Humsens_chksum = 0
60
 Wait 3
61
 Count = 1
62

63
Config Pinc.2 = Output : Portc.2 = 0                     ' request data
64
Waitms 20                                                ' wait 20 ms
65
Config Pinc.2 = Input                                    ' wait for data, receive data
66

67
   While Count < 43                                         'collect 42 timings / signals
68

69
      Bitwait Pinc.2 , Set                                  'signal goes high > start timer
70
      Start Timer0
71
      Bitwait Pinc.2 , Reset                                'signal goes low  > stop timer
72
      Stop Timer0
73
      timec=tcnt0
74
      Tcnt0 = 0
75

76
      Select Case Count
77

78
         Case 3 To 18
79
            X = 18 - Count
80
            If timec > Min_time Then Toggle Humidityw.x
81

82
         Case 19 To 34
83
            X = 34 - Count
84
            If timec > Min_time Then Toggle Temperaturew.x
85

86
         Case 34 To 42
87
            X = 42 - Count
88
            If timec > Min_time Then Toggle Humsens_chksum.x
89
            'locate 1,1
90
            'lcd bin(humidityw);" "; bin(Temperaturew)
91
      End Select
92

93
      Incr Count
94

95
  Wend
96

97

98
'############################################################# Calculate Checksum and compare with trasnmitted value
99
Chksum = Low(humidityw) + High(humidityw)
100
Chksum = Chksum + Low(temperaturew)
101
Chksum = Chksum + High(temperaturew)
102

103
If chksum=Humsens_chksum Then
104

105

106
temperatures=""
107
   if temperaturew.15=1 then
108
    temperaturew.15=0
109
    temperatures="-"
110
   endif
111

112
   Humiditys = Str(humidityw)
113
   Temperatures = Temperatures+ Str(temperaturew)
114

115
end if
116

117
return
#7047219
Lesenswert?

Holger Z. schrieb:
> Ich weiss net , nen AKW oder Space Shuttle programmieren is nen Witz für
> mich , aber diesen Codes erweitern wohl zu viel  :-(

Tja, Gen Z, zu allem fähig, zu nichts zu gebrauchen ;-)

Mensch Meier, wenn man wenigstens die einfachsten Grundlagen beherrscht, 
sollt man erkennen, daß eine Funktion namens Read_sensor gibt. Die macht 
den Job. Wenn man einen 2. Sensor lesen will, kopiert man die Funktion 
und ändert das zugehörige Pin. Ist für BASCOM das Einfachste.
#7047317
Lesenswert?

Das ist höchst interessant.

Ich habe 1x einen uralten DHT22 , der schon einen Hau weg hat und nur 
noch sinnige Temperaturen anzeigt , aber Feuchte nur noch 99,9% :-)
Ohne Pull up !

Läuft !

Dann einen nagel neuen , mit 10k Pull up - zeigt nur 0,0 in allen Farben 
?!?

Auf nem Arduino allerdings , so wie er ist , perfekt !
Aber ich will absolut nicht auf Arduino gehen , war ja nur nen Spaß zum 
testen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren