Problem mit millis

@ElEspanol
Danke
Genau das war es!

Habe aber noch eine Frage.
Ist es möglich eine Lüftersteuerung so zu Programmieren?

Lüftersteuerung Garage (Autobatterie 12 Volt + Mini-Solaranlage)

Grundbedingungen für das Einschalten sind:

Spannung größer 12,5 Volt
Spannung kleiner 12,2 Volt Lüfter ausschalten (Hysterese + Batterieschutz)
Luftfeuchte muss außen kleiner wie Luftfeuchte innen sein
Luftfeuchte außen größer wie Luftfeuchte innen Lüfter ausschalten

Schaltbedingungen wenn Grundbedingungen erfüllt sind:

Luftfeuchte innen größer 60% Lüfter ein
Luftfeuchte innen kleiner 55% Lüfter aus (Hysterese)

Temperatur größer 25 °C Lüfter ein
Temperatur kleiner 22°C Lüfter aus (Hysterese)

Volt, % u. Temp sind nur Beispielwerte.

Ja, das geht. Mach dazu aber lieber einen neuen Thread auf, da das bisherige Thema abgeschlossen ist.
Als Temperatur-/Feuchtesensor würde ich den SHT22 nehmen (Achtung 3,3V). Der ist vorkalibriert. Der DHT22/11 hat nach meiner Erfahrung eine ziemliche Streuung und muss kalibriert werden.

Gruß Tommy

Danke
Mache ich
Guten Rutsch

Hallo
Habe doch noch einen kleinen "Fehler" gefunden.

Wenn ich den Sketch das erste mal kompiliere erhalte ich folgende Warnung:
Arduino\libraries\DHT-sensor-library-master\DHT.cpp:11:45: warning: unused parameter 'count' [-Wunused-parameter]

DHT::DHT(uint8_t pin, uint8_t type, uint8_t count) {

kompiliere ich den Sketch nochmal erhalte ich die Warnmeldung nicht mehr.

Das ist normal.

  1. Der Parameter ist unbenutzt. Unschön, aber kein Drama.
  2. Wenn die Quelldatei/Konfiguration nicht verändert wird, wird das vorherige Kompilat weiter benutzt.

Zu 1:
Das unused Attribut verhindert die Meldung.

Danke
Verstehe ich das richtig?
In der Library gibt es einen Parameter der im Sketch nicht verwendet wird und dadurch bekomme ich diese Warnung.

Verstehe ich das richtig?

Ja, der Parameter wird übrigens weder in deinem Sketch, noch in der Library selbst je verwendet.

Kannst also leicht diese Library verbessern, indem du diesen Konstruktor einfach rausschmeisst.

DHT(uint8_t pin, uint8_t type, uint8_t count); // Braucht keiner

Ich denke, der Linker wird den dazugehörigen Code selbst wegoptimieren, so dass sich effektiv auf dem Arduino nichts ändert

Einfach rausschmeissen geht nicht. Da bekomme ich andere Fehler

Hier der Teil um den es geht

DHT.cpp

#include "DHT.h"

#define MIN_INTERVAL 2000

DHT::DHT(uint8_t pin, uint8_t type, uint8_t count) {
  _pin = pin;
  _type = type;
  #ifdef __AVR
    _bit = digitalPinToBitMask(pin);
    _port = digitalPinToPort(pin);
  #endif
  _maxcycles = microsecondsToClockCycles(1000);  // 1 millisecond timeout for
                                                 // reading pulses from DHT sensor.
  // Note that count is now ignored as the DHT reading algorithm adjusts itself
  // basd on the speed of the processor.
}

Wie ich es tun würde:

  1. Fehler korrigieren, und dem Entwickler der Lib mitteilen.
  2. Fehler ignorieren, denn es ist ja ein unbedeutendes Warning.

Zu 1:
Evtl gibts ja geheime Kompatibilitätsgründe für die unbenutzte Variable. Dann behalte sie bei, und teile dem Kompiler mit, dass sie unbenutzt ist.

Die library habe ich von hier:

Bei der Libray war noch DHT_U.cpp und DHT_U.h dabei diese musste ich entfernen da sonnst nichts ging.
Keine Ahnung für was das ist.
Leider sind da einige DHT libs im Umlauf und eine andere die ich habe, hat auch nicht funktioniert.

OK da hast du recht:
In DHT.h müssest du auch Zeile 40 von

  DHT(uint8_t pin, uint8_t type, uint8_t count=6);
ändern auf
  DHT(uint8_t pin, uint8_t type);

und dann den Teil in DHT.cpp ändern

DHT::DHT(uint8_t pin, uint8_t type) {
  _pin = pin;
  _type = type;
  #ifdef __AVR
    _bit = digitalPinToBitMask(pin);
    _port = digitalPinToPort(pin);
  #endif
  _maxcycles = microsecondsToClockCycles(1000);  // 1 millisecond timeout for
                                                 // reading pulses from DHT sensor.
}

Oder den Kommentar beherzigen

// Note that count is now ignored as the DHT reading algorithm adjusts itself
// basd on the speed of the processor.

und die Warnung auch ignorieren.