Hallo, ich möchte zwei DHT11 Sensoren auslesen und auf einem I²C LCD die Werte dann anzeigen lassen. Der andere Code Teil ist für zwei Feuchtigkeitssensoren die in Verbindung mit einer Pumpe arbeiten. Wenn ich den Code so hochladen möchte wie er jetzt ist bekomme ich folgende Fehlermeldung:
exit status 1
request for member 'begin' in '2', which is of non-class type 'int'
Kann mir jemand erklären was ich ändern muss und wie ich den zweiten DHT11 Sensor einbeziehe?
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
#include <DHT.h>
#define DHTROOM 2
#define DHTTYPE DHT11
int SoilSensor_1=0;
int SoilSensor_2=0;
void setup() {
Serial.begin(9600);
lcd.init();
lcd.backlight();
pinMode(5, OUTPUT);
DHTROOM.begin();
}
void loop() {
SoilSensor_1=analogRead(A0);
Serial.print("Boden-Feuchte-1:");
Serial.println(SoilSensor_1);
SoilSensor_2=analogRead(A1);
Serial.print("Boden-Feuchte-2:");
Serial.println(SoilSensor_2);
Serial.println(SoilSensor_2 + SoilSensor_1 / 2);
lcd.setCursor(0, 0);
lcd.print("Bodenfeuchte:");
lcd.setCursor(0, 1);
lcd.print(SoilSensor_1 + SoilSensor_2 / 2);
if ((SoilSensor_1 + SoilSensor_2 / 2) > 800);
digitalWrite(5, HIGH);
delay(1000);
float Humid_1 = DHTROOM.readHumidity();
float Temp_1 = DHTROOM.readTemperature();
lcd.setCursor(0, 0);
lcd.print("Raumsensor");
lcd.setCursor(0, 1);
lcd.print("Hum.");
lcd.setCursor(5, 1);
lcd.print(Humid_1);
}
vermutlich ist dein begin Aufruf falsch.
Das können wir aber nur sehen wenn du ganz genau beschreibst welche DHT Library du verwendest.
Schneller ist vermutlich du schaust mal in das Beispiel deiner DHT Library, wie dieser begin(????) aufruf wirklich aussehen muss.
weil da ist sowieso mehr falsch.
oben hast du ein DHTROOM 2
das wird dann da unten zu einem
2.begin();
das passt vermutlich gar nicht.
Ich würde da einfach mal mit einem Sensor anfangen und wenn es funktioniert, den Sketch zeigen. Dann fällt es uns einfacher, den auf einen 2. Sensor zu erweitern.
Das wird nicht machen, was Du willst.
Einschalten:
DATEI - VOREINSTELLUNGEN - Ausführliche Ausgabe während [x] Kompilierung
Compiler-Warnungen: ALLE
Und dann schau mal unter DATEI - Beispiele - DHT-sensor-Library - DHTTester.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
#include <DHT.h>
#define DHTROOM 2
#define DHTTYPE DHT11
DHT dht(DHTROOM, DHTTYPE);
int SoilSensor_1=0;
int SoilSensor_2=0;
void setup() {
Serial.begin(9600);
lcd.init();
lcd.backlight();
pinMode(5, OUTPUT);
dht.begin();
}
void loop() {
SoilSensor_1=analogRead(A0);
Serial.print("Boden-Feuchte-1:");
Serial.println(SoilSensor_1);
SoilSensor_2=analogRead(A1);
Serial.print("Boden-Feuchte-2:");
Serial.println(SoilSensor_2);
Serial.println(SoilSensor_2 + SoilSensor_1 / 2);
lcd.setCursor(0, 0);
lcd.print("Bodenfeuchte:");
lcd.setCursor(0, 1);
lcd.print(SoilSensor_1 + SoilSensor_2 / 2);
if ((SoilSensor_1 + SoilSensor_2 / 2) > 800);
digitalWrite(5, HIGH);
delay(1000);
float Humid_1 = dht.readHumidity();
float Temp_1 = dht.readTemperature();
lcd.setCursor(0, 0);
lcd.print("Raumsensor");
lcd.setCursor(0, 1);
lcd.print("Hum.");
lcd.setCursor(5, 1);
lcd.print(Humid_1);
}
Das wäre jetzt mein abgeänderter Code, ich habe den DHT Test Code eingebaut und etwas abgeändert.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht (DHTPIN, DHTTYPE);
int SoilSensor_1=0;
int SoilSensor_2=0;
void setup() {
Serial.begin(9600);
lcd.init();
lcd.backlight();
pinMode(5, OUTPUT);
dht.begin();
}
void loop() {
SoilSensor_1=analogRead(A0);
Serial.print("Boden-Feuchte-1:");
Serial.println(SoilSensor_1);
SoilSensor_2=analogRead(A1);
Serial.print("Boden-Feuchte-2:");
Serial.println(SoilSensor_2);
Serial.println(SoilSensor_2 + SoilSensor_1 / 2);
lcd.setCursor(0, 0);
lcd.print("Bodenfeuchte:");
lcd.setCursor(0, 1);
lcd.print(SoilSensor_1 + SoilSensor_2 / 2);
if ((SoilSensor_1 + SoilSensor_2 / 2) > 800);
digitalWrite(5, HIGH);
delay(3000);
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println(F("Failed to read from DHT sensor!"));
return;
}
float hic = dht.computeHeatIndex(t, h, false);
Serial.print(F("Humidity: "));
Serial.print(h);
Serial.print(F("% Temperature: "));
Serial.print(t);
Serial.print(F("°C "));
}
Na bitte.
Jetzt musste für den 2ten DHT noch einen weiteren PIN festlegen und dann
Den Teil noch einmal rein und für dht einen anderen Namen vergeben.
Und dann im Code das dementsprechend auch verdoppeln...
Ich denk so sollte es gehen:
#include "DHT.h"
const byte DHTPIN1 = 2; // Hier die Pin Nummer eintragen wo der Sensor1 angeschlossen ist
const byte DHTPIN2 = 3; // Hier die Pin Nummer eintragen wo der Sensor2 angeschlossen ist
#define DHTTYPE DHT11 // Hier wird definiert was für ein Sensor DHT11 oder DHT22 !!
DHT dht1(DHTPIN1, DHTTYPE); //Sensor1 einrichten
DHT dht2(DHTPIN2, DHTTYPE); //Sensor2 einrichten
void setup() {
dht1.begin(); // Sensor1 starten
dht2.begin(); // Sensor2 starten
}
void loop()
{
float h1 = dht1.readHumidity(); // Lesen der Luftfeuchtigkeit1 und speichern in die Variable h1
float t1 = dht1.readTemperature(); // Lesen der Temperatur in °C1 und speichern in die Variable t1
float h2 = dht2.readHumidity(); // Lesen der Luftfeuchtigkeit2 und speichern in die Variable h2
float t2 = dht2.readTemperature(); // Lesen der Temperatur in °C2 und speichern in die Variable t2