Thermo-/Hydrometer mir LED Warnung wenn Grenzwertüberschreitung. Aber wie?

Hallo liebe Leser,

Ich habe es schon geschafft meinen DHT11 und das LCD zum laufen zu bekommen.

Jetzt wollte ich noch eine LED Anzeige haben die mir anzeigt wenn Werte über oder unterschritten werden.

Also eine Art Tor zwischen 15°C-25°C und 45%-65% Luftfeuchte.

nun brauche ich jemanden der gewillt ist einen Anfänger zu helfen.

Das ist bis jetzt mein Sketch

#include <dht.h>
#include <LiquidCrystal.h>

LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

dht DHT;

#define DHT11_PIN 2

void setup(){
  lcd.begin(16, 2);
  pinMode(3,OUTPUT);
  float DHT.humidity = x
}

void loop()
{
  int chk = DHT.read11(DHT11_PIN);
  lcd.setCursor(0,0); 
  lcd.print("Temp: ");
  lcd.print(DHT.temperature);
  lcd.print((char)223);
  lcd.print("C");
  lcd.setCursor(0,1);
  lcd.print("Luft: ");
  lcd.print(DHT.humidity);
  lcd.print("%");
  delay(2000);
}


  if(x > 45,00){
    digitalWrite(3,LOW)
}

Fließkommazahlen werden mit . geschrieben. Gewöhne Dir glei zu Anfang sprechende Variablennamen an.

if(x > 45.00)

Gruß Tommy

Alles klar. Danke für den Tipp.

Das nächste Problem ist das er mir ich der Zeilefloat DHT.humidity = x Diesen Fehler ausgibt:

expected initializer before ' . ' token

Welche DHT-Lib vrwendest Du? (Link bitte). Ich habe Zweifel, dass die dht.h heißt.
Bei der Lib sind Beispiele danei. Orientiere Dich an diesen Beispielen, dann passt Dein Code auch zur Lib.

Gruß Tommy

Tommy56:
Welche DHT-Lib vrwendest Du? (Link bitte).
Gruß Tommy

http://www.circuitbasics.com/how-to-set-up-the-dht11-humidity-sensor-on-an-arduino/

Hier hab ich die her. Ich bin froh eine Lib gefunden zu haben die funktioniert.

Die ursprüngliche Quelle ist hier, da sind die Beispiele dabei.
Das was Du geschrieben hast ist eine URL. Das was ich hier geschrieben habe, ist eine URL.

Einen Link kann man anklicken, eine URL nicht. Das ist besonders für Benutzer mit mobilen Geräten ungünstig.

Gruß Tommy

float DHT.humidity = x

  1. fehlt ein Semikolon ;
  2. weist du der Methode DHT.humidity ein x zu, tausche x mit DHT.humidity, aber lass dir mal Bessere Variablennamen einfallen.

Edit: Variablendeklaration sollte im Header, außerhalb einer Funktion stehen, sonst sind die Variablen nur lokal, also nur innerhalb der Funktion gültig.

Momentan sieht es so aus:

#include <dht.h>
#include <LiquidCrystal.h>

LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

dht DHT;

float x = DHT.humidity()

#define DHT11_PIN 2

void setup(){
  lcd.begin(16, 2);
  pinMode(3,OUTPUT);
  //int DHT.humidity = x
}

void loop()
{
  int chk = DHT.read11(DHT11_PIN);
  lcd.setCursor(0,0); 
  lcd.print("Temp: ");
  lcd.print(DHT.temperature);
  lcd.print((char)223);
  lcd.print("C");
  lcd.setCursor(0,1);
  lcd.print("Luft: ");
  lcd.print(DHT.humidity);
  lcd.print("%");
  delay(2000);
 
    if (x > 45.00)
{
    digitalWrite(3,LOW)
}
}

Ich versuche sicher den Falschen Wert auszulesen bzw. hab ich absolut keine Ahnung wie ich den Luftfeuchtigkeitswert in einen auswertbaren Wert umzuwandeln.

In der Zeile " float x = DHT.humidity();" gibt er mir immer eine Fehlermeldung egal wie es drehe und wende. :frowning:

Da fehlt immer noch das ;

#include <dht.h>
#include <LiquidCrystal.h>

LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

dht DHT;
 
float x = DHT.humidity();

#define DHT11_PIN 2

void setup(){
  lcd.begin(16, 2);
  pinMode(3,OUTPUT);
  //int DHT.humidity = x
}

void loop()
{
  int chk = DHT.read11(DHT11_PIN);
  lcd.setCursor(0,0); 
  lcd.print("Temp: ");
  lcd.print(DHT.temperature);
  lcd.print((char)223);
  lcd.print("C");
  lcd.setCursor(0,1);
  lcd.print("Luft: ");
  lcd.print(DHT.humidity);
  lcd.print("%");
  delay(2000);
 
    if (x > 45.00)
{
    digitalWrite(3,LOW);
}
}

Hab ich jetzt drin nur leider ändert das Garnichts

Er markiert mir die Zeile “float x = DHT.humidity();” und gibt den Fehler aus.

exit status 1
expression cannot be used as a function

Noxeo:
expression cannot be used as a function

Klar, lass die Klammern bei DHT.humidity() weg, das ist keine Funktion.

wapjoe:
Klar, lass die Klammern bei DHT.humidity() weg, das ist keine Funktion.

Alles klar das war der Fehler. Danke vielmals. Ich musste die float deklaration zwar am ende ganz raus nehmen und für x DHT.humidity einfügen aber jetzt bin ich auf dem richtigen Weg “denke ich” hust