#include "Arduino.h"
#include "TM1637.h"
//definieren der PINS
#define Fire 6
#define S1 7
#define Horn 8
#define L1 9
#define L2 10
#define L3 11
#define L4 12
#define L5 13
#define Temp A0
//erstellung der Variablen für die Eingänge
bool FireState, S1State, Green, LGreen, Yellow, Orange, Red, Sound;
//erstellung der Variablen für den Hitzesensor und den Schritten
int hitze = 0;
int Step = 0;
//erstellung der Variablen für die Displaypins
const int CLK = 2;
const int DIO = 3;
//erstekkung der Variablen für den Zeitintervall
const unsigned long intervall = 3000;
unsigned long prevmillis, currentmillis;
//zuweisung der Displaypins
TM1637 tm(CLK, DIO);
void setup() {
//Display initialisieren
tm.init();
tm.set(BRIGHT_TYPICAL);
//Ein-/Ausgänge initialisieren
pinMode(Fire, INPUT_PULLUP);
pinMode(S1, INPUT_PULLUP);
pinMode(Horn, OUTPUT);
pinMode(L1, OUTPUT);
pinMode(L2, OUTPUT);
pinMode(L3, OUTPUT);
pinMode(L4, OUTPUT);
pinMode(L5, OUTPUT);
}
void loop() {
//einlesen der Werte für die Variablen
FireState = !digitalRead(Fire);
S1State = !digitalRead(S1);
currentmillis = millis();
//anpassen des analogen Wertebereichs auf den Temperatursensor
hitze = map(analogRead(Temp), 0, 1023, 0, 500); //GN ab 160 LGN ab 180 YL ab 210 OR ab 240 RD ab 270
//von links nach rechts | Zuweisung der einzelnen Stellen
tm.display(0, (hitze / 1000) % 10);
tm.display(1, (hitze / 100) % 10);
tm.display(2, (hitze / 10) % 10);
tm.display(3, hitze % 10);
/* Wenn das Display auch aus sein soll wenn S1 aus ist
if(S1State){
tm.set(BRIGHT_TYPICAL);
hitze = map(analogRead(Temp), 0, 1023, 0, 500); //GN ab 160 LGN ab 180 YL ab 210 OR ab 240 RD ab 270
tm.display(0, (hitze / 1000) % 10);
tm.display(1, (hitze / 100) % 10);
tm.display(2, (hitze / 10) % 10);
tm.display(3, hitze % 10);
}else{
tm.set(0);
hitze = 0;
tm.display(0, (hitze / 1000) % 10);
tm.display(1, (hitze / 100) % 10);
tm.display(2, (hitze / 10) % 10);
tm.display(3, hitze % 10);
}
*/
//zuweisung der werdebereiche der LED's
//grüne LED
if(S1State && hitze >= 160){
Green = true;
}else{
Green = false;
}
//helgrüne LED
if(S1State && hitze >= 180){
LGreen = true;
}else{
LGreen = false;
}
//gelbe LED
if(S1State && hitze >= 210){
Yellow = true;
}else{
Yellow = false;
}
//orangene LED
if(S1State && hitze >= 240){
Orange = true;
}else{
Orange = false;
}
//rote LED
if(S1State && hitze >= 270){
Red = true;
}else{
Red = false;
}
//Timer für Hupe
if(S1State && FireState && (hitze < 160 || hitze > 270)){
//Step 0 reset für Intervall
if(Step == 0){
prevmillis = currentmillis;
Step = 1;
}
//Step 1 für start des Timers
if(Step == 1 && (currentmillis - prevmillis >= intervall)){
Sound = true;
}
}else{
Sound = false;
Step = 0;
}
//zuweisung der Variablen auf die ausgänge
digitalWrite(L1, Green?HIGH:LOW);
digitalWrite(L2, LGreen?HIGH:LOW);
digitalWrite(L3, Yellow?HIGH:LOW);
digitalWrite(L4, Orange?HIGH:LOW);
digitalWrite(L5, Red?HIGH:LOW);
digitalWrite(Horn, Sound?HIGH:LOW);
}