Phase 2 2021/22
In diesem Buch sind die Teamergebnisse der FST21 in Phase 2 dokumentiert.
Quellcode inkl. Kommentare zur Programmierung des ESP32 über Arduino:
#include <OneWire.h>
#include <DallasTemperature.h>
#include <TM1637Display.h>
//Daten-Pin für den Temperatursensor festlegen
#define temperatureSensorPIN 32
//Daten- und Taktpin des Displays festlegen und Initialisierung des Displays
#define CLK 23
#define DIO 25
TM1637Display display(CLK, DIO);
//Temperatursensor initialisieren
OneWire temperatureSensorWire(temperatureSensorPIN);
DallasTemperature temperatureSensor(&temperatureSensorWire);
//Pin LED WARM
#define WarmLedPin 17
//Pin LED KALT
#define KaltLedPin 18
//Motor Belüftung
#define MotorPin 19
void setup()
{
//Temperatursensor starten
temperatureSensor.begin();
//Helligkeit des Displays einstellen
display.setBrightness(0x0f);
//Seriellen Monitor mit einer Baudrate von 115200 starten
Serial.begin(115200);
//Digitalpin Output
pinMode(17, OUTPUT);
pinMode(18, OUTPUT);
pinMode(19, OUTPUT);
}
void loop()
{
//Temperatur in °C erfassen
temperatureSensor.requestTemperatures();
float tC = temperatureSensor.getTempCByIndex(0);
//Temperatur in °C mit einer Nachkommastelle auf dem Display anzeigen
display.showNumberDec(tC * 10);
//Temperatur in °C ohne Nachkommastelle auf dem Display anzeigen
//display.showNumberDec(tC * 1);
//Temperatur auf dem seriellen Monitor ausgeben
Serial.print(tC);
Serial.println(" °C");
delay(500);
//Kühlung
if (tC >= 30) {
Serial.print("Erhöhte Tempertur, Kühlung aktiviert");
digitalWrite (KaltLedPin, HIGH);
digitalWrite (MotorPin, LOW);
}
else if (tC >= 35) {
Serial.print("TEMPERATUR IM KRITISCHEN BEREICH");
digitalWrite (MotorPin, LOW);
digitalWrite (KaltLedPin, HIGH);
delay(200);
digitalWrite (KaltLedPin, LOW);
delay(200);
}
else {
digitalWrite (KaltLedPin, LOW);
digitalWrite (MotorPin, HIGH);
}
//Heizung
if (tC <= 20) {
Serial.print("Niedrige Temperatur, Heizung aktiviert");
digitalWrite (WarmLedPin, HIGH);
}
else if (tC <= 15) {
Serial.print("Temperatur wird zu kalt");
digitalWrite (WarmLedPin, HIGH);
delay(200);
digitalWrite (WarmLedPin, LOW);
delay(200);
}
else {
digitalWrite (WarmLedPin, LOW);
}
}