//einfache Klimaanlage
// Pin-Definitionen
const int ntcPin = A0; // Pin für den NTC-Temperatursensor (analoger Eingang)
const int ledPin = 9; // Pin für die LED-Ausgabe
const int potPin = A1; // Pin für das Potentiometer (analoger Eingang)
// Variableninitialisierung
const float R0 = 10000.0; // Nennwiderstand des NTC in Ohm
const float T0 = 25.0; // Nenn-Temperatur des NTC in Grad Celsius
const float B = 3950.0; // Beta-Koeffizient des NTC
const int analogMax = 1023; // Maximale Wert des analogen Eingangs des Potentiometers
int setTemp = 15; // Start-Temperatur für die Klimaanlage
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
//"aktuelle" Temperatur aus dem NTC-Sensor lesen.
int sensorValue = analogRead(ntcPin);
//errechnet den Widerstand aus dem Sensor-Wert
float resistance = R0 * (float)(analogMax - sensorValue) / (float)sensorValue;
//Formel Datenblatt vorgegeben, rechnet die Temperatur aus den Widerstand heraus
float temperature = 1.0 / (1.0 / (T0 + 273.15) + (1.0 / B) * log(resistance / R0)) - 273.15;
// Wert des Potentiometers lesen und die Solltemperatur anpassen
int potValue = analogRead(potPin);
setTemp = map(potValue, 0, analogMax, 15, 30); // Wertebereich für die Solltemperatur: 15°C bis 30°C
// Überprüfen, ob die aktuelle Temperatur die Solltemperatur überschreitet
if (temperature > setTemp) {
digitalWrite(ledPin, HIGH); // Klimaanlage einschalten (LED an)
} else {
digitalWrite(ledPin, LOW); // Klimaanlage ausschalten (LED aus)
}
// Serielle Ausgabe zur Überwachung
Serial.print("Aktuelle Temperatur: ");
Serial.print(temperature);
Serial.print(" °C, Solltemperatur: ");
Serial.print(setTemp);
Serial.println(" °C");
delay(1000); // Kurze Verzögerung zur Stabilisierung
}