objektorientiertes programmieren

Hallo liebe Community,

bin absoluter Anfänger und habe ein Problem.
ich muss für unser Projekt dieses Programm auf eine objektorientierte Programmierung umprogrammieren und ich weiß nicht wirklich wie ich das anstellen soll, da ich mich damit nicht auskenne. Ich hoffe Ihr könnt mir weiterhelfen.

Vielen Dank schonmal

Beste Grüße
Karl

#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>

int LED = D4;
int Luft = D2;

//DHT22 Sensor
#define DHT22PIN D5
#define DHT22TYPE DHT22

DHT dht22(DHT22PIN, DHT22TYPE);


void setup() {
 // put your setup code here, to run once:

pinMode(LED, OUTPUT);
pinMode(Luft, OUTPUT);
//DHT22 Sensor
dht22.begin();
}

void loop() {
 // put your main code here, to run repeatedly:
  //DHT22 Sensor

 int feuchtigkeit = (int) dht22.readHumidity();
 int temperatur = (int) dht22.readTemperature();

 if (temperatur >= 15 ) 
 digitalWrite(D2,HIGH);
 else
 digitalWrite(D2,LOW);
 
 if (feuchtigkeit >= 70)
 digitalWrite(D4,HIGH);
 else
 digitalWrite(D4,LOW);

}

Wieso fotografierst du das ab? Code kannst du einfach aus der IDE ins Forum kopieren

Wie sollen wir dir helfen, wenn du uns nur Bilder lieferst.
So geht das nicht.

Poste deinen Sketch hier in Code-Tags, Schaltfläche oben links im Editorfenster.

Hi

Warum MUSST Du für EUER Projekt Zeug machen, was Du gar nicht kannst?
Wer, in eurem Team, hat das Sagen und beschlossen, daß Du, Der von der Programmierung keine Ahnung hat, das Programmieren übernehmen soll?

Warum MUSS hier jeder Zweite Zeug Programmieren, was Er gar nicht versteht und auch gar nicht will?

... was habe ich für ein Glück, daß ich mir diesen Kram aus 'Spaß an der Freude' antue ... (Nebenbei: das Forum zähle ich dazu)

MfG

Auch schonmal so: Warum nimmst du unten D2 und D4, wenn du schon davor LED und Luft mit D2 und 4 definiert hast? Das macht hinterher nur Nummern, die in 10 Jahren kein Mensch mehr kapiert.

Mir erschließt sich nicht der Sinn der Anfrage des TO. Liegt hier nicht schon OP vor , denn DHT22 ist doch ein Objekt/Instanz der Klasse DHT oder bin ich auf dem falschen Pfad?

wie würdet ihr das machen? ich hoffe, mir kann da jemand weiterhelfen...

karl12345:
wie würdet ihr das machen? ich hoffe, mir kann da jemand weiterhelfen...

Wurde dir doch schon geschrieben.
Du sollst Code-Tags verwenden. Schaltflächen </> oben Links im Editorfenster.
Das kannst du auch nachträglich machen.

Außerdem solltest Du klar Deine Aufgabenstellung beschreiben, sonst kann das eine wüste Orgie an Vermutungen ergeben.

Die Fragen der anderen Teilnehmer solltest Du auch nicht vergessen. Unsere Hilfe ist nur so gut, wie die Informationen von Deiner Seite.

Gruß mTommy

... soll heißen: Beantworte unsere Fragen.
Mit einem 'Mimimi' wirst Du hier nicht sonderlich weit kommen - die Benutzung der Shift-Taste erhöht zusätzlich das Ansehen, Welches Du von mir bekommst - oder aber auch nicht, nix große Buchstaben, nix Helfen, verstehen? (JA, auch hier drauf möchte ich explizit eine Antwort haben, wer bin ich denn hier ...)

MfG

OOP?

Basteln wir uns ein

"steuere zwei Leds nach Temperatur und Feuchtigkeit Grenzen" Objekt und lassen es laufen.

Ungetestet, ich wollte keinen DHT rauskramen.

#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>

#define DHT22TYPE DHT22

class LedsFuerTempUndFeuchtigkeit {
    uint8_t tempLedPin;
    int16_t tempGrenze;
    uint8_t feuchtLedPin;
    int16_t feuchtGrenze;
    DHT dht22;
  public:
    LedsFuerTempUndFeuchtigkeit(uint8_t tempLedPin_, int16_t tempGrenze_, uint8_t feuchtLedPin_, int16_t feuchtGrenze_, uint8_t dht22Pin_) :
      tempLedPin(tempLedPin_), tempGrenze(tempGrenze_), feuchtLedPin(feuchtLedPin_), feuchtGrenze(feuchtGrenze_), dht22(dht22Pin_, DHT22TYPE)
    {}
    void begin() {
      pinMode(tempLedPin, OUTPUT);
      pinMode(feuchtLedPin, OUTPUT);
      dht22.begin();
    }
    void run() {
      int feuchtigkeit = (int) dht22.readHumidity();
      int temperatur = (int) dht22.readTemperature();
      digitalWrite(tempLedPin, temperatur >= tempGrenze);
      digitalWrite(feuchtLedPin, feuchtigkeit >= feuchtGrenze);
    }
} controller(4, 15, 2, 70, 5);

void setup() {
  controller.begin();
}

void loop() {
  controller.run();
}

Oder noch weiter in Objekte zerlegt

#include <Adafruit_Sensor.h>
#include <DHT.h>

#define DHT22TYPE DHT22

class AnBeiGroesser {
    uint8_t ledPin;
    int16_t grenze;
  public:
    AnBeiGroesser(uint8_t ledPin_, int16_t grenze_) :
      ledPin(ledPin_), grenze(grenze_) {}
    void begin() {
      pinMode(ledPin, OUTPUT);
    }
    void run(int16_t aktuell) {
      digitalWrite(ledPin, aktuell >= grenze);
    }
};

class LedsFuerTempUndFeuchtigkeit {
    AnBeiGroesser temperatur;
    AnBeiGroesser feuchte;
    DHT dht22;
  public:
    LedsFuerTempUndFeuchtigkeit(uint8_t tempLedPin_, int16_t tempGrenze_, uint8_t feuchtLedPin_, int16_t feuchtGrenze_, uint8_t dht22Pin_) :
      temperatur(tempLedPin_, tempGrenze_), feuchte(feuchtLedPin_, feuchtGrenze_), dht22(dht22Pin_, DHT22TYPE)
    {}
    void begin() {
      temperatur.begin();
      feuchte.begin();
      dht22.begin();
    }
    void run() {
      feuchte.run(dht22.readHumidity());
      temperatur.run(dht22.readTemperature());
    }
} controller(4, 15, 2, 70, 5);

void setup() {
  controller.begin();
}

void loop() {
  controller.run();
}

karl12345:
Hallo liebe Community,

bin absoluter Anfänger und habe ein Problem.
ich muss für unser Projekt dieses Programm auf eine objektorientierte Programmierung umprogrammieren und ich weiß nicht wirklich wie ich das anstellen soll, da ich mich damit nicht auskenne. Ich hoffe Ihr könnt mir weiterhelfen.

Vielen Dank schonmal

Beste Grüße
Karl

Geht mir bedingt nicht anders. Aber es gibt Abhilfe!

Tommy56 hat mir ein echt super Buch empfohlen. Einen Haken hat das Ganze allerdings. Man muss schon Lust zu lesen mitbringen, und sollte dicke Arme haben wenn man im Bett noch ein wenig lesen will :wink: (beim Ebook auf meinem kleinen Handy Display bekomme ich einfach Augekrebs).

Gruß SG

Wir haben an einen Wemos d1 mini einen sensor dht22, eine LED und einen kleinen Lüfter angeschlossen. Mit unserem Programm soll über einen Sensor die LED und der Lüfter gesteuert werden. Wenn die Temperatur>=15 dann Lüfter an.
Wenn die Feuchtigkeit>=70 dann die Lampe an
(Lampe steht für ein Fenster, Lampe aus--> Fenster auf/Lampe an --> Fenster zu)
Zudem sollen die Daten vom sensor auf dem Webserver ausgegeben werden.