INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 1 Bewertungen - 1 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
6 St. DHT22 auslesen geht nicht
01.10.2013, 18:15
Beitrag #1
6 St. DHT22 auslesen geht nicht
Hallo,

nun hänge ich am nächsten Problem meines Projektes.
Ich habe mir 6 St. DHT22 auf einer Platine aufgebaut und diese den Ports A0-A5 auf meinem Mega2560 über 10k-Pullup angeschlossen. Einen einzelnen DHT22 kann ich mit verschiedenen Libs auslesen. Alle Fühler kann ich einzeln betreiben, es liegt also nicht an der Hardware. Im Internet habe ich viele Beispiele studiert, wie man den Code erweitern kann.
Zunächst hier der Code, den ich verwenden möchte, aber nicht klappt:
Code:
#include <Wire.h>
#include <dht.h>

#define DHTTYPE DHT22
#define DHT1PIN A0         // Zur Messung verwendeter Pin
#define DHT2PIN A1         // Zur Messung verwendeter Pin
#define DHT3PIN A2         // Zur Messung verwendeter Pin
#define DHT4PIN A3         // Zur Messung verwendeter Pin
#define DHT5PIN A4         // Zur Messung verwendeter Pin
#define DHT6PIN A5         // Zur Messung verwendeter Pin

dht DHT1; // Initialisieren des DHTs
dht DHT2;
dht DHT3;
dht DHT4;
dht DHT5;
dht DHT6;
//--------------------------------------------------
void setup() {

    Serial.begin(9600);
    Serial.print("6fach-DHT22-Test!");

  dht.begin();

  // Display
  // DHT
Die Zeile mit 'dht DHT1' verstehe ich nicht genau. Wird hier der Verweis von dht(Library) auf die einzelnen Sensoren gesetzt? Der Kompiler bleibt nämlich genau an der Stelle hängen mit der Fehlermeldung 'dht does not name a type'.
Das Library DHT ist vorhanden. Hab ich hier ein falsches Lib? Momentan stehe ich auf'm Schlauch.

Gruß Franz
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
01.10.2013, 19:01
Beitrag #2
RE: 6 St. DHT22 auslesen geht nicht
Schon wieder ich Big Grin

Du hast die DHTs auf analoge Pins gelegt. DHTs sind aber digitale Teile!!!
Also umstecken auf Digitalpins!
Die wire.h brauchst du nicht da du die Teile ja nicht per I2C anbindest.

Grüße Ricardo
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.10.2013, 12:21
Beitrag #3
RE: 6 St. DHT22 auslesen geht nicht
Hallo Ricardo,

richtig, ich habe die Fühler an z.B. A0 angeschlossen. Irgendwo im www hab ich mal gelesen, dass sowas auch geht.
Also, einen Fühler an A0 oder Pin8, beides geht, beide lesen die gleichen Werte aus.
Es handelt sich auch um reelle Werte, da ich so ein 0815-Gerät zum Nachmessen habe.
Wenn ich den o.g. Code nehme und auf z.B. Pin 8 abändere, so hängt der Compiler an der gleichen Stelle mit der gleichen Fehlermeldung. Ich vermute noch stark, dass irgendwas mit der Lib nicht richtig ist und deshalb meine Fehlermeldung kommt. Hast Du noch eine Idee?

Gruß Franz
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.10.2013, 16:29
Beitrag #4
RE: 6 St. DHT22 auslesen geht nicht
Hallo Franz,
Zitat:ich habe die Fühler an z.B. A0 angeschlossen. Irgendwo im www hab ich mal gelesen, dass sowas auch geht.
Dazu sag ich mal entschieden "Jain", siehe fürs schreiben:
http://arduino-for-beginners.blogspot.de...-pins.html
Zitat:All the 6 analog pin can be used as General Purpose Input/Output (GPIO) pins like digital pin using label of A0 to A5. Use the command, pinMode(A0, OUTPUT) to set the analog pin to OUTPUT mode. After the mode is set to OUTPUT, you can use the digitalWrite() functions for these pins.
*** analogRead will not work correctly when set to OUTPUT due to the internal pull-up resistor. You need to use the pinMode to set it back to INPUT before using the analogRead() function.
Und fürs lesen:
http://electronics.stackexchange.com/que...as-digital
Zitat:digitalRead() works on all pins. It will just round the analog value received and present it to you. If analogRead(A0) is greater than or equal to 512, digitalRead(A0) will be 1, else 0.
Technisch kann man wohl über die analogen Pins digital schreiben. Lesen hängt davon ab was die DHTs rausgeben
Ob die Lib das dann auch noch unterstützt ist noch mal eine ganz andere Frage.
Ich benutze im übrigen diese Lib: http://learn.adafruit.com/dht/downloads
Auf digitalen Pins funktioniert die ohne Probleme!

Grüße Ricardo
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.10.2013, 17:34
Beitrag #5
RE: 6 St. DHT22 auslesen geht nicht
Hallo Ricardo,

richtig, die funktionieren mit einem einzelnen Sensor alle wunderbar. Ob jetzt digital oder analoge Pins verwendet werden ist noch festzulegen, weils evtl. nicht betriebssicher ist (...es hat halt gleich funktioniert). Jedenfalls hab ich die Beispiele auf Digitalports ebenfalls ausprobiert. Es liegt nicht an den Pins.
Was habe ich in meinem Beispiel falsch gemacht? Stimmt hier die Zuweisungsstruktur nicht?
Kann ich diese Sensoren generell auch über einen IO-Expander (MCP23017) betreiben, vorausgesetzt ich beschalte diesen richtig?

Gruß Franz
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.10.2013, 20:19 (Dieser Beitrag wurde zuletzt bearbeitet: 02.10.2013 20:24 von rkuehle.)
Beitrag #6
RE: 6 St. DHT22 auslesen geht nicht
Hallo Franz,

so sollte es gehen:

Code:
#include <DHT.h>
#define DHTTYPE DHT22
#define DHT1PIN A0         // Zur Messung verwendeter Pin
#define DHT2PIN A1         // Zur Messung verwendeter Pin
#define DHT3PIN A2         // Zur Messung verwendeter Pin
#define DHT4PIN A3         // Zur Messung verwendeter Pin
#define DHT5PIN A4         // Zur Messung verwendeter Pin
#define DHT6PIN A5         // Zur Messung verwendeter Pin

// Vars für Ausgabewerte
float h1,t1,h2,t2,h3,t3,h4,t4,h5,t5,h6,t6;

// DHT Instanzen aufsetzen
DHT DHT1;
DHT DHT2;
DHT DHT3;
DHT DHT4;
DHT DHT5;
DHT DHT6;

void setup()
{
  Serial.begin(9600);
  // DHT - Instanzen starten
  DHT1.setup(DHT1PIN);
  DHT2.setup(DHT2PIN);
  DHT3.setup(DHT3PIN);
  DHT4.setup(DHT4PIN);
  DHT5.setup(DHT5PIN);
  DHT6.setup(DHT6PIN);
}
void loop()
{
// Zeitspanne für Messung abwarten
  delay(DHT1.getMinimumSamplingPeriod());
  delay(DHT2.getMinimumSamplingPeriod());
  delay(DHT3.getMinimumSamplingPeriod());
  delay(DHT4.getMinimumSamplingPeriod());
  delay(DHT5.getMinimumSamplingPeriod());
  delay(DHT6.getMinimumSamplingPeriod());

  // Werte holen
  h1 = DHT1.getHumidity();
  t1 = DHT1.getTemperature();
  h2 = DHT2.getHumidity();
  t2 = DHT2.getTemperature();
  h3 = DHT3.getHumidity();
  t3 = DHT3.getTemperature();
  h4 = DHT4.getHumidity();
  t4 = DHT4.getTemperature();
  h5 = DHT5.getHumidity();
  t5 = DHT5.getTemperature();
  h6 = DHT6.getHumidity();
  t6 = DHT6.getTemperature();
  // Werte ausgeben
  Serial.print(DHT1.getStatusString());
  Serial.print(" H1: ");
  Serial.print(h1, 1);
  Serial.print("T1: ");
  Serial.println(t1, 1);
  Serial.print(DHT2.getStatusString());
  Serial.print(" H2: ");
  Serial.print(h2, 1);
  Serial.print("T2: ");
  Serial.println(t2, 1);
  Serial.print(DHT3.getStatusString());
  Serial.print(" H3: ");
  Serial.print(h3, 1);
  Serial.print("T3: ");
  Serial.println(t3, 1);
  Serial.print(DHT4.getStatusString());
  Serial.print(" H4: ");
  Serial.print(h4, 1);
  Serial.print("T4: ");
  Serial.println(t4, 1);
  Serial.print(DHT5.getStatusString());
  Serial.print(" H5: ");
  Serial.print(h5, 1);
  Serial.print("T5: ");
  Serial.println(t5, 1);
  Serial.print(DHT6.getStatusString());
  Serial.print(" H6: ");
  Serial.print(h6, 1);
  Serial.print("T6: ");
  Serial.println(t6, 1);
  Serial.println(" ");
}

Hope it helps!

Grüße Ricardo
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.10.2013, 17:41
Beitrag #7
RE: 6 St. DHT22 auslesen geht nicht
Hallo Ricardo,

es hat etwas gedauert, aber ich musste mal übers lange WE in die Berge.
Deinen Code habe ich versucht, leider bricht er beim Compilieren an der Zeile
Code:
DHT DHT1;
ab und bringt folgende Meldung
Code:
no matching function for call to 'DHT::DHT()'
.
Diesen Fehler kann ich nicht genau deuten, aber da stimmt doch irgendwie der Bezug zur Lib nicht, oder?
Wie schon geschrieben, ein Fühler allein funktioniert mit der DHT-Library, die übrigens auch von Adafruit ist, mehrere leider immer noch nicht.
Gibt es eigentlich ein Fehlerverzeichnis für die Arduinos, damit man sich selber weiterhelfen kann?

Gruß Franz
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.10.2013, 18:12
Beitrag #8
RE: 6 St. DHT22 auslesen geht nicht
Moin Franz,

wie war es in den Bergen? Mal richtig erholt und Luft geschnappt? ich hoffe es hat sich gelohnt!
Der Sketch lief bei mir ohne jede Mucke durch den Compiler. Das lässt wieder auf eine "besondere" Lib schließen.
Nimm mal die aus dem Attachment und kopiere den Inhalt nach libraries\DHT.
Zitat:Gibt es eigentlich ein Fehlerverzeichnis für die Arduinos, damit man sich selber weiterhelfen kann?
ich hätte beinahe gesagt ja, das Internet. Aber vielleicht wäre es ja eine gute Idee im Forum so eine Art Fehler/Lösung-DB reinzupacken. Aber dann wäre ja das Forum irgendwie auch wieder umsonst. So lernt man (zumindest "virtuell") wenigstens ein paar nette Menschen kennenSmile

Lass hören ob es geklappt hat.

Grüße Ricardo


Angehängte Datei(en)
.zip  DHT.zip (Größe: 3,55 KB / Downloads: 153)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Mit dem Arduino JSON Webseiten auslesen seb201 3 99 05.12.2016 22:25
Letzter Beitrag: Tommy56
  Arduino lässt sich nicht installieren bergfrei 4 154 20.11.2016 18:34
Letzter Beitrag: bergfrei
  Messchieber auslesen mit nem UNO roadcaptain 8 318 15.11.2016 14:30
Letzter Beitrag: Tommy56
  Arduino Mega 2560 läuft nicht Wolfgang50 6 188 13.11.2016 10:50
Letzter Beitrag: Wolfgang50
  U-blox Neo 6M GPS auslesen Matthias_Arduino 15 888 09.11.2016 16:40
Letzter Beitrag: AvrRobot
  Ardublock übertragt nicht an IDE oder UNO R3 tobi83 5 361 16.10.2016 14:07
Letzter Beitrag: Pit
  Upload funktioniert nicht Levi 5 250 22.09.2016 20:19
Letzter Beitrag: hotsystems
  ESP8266 tuts nicht sowerum 7 396 19.09.2016 21:01
Letzter Beitrag: sowerum
  If-Bedingung funktioniert nicht bei Serial1.write Datatom 6 226 16.09.2016 20:36
Letzter Beitrag: Datatom
  mit Attiny85 Feuchtigkeitssensor auslesen toto1975 17 581 19.08.2016 22:40
Letzter Beitrag: hotsystems

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste