int LDR_A = A0;
int LED[] = {6,5,3};
int temppin = 2;
int R = 4;
int G = 7;
int B = 8;
int button[] = {9, 13, 11, 12};
#include "DHT.h"
#define DHTTYPE DHT22
DHT dht(temppin, DHTTYPE);
#include <Servo.h>
Servo myservo;
int pos = 0;
int knopA_vorig = 0;
int knopB = 0;
int knopB_vorig = 0;
int knopC_vorig = 0;
int knopD_vorig = 0;
int RGB = 0;
float temp2 = 0;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
for (int i = 0; i < 3; i++){
pinMode(LED[i], OUTPUT);
}
dht.begin();
pinMode(R, OUTPUT);
pinMode(G, OUTPUT);
pinMode(B, OUTPUT);
for (int k=0; k < 4; k++){
pinMode(button[k], INPUT);
}
myservo.attach(10);
}
void loop() {
// put your main code here, to run repeatedly:
int analogValue = analogRead(LDR_A);
int led_voltage = map(analogValue, 8, 1016, 0, 255);
if(knopA_vorig == 0){
for (int i = 0; i < 3; i++){
analogWrite(LED[i], led_voltage);
}
}
knopB = digitalRead(button[1]);
//Serial.println(knopB);
if(knopB == 1 && knopB_vorig == 0){
RGB += 1;
}
knopB_vorig = knopB;
ventilator();
//kamerlichten
if(digitalRead(button[0])){
if(knopA_vorig == 0){
for (int i = 0; i < 3; i++){
digitalWrite(LED[i], LOW);}
knopA_vorig = 1;}
else{
for (int i = 0; i < 3; i++){
digitalWrite(LED[i], HIGH);
}
knopA_vorig = 0;
}
}
//Gordijn
if (digitalRead(button[2])){
if (knopC_vorig == 0){
pos = 180;
knopC_vorig = 1;}
else{
pos = 0;
knopC_vorig = 0;
}
}
myservo.write(pos);
delay(20);
//Noodmodus
if(digitalRead(button[3])){
myservo.write(180);
digitalWrite(R, HIGH);
digitalWrite(G, LOW);
digitalWrite(B, LOW);
for (int i = 0; i < 3; i++){
digitalWrite(LED[i], HIGH);
}
delay(200);
digitalWrite(R, LOW);
for (int i = 0; i < 3; i++){
digitalWrite(LED[i], LOW);
}
delay(200);
}
}
void ventilator(){
float temp = dht.readTemperature();
//Serial.println(temp);
temp = constrain(temp, 20, 35);
if(temp != temp2){
RGB = map(temp, 20, 35, 0, 3);
}
switch(RGB%4){
case 0:
digitalWrite(R, LOW);
digitalWrite(G, LOW);
digitalWrite(B, LOW);
break;
case 1:
digitalWrite(R, LOW);
digitalWrite(G, HIGH);
digitalWrite(B, LOW);
break;
case 2:
digitalWrite(R, LOW);
digitalWrite(G, LOW);
digitalWrite(B, HIGH);
break;
case 3:
digitalWrite(R, HIGH);
digitalWrite(G, LOW);
digitalWrite(B, LOW);
}
temp2 = temp;
//Serial.println(temp2);
}