#include <DHT.h>
#include <LiquidCrystal.h>
#include <AccelStepper.h>
#define DHTPIN 13 // Pin, an dem der DHT-Sensor angeschlossen ist
#define DHTTYPE DHT22 // Art des DHT-Sensors, hier DHT11 verwenden
/////TEST//////////////
// Define the stepper motor pins
byte directionPin = 9;
byte stepPin = 10;
int pulseWidthSec = 0.1; // microsecondo
DHT dht(DHTPIN, DHTTYPE);
// Konfiguration des LCD-Displays
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
const int fanPin = 9; // Pin, an dem der Lüfter angeschlossen ist
const int lampPin = 8; // Pin, an dem die Lampe angeschlossen ist
const int buttonPin = 0; // Pin, an dem der Betätigungsknopf angeschlossen ist
void setup() {
//////TEST///////////
pinMode(directionPin, OUTPUT);
pinMode(stepPin, OUTPUT);
/////////////////////
Serial.begin(9600);
Serial.println("Badezimmer Sketch gestartet");
// Initialisierung des DHT-Sensors
dht.begin();
// Initialisierung des LCD-Displays
lcd.begin(16, 2);
// Initialisierung des Lüfter-Pins
pinMode(fanPin, OUTPUT);
// Initialisierung des Lampen-Pins
pinMode(lampPin, OUTPUT);
digitalWrite(lampPin, LOW); // Schalte die Lampe standardmäßig aus
// Initialisierung des Betätigungsknopf-Pins
pinMode(buttonPin, INPUT_PULLUP); // Pull-Up-Widerstand aktivieren
}
void loop() {
// Lesen von Temperatur und Luftfeuchtigkeit
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
// Überprüfen, ob das Lesen erfolgreich war
if (isnan(temperature) || isnan(humidity)) {
Serial.println("Fehler beim Lesen des DHT-Sensors");
return;
}
// Ausgabe von Temperatur und Luftfeuchtigkeit auf dem LCD-Display
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(temperature);
lcd.print(" C");
lcd.setCursor(0, 1);
lcd.print("Luftfeuchte: ");
lcd.print(humidity);
lcd.print("%");
// Ausgabe von Temperatur und Luftfeuchtigkeit auf dem Serial Monitor
Serial.print("Luftfeuchtigkeit: ");
Serial.print(humidity);
Serial.print("%\t");
Serial.print("Temperatur: ");
Serial.print(temperature);
Serial.println("°C");
// Steuerung des Lüfters basierend auf der Luftfeuchtigkeit und dem Zustand der Lampe
if (humidity > 80 || digitalRead(lampPin) == HIGH) {
digitalWrite(fanPin, HIGH); // Einschalten des Lüfters
Serial.println("Lüfter eingeschaltet");
/////TEST////
// Run the stepper motor
digitalWrite(directionPin, HIGH);
digitalWrite(stepPin, HIGH);
delay(pulseWidthSec);
// Serial.println("Run Forwarding");
digitalWrite(stepPin, LOW);
////////////
} else {
digitalWrite(fanPin, LOW); // Ausschalten des Lüfters
Serial.println("Lüfter ausgeschaltet");
}
// Überprüfen, ob der Betätigungsknopf gedrückt wurde, um die Lampe zu steuern
if (digitalRead(buttonPin) == LOW) {
digitalWrite(lampPin, !digitalRead(lampPin)); // Umschalten des Lampenstatus (Ein/Aus)
delay(200); // Entprellung
/////TEST////
// Run the stepper motor
digitalWrite(directionPin, HIGH);
digitalWrite(stepPin, HIGH);
delay(pulseWidthSec);
// Serial.println("Run Forwarding");
digitalWrite(stepPin, LOW);
////////////
}
delay(2000); // Kurze Pause, bevor die Schleife erneut durchlaufen wird
}