2 Stk DHT 22 am Atmega?

OP #7047163
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.
OP
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
Gast
Holger Z. schrieb:
> Ich habe folgendes :

Was ist an den Hinweisen nicht zu verstehen?

----------------------------------------------
Wichtige Regeln - erst lesen, dann posten!
...................
   Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
----------------------------------------------
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.
OP
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

Eine eigene Frage? Dieser Thread ist über 4 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.