#include <Servo.h>
const int tempSensorPin = A2; // Pin voor de temperatuursensor
const int led1 = 9; // Eerste kamerlicht LED
const int led2 = 10; // Tweede kamerlicht LED
const int led3 = 11; // Derde kamerlicht LED
const int redPin = 5; // Rood van de RGB LED
const int greenPin = 6; // Groen van de RGB LED
const int bluePin = 7; // Blauw van de RGB LED
const int emergencyButtonPin = 12; // Pin voor de noodknop
const int servoPin = 8; // Pin voor de servo motor
bool emergencyMode = false; // Variabele om de noodmodus bij te houden
unsigned long previousMillis = 0; // Tijdregistratie voor knipperende LED's
bool ledState = false; // Huidige staat van knipperende LED's
bool previousButtonState = HIGH; // Vorige staat van de noodknop
Servo servo; // Servo object
void setup() {
pinMode(tempSensorPin, INPUT);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
pinMode(emergencyButtonPin, INPUT_PULLUP);
servo.attach(servoPin);
servo.write(0);
Serial.begin(9600);
}
void loop() {
// Controleer de status van de noodknop en stuur deze naar de seriële monitor
bool buttonState = digitalRead(emergencyButtonPin) == LOW;
Serial.print("Noodknop Status: ");
Serial.println(buttonState ? "Ingedrukt" : "Niet ingedrukt");
// Schakel de noodmodus in of uit op basis van de knopstatus
if (buttonState != previousButtonState) {
if (buttonState == LOW) {
emergencyMode = !emergencyMode;
if (!emergencyMode) {
servo.write(0);
}
}
delay(200);
}
previousButtonState = buttonState;
if (emergencyMode) {
activateEmergencyMode();
} else {
int tempValue = analogRead(tempSensorPin);
float tempCelsius = (tempValue / 1024.0) * 40.0;
Serial.print("Temperatuur (C): ");
Serial.println(tempCelsius);
controlLights(tempCelsius);
}
delay(1000);
}
void controlLights(float tempCelsius) {
// LED's op basis van de gemeten temperatuur
if (tempCelsius >= 0 && tempCelsius <= 15) {
digitalWrite(led1, HIGH);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
analogWrite(redPin, 0);
analogWrite(greenPin, 0);
analogWrite(bluePin, 255);
} else if (tempCelsius > 15 && tempCelsius <= 25) {
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
digitalWrite(led3, LOW);
analogWrite(redPin, 0);
analogWrite(greenPin, 255);
analogWrite(bluePin, 0);
} else if (tempCelsius > 25 && tempCelsius <= 40) {
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, HIGH);
analogWrite(redPin, 255);
analogWrite(greenPin, 0);
analogWrite(bluePin, 0);
} else {
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
analogWrite(redPin, 0);
analogWrite(greenPin, 0);
analogWrite(bluePin, 0);
}
}
void activateEmergencyMode() {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= 500) {
previousMillis = currentMillis;
ledState = !ledState;
digitalWrite(led1, ledState ? HIGH : LOW);
digitalWrite(led2, ledState ? HIGH : LOW);
digitalWrite(led3, ledState ? HIGH : LOW);
}
analogWrite(redPin, ledState ? 255 : 0);
analogWrite(greenPin, 0);
analogWrite(bluePin, 0);
servo.write(180);
}