#include <Arduino.h>
#include <HardwareTimer.h>
#include <DHT.h>
HardwareTimer *MyTim = new HardwareTimer{TIM3};
#define TempAnalog PA1
#define ledGreen D10
#define ledRed D11
DHT dht(TempAnalog, DHT22);
volatile bool messungON = 0; // 1 = ON
int tempHOT = 25; // in °C
float temperature = 0;
void messung_isr() {
messungON = 1;
}
void setup() {
// put your setup code here, to run once:
MyTim->setPrescaleFactor(1400);
MyTim->setOverflow(60000); // Ovf = 1 s
MyTim->attachInterrupt(messung_isr);
MyTim->resume();
pinMode(TempAnalog, INPUT_ANALOG);
pinMode(ledGreen, OUTPUT);
pinMode(ledRed, OUTPUT);
Serial.begin(9600);
dht.begin();
}
void loop() {
// put your main code here, to run repeatedly:
if (messungON) {
messungON = false; // Flag zurücksetzen
temperature = dht.readTemperature(); // float number 0.0
}
Serial.printf("Temperatur: %.1f °C\n", temperature);
if (temperature<= tempHOT) {
digitalWrite(ledRed, 0);
digitalWrite(ledGreen, 1);
Serial.print("Ventilator aus\n");
}
else if (temperature>= tempHOT) {
digitalWrite(ledRed, 1);
digitalWrite(ledGreen, 0);
Serial.print("Ventilator ein\n");
}
}