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.
Holger Z. schrieb: > schaffe es aber nicht den Code für 2 Stk zu erweitern. Wo hängt es denn? Welche Codeschnipsel hast du als Vorlage? Holger Z. schrieb: > Leider habe ich vom DHTxx überhaupt keine Ahnung Datenblatt lesen hilft ;) mfg mf
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 |
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 ----------------------------------------------
Ich weiss net , nen AKW oder Space Shuttle programmieren is nen Witz für mich , aber diesen Codes erweitern wohl zu viel :-(
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.
Siehe Anhang. Das Pin musst du noch an deine hardware anpassen, siehe Kommentar im Quelltext von read_senbsor2.
Sehr herzlichen Dank für Deine Mühe . So ähnlich habe ich auch angefangen. Ich hatte da wohl nen Brett vorm Kopf ... ? ... Jetzt muss ich nur noch mal schaun was mit den DHT los is , bekomme nur NULLEN als Anzeige
Holger Z. schrieb: > Jetzt muss ich nur noch mal schaun was mit den DHT los is , bekomme nur > NULLEN als Anzeige Da fehlt wohl ein externer Pull-Up Widerstand.
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.