#define PIN_BUZZER 8
#define PIN_TEMPSENSOR A0
#define PIN_DEURSENSOR 6
#define PIN_LED 7
#define PIN_RESETKNOP 5
// States
#define DEUR_DICHT 1
#define DEUR_OPEN_OK 2
#define DEUR_OPEN_ALARM 3
#define DEUR_OPEN_MUTE 4
// Functies
void checkDeurSwitch();
float controleerTemperatuurInC(); // Functie geeft iets terug
void checkTemperatuur();
void alarm();
void checkMuteButton();
// Variabelen
float temp;
unsigned long pauze = 7000; // unsigned long = nog langer getal mogelijk dan bij long
unsigned long startmoment;
unsigned long verstrekenTijd;
byte stateFrigo = 1;
void setup() {
Serial.begin(115200);
pinMode(PIN_BUZZER, OUTPUT);
pinMode(PIN_TEMPSENSOR, INPUT);
pinMode(PIN_DEURSENSOR, INPUT);
pinMode(PIN_LED, OUTPUT);
pinMode(PIN_RESETKNOP, INPUT);
}
void loop() {
checkDeurSwitch();
Serial.println(stateFrigo);
switch(stateFrigo) {
case DEUR_DICHT: // 1
// doe niets
break;
case DEUR_OPEN_OK: // 2
checkTemperatuur();
break;
case DEUR_OPEN_ALARM: // 3
checkMuteButton();
alarm();
break;
case DEUR_OPEN_MUTE: // 4
break;
default:
break;
}
}
void checkDeurSwitch(){
if(digitalRead(PIN_DEURSENSOR) == HIGH){ // deur = open
if(stateFrigo != DEUR_OPEN_MUTE){ // !/ is niet gelijk aan // het moet de temperatuur checken
checkTemperatuur();
} else {
stateFrigo = DEUR_DICHT;
delay(5);
}
digitalWrite(PIN_LED, digitalRead(PIN_DEURSENSOR)); // led volgt deur
}
}
void checkTemperatuur(){
temp = controleerTemperatuurInC();
if(temp > 9){
stateFrigo = DEUR_OPEN_ALARM;
} else {
stateFrigo = DEUR_OPEN_OK;
}
}
void checkMuteButton(){
if(digitalRead(PIN_RESETKNOP) == LOW){
stateFrigo = DEUR_OPEN_MUTE;
startmoment = millis();
}
}
void alarm(){
tone(PIN_BUZZER, 1400, 100);
}
float controleerTemperatuurInC(){
// Serial.println("iets");
const float BETA = 3950; // should match the Beta Coefficient of the thermistor
return 1 / (log(1 / (1023. / analogRead(A0) - 1)) / BETA + 1.0 / 298.15) - 273.15;
}