// taak 1
// Definieer de pinnen
int ldrPin = A0;
int ledPin1 = 9;
int ledPin2 = 10;
// taak 2
// Definieer pinnen voor RGB LED en temperatuursensor
int tempSensorPin = A2;
int redPin = 3;
int greenPin = 4;
int bluePin = 5;
int fanPin = 6; // Pin die de ventilatorsnelheid regelt
// taak 3
#include <Servo.h>
// Definieer pinnen voor knoppen, LED's, servo en RGB LED
int buttonPinA = 8;
int buttonPinB = 9;
int buttonPinC = 10;
int ledPin1 = 8;
int ledPin2 = 9;
int redPin = 3;
int greenPin = 4;
int bluePin = 5;
int servoPin = ;
// taak 4
void setup() {
// taak 1
// Zet de LED pinnen als uitgang
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
// Begin de seriële communicatie voor debugging
Serial.begin(9600);
// taak 2
// Initialisatie van pinnen
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
pinMode(fanPin, OUTPUT);
// Start de seriële communicatie
Serial.begin(9600);
}
// taak 3
// Zet de LED pinnen als uitgang
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
// Zet de RGB LED pinnen als uitgang
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
// Zet de knop pinnen als ingang
pinMode(buttonPinA, INPUT_PULLUP);
pinMode(buttonPinB, INPUT_PULLUP);
pinMode(buttonPinC, INPUT_PULLUP);
// Initialiseer de servo
myServo.attach(servoPin);
myServo.write(0); // Gordijn gesloten
// Start de seriële communicatie voor debugging (optioneel)
Serial.begin(9600);
}
// Definieer pinnen voor knoppen, LED's, servo en RGB LED
const int buttonPinA = 2;
const int buttonPinB = 3;
const int buttonPinC = 4;
const int ledPin1 = 6;
const int ledPin2 = 7;
const int redPin = 9;
const int greenPin = 10;
const int bluePin = 11;
const int servoPin = 5;
Servo myServo;
// Status variabelen
bool lightsOn = false;
int fanSpeed = 0;
bool curtainOpen = false;
// taak 4
void loop() {
// taak 1
// Lees de waarde van de LDR (tussen 0 en 1023)
int ldrValue = analogRead(ldrPin);
// Converteer de waarde naar een helderheidsniveau (tussen 0 en 255 voor PWM)
int brightness = map(ldrValue, 0, 1023, 0, 255);
// Pas de helderheid van de LED's aan op basis van de LDR waarde
analogWrite(ledPin1, brightness);
analogWrite(ledPin2, brightness);
// Debug: geef de gelezen waarde en de helderheid weer
Serial.print("LDR Value: ");
Serial.print(ldrValue);
Serial.print(" Brightness: ");
Serial.println(brightness);
// Wacht een korte periode om overmatige seriële uitvoer te voorkomen
delay(100);
// taak 2
// Lees de analoge waarde van de temperatuursensor
int sensorValue = analogRead(tempSensorPin);
// Converteer de gelezen waarde naar temperatuur in graden Celsius
float temperature = sensorValue * 0.48828125; // (5 / 1024) * 100
// Debug: geef de temperatuur uit
Serial.print("Temperatuur: ");
Serial.println(temperature);
// Pas de RGB LED-kleur aan op basis van de temperatuur
if (temperature < 25) {
// Comfortabel, LED uit
analogWrite(redPin, 0);
analogWrite(greenPin, 0);
analogWrite(bluePin, 0);
analogWrite(fanPin, 0); // Ventilator uit
} else if (temperature >= 25 && temperature < 30) {
// Laag, groen
analogWrite(redPin, 0);
analogWrite(greenPin, 255);
analogWrite(bluePin, 0);
analogWrite(fanPin, 128); // Lage snelheid
} else if (temperature >= 30 && temperature < 35) {
// Medium, blauw
analogWrite(redPin, 0);
analogWrite(greenPin, 0);
analogWrite(bluePin, 255);
analogWrite(fanPin, 200); // Medium snelheid
} else {
// Hoog, rood
analogWrite(redPin, 255);
analogWrite(greenPin, 0);
analogWrite(bluePin, 0);
analogWrite(fanPin, 255); // Hoge snelheid
}
// Wacht een beetje voordat de loop opnieuw wordt uitgevoerd
delay(1000);
// taak 3
// Lees de status van de knoppen
bool buttonStateA = digitalRead(buttonPinA) == LOW;
bool buttonStateB = digitalRead(buttonPinB) == LOW;
bool buttonStateC = digitalRead(buttonPinC) == LOW;
// Handeling voor knop A: Schakel alle kamerlichten aan/uit
if (buttonStateA) {
lightsOn = !lightsOn;
digitalWrite(ledPin1, lightsOn ? HIGH : LOW);
digitalWrite(ledPin2, lightsOn ? HIGH : LOW);
delay(300); // Debounce
}
// Handeling voor knop B: Pas de ventilatorsnelheid handmatig aan
if (buttonStateB) {
fanSpeed = (fanSpeed + 1) % 4; // Toggle tussen 0, 1, 2, 3
setFanSpeed(fanSpeed);
delay(300); // Debounce
}
// Handeling voor knop C: Open/sluit het raamgordijn
if (buttonStateC) {
curtainOpen = !curtainOpen;
myServo.write(curtainOpen ? 180 : 0);
delay(300); // Debounce
}
void setFanSpeed(int speed) {
switch (speed) {
case 0:
analogWrite(redPin, 0);
analogWrite(greenPin, 0);
analogWrite(bluePin, 0);
break;
case 1:
analogWrite(redPin, 0);
analogWrite(greenPin, 255);
analogWrite(bluePin, 0);
break;
case 2:
analogWrite(redPin, 0);
analogWrite(greenPin, 0);
analogWrite(bluePin, 255);
break;
case 3:
analogWrite(redPin, 255);
analogWrite(greenPin, 0);
analogWrite(bluePin, 0);
break;
}
}
// taak 4
if (digitalWrite(button4) == HIGH);{
myservo.write(180);
serialprintln("open raamgordijn");
for (int i = 0; i < 3; i++) {
digitalWrite(ledpins[i], HIGH);
delay(500);
digitalWrite(ledpins[i], LOW);
delay(500);
}
for (int i = 0; i < 5; i++) {
analogWrite(pin_red, 255);
delay(500);
analogWrite(pin_red, 0);
delay(500);
}
}
}