405 lines
11 KiB
Arduino
405 lines
11 KiB
Arduino
#include <Weer.h>
|
|
#include <Kamer.h>
|
|
#include <Verwarming.h>
|
|
#include <Mens.h>
|
|
#include <LiquidCrystal_I2C.h>
|
|
|
|
LiquidCrystal_I2C lcd(0x27, 16, 2);
|
|
|
|
//WEER
|
|
Weer weer = Weer();
|
|
|
|
//KAMERS
|
|
Kamer woonkamer = Kamer(); //nr 1
|
|
Kamer keuken = Kamer(); //nr 2
|
|
Kamer slaapkamer1 = Kamer(); //nr 3
|
|
Kamer slaapkamer2 = Kamer(); //nr 4
|
|
Kamer badkamer = Kamer(); //nr 5
|
|
Kamer zolderkamer = Kamer(); //nr 6
|
|
|
|
//VERWARMINGEN
|
|
Verwarming v_woonkamer = Verwarming(); boolean v_woonkamer_on = false;
|
|
Verwarming v_keuken = Verwarming(); boolean v_keuken_on = false;
|
|
Verwarming v_slaapkamer1 = Verwarming(); boolean v_slaapkamer1_on = false;
|
|
Verwarming v_slaapkamer2 = Verwarming(); boolean v_slaapkamer2_on = false;
|
|
Verwarming v_badkamer = Verwarming(); boolean v_badkamer_on = false;
|
|
Verwarming v_zolderkamer = Verwarming(); boolean v_zolderkamer_on = false;
|
|
|
|
//MENSEN
|
|
Mens michel = Mens();
|
|
Mens annemiek = Mens();
|
|
Mens kenneth = Mens();
|
|
|
|
//TIMER
|
|
int timer = 0;
|
|
|
|
|
|
void setup()
|
|
{
|
|
//WOONKAMER
|
|
woonkamer.setTemp(15);
|
|
woonkamer.setVolume(72);
|
|
woonkamer.setSurfaceArea(45, 20);
|
|
v_woonkamer.setLed(0);
|
|
v_woonkamer.setWattage(2000);
|
|
v_woonkamer.setVolume(woonkamer.getVolume());
|
|
|
|
//KEUKEN
|
|
keuken.setTemp(15);
|
|
keuken.setVolume(18);
|
|
keuken.setSurfaceArea(15, 6);
|
|
v_keuken.setLed(1);
|
|
v_keuken.setWattage(500);
|
|
v_keuken.setVolume(keuken.getVolume());
|
|
|
|
//SLAAPKAMER1
|
|
slaapkamer1.setTemp(15);
|
|
slaapkamer1.setVolume(50);
|
|
slaapkamer1.setSurfaceArea(20, 3);
|
|
v_slaapkamer1.setLed(2);
|
|
v_slaapkamer1.setWattage(500);
|
|
v_slaapkamer1.setVolume(slaapkamer1.getVolume());
|
|
|
|
//SLAAPKAMER2
|
|
slaapkamer2.setTemp(15);
|
|
slaapkamer2.setVolume(30);
|
|
slaapkamer2.setSurfaceArea(15, 3);
|
|
v_slaapkamer2.setLed(3);
|
|
v_slaapkamer2.setWattage(500);
|
|
v_slaapkamer2.setVolume(slaapkamer2.getVolume());
|
|
|
|
//BADKAMER
|
|
badkamer.setTemp(15);
|
|
badkamer.setVolume(30);
|
|
badkamer.setSurfaceArea(15, 2);
|
|
v_badkamer.setLed(4);
|
|
v_badkamer.setWattage(500);
|
|
v_badkamer.setVolume(badkamer.getVolume());
|
|
|
|
//ZOLDERKAMER
|
|
zolderkamer.setTemp(15);
|
|
zolderkamer.setVolume(20);
|
|
zolderkamer.setSurfaceArea(22, 4);
|
|
v_zolderkamer.setLed(5);
|
|
v_zolderkamer.setWattage(500);
|
|
v_zolderkamer.setVolume(zolderkamer.getVolume());
|
|
|
|
|
|
//KENNETH
|
|
int pattern1[80][3] = { {0,4,400}, {410,5,430}, {450,1,510} };
|
|
kenneth.setPattern(pattern1, 80);
|
|
|
|
//MICHEL
|
|
int pattern2[80][3] = { {0,3,350}, {360,5,380}, {390,1,400} };
|
|
michel.setPattern(pattern2, 80);
|
|
|
|
//ANNEMIEK
|
|
int pattern3[80][3] = { {0,3,380}, {390,5,410}, {420,1,600} };
|
|
annemiek.setPattern(pattern3, 80);
|
|
|
|
//SERIELE VERBINDING STARTEN
|
|
Serial.begin(9600);
|
|
Serial.println("\t");
|
|
Serial.println("Serial connection started on 9600 baud");
|
|
Serial.println("\t");
|
|
|
|
//LCD WEERGAVE
|
|
lcd.init();
|
|
lcd.setBacklight(HIGH);
|
|
}
|
|
|
|
void loop()
|
|
{
|
|
|
|
//WEEER
|
|
weer.calcTemp(timer);
|
|
double temp = weer.getTemp();
|
|
|
|
|
|
//DEBUGGING
|
|
Serial.println("\t");
|
|
Serial.print("\t");
|
|
Serial.println(timer);
|
|
Serial.println("----------------------");
|
|
Serial.print("Buiten:\t\t");
|
|
Serial.println(temp,4);
|
|
|
|
|
|
//MENSEN
|
|
int timeToEnter_kenneth[2] = {kenneth.getTimeToEnter(timer)};
|
|
int timeToEnter_michel[2] = {michel.getTimeToEnter(timer)};
|
|
int timeToEnter_annemiek[2] = {annemiek.getTimeToEnter(timer)};
|
|
|
|
int timeToLeave_kenneth[2] = {kenneth.getTimeToLeave(timer)};
|
|
int timeToLeave_michel[2] = {michel.getTimeToLeave(timer)};
|
|
int timeToLeave_annemiek[2] = {annemiek.getTimeToLeave(timer)};
|
|
|
|
int room_enter_kenneth = timeToEnter_kenneth[1];
|
|
int room_enter_annemiek = timeToEnter_annemiek[1];
|
|
int room_enter_michel = timeToEnter_michel[1];
|
|
|
|
int room_leave_kenneth = timeToLeave_kenneth[1];
|
|
int room_leave_annemiek = timeToLeave_annemiek[1];
|
|
int room_leave_michel = timeToLeave_michel[1];
|
|
|
|
int enter_kenneth = timeToEnter_kenneth[0];
|
|
int enter_michel = timeToEnter_michel[0];
|
|
int enter_annemiek = timeToEnter_annemiek[0];
|
|
|
|
int leave_kenneth = timeToLeave_kenneth[0];
|
|
int leave_michel = timeToLeave_michel[0];
|
|
int leave_annemiek = timeToLeave_annemiek[0];
|
|
|
|
|
|
//WOONKAMER
|
|
woonkamer.calcTemp(temp);
|
|
double temp_woonkamer = woonkamer.getTemp();
|
|
|
|
v_woonkamer.setTemp(temp_woonkamer);
|
|
temp_woonkamer = v_woonkamer.getTemp();
|
|
woonkamer.setTemp(temp_woonkamer);
|
|
|
|
double heat_woonkamer = woonkamer.getHeatFlow();
|
|
int toTemp_woonkamer = v_woonkamer.getTimeToTemp(heat_woonkamer, 21);
|
|
|
|
if(room_enter_kenneth == 1 || room_enter_michel == 1 || room_enter_michel == 1){
|
|
v_woonkamer_on = true;
|
|
}
|
|
|
|
if(room_leave_kenneth == 1 || room_leave_michel == 1 || room_leave_michel == 1){
|
|
v_woonkamer_on = false;
|
|
}
|
|
|
|
if(v_woonkamer_on){
|
|
v_woonkamer.keepTemp(21);
|
|
}
|
|
|
|
bool state_woonkamer = v_woonkamer.getState();
|
|
|
|
Serial.print("Woonkamer:\t");
|
|
Serial.println(temp_woonkamer,4);
|
|
Serial.print("Verwarming:\t");
|
|
|
|
if(state_woonkamer){
|
|
Serial.println("On");
|
|
}
|
|
else {
|
|
Serial.println("Off");
|
|
}
|
|
|
|
Serial.print("Tijd tot 21:\t");
|
|
Serial.println(toTemp_woonkamer);
|
|
|
|
|
|
//KEUKEN
|
|
keuken.calcTemp(temp);
|
|
double temp_keuken = keuken.getTemp();
|
|
|
|
v_keuken.setTemp(temp_keuken);
|
|
temp_keuken = v_keuken.getTemp();
|
|
keuken.setTemp(temp_keuken);
|
|
|
|
double heat_keuken = keuken.getHeatFlow();
|
|
int toTemp_keuken = v_keuken.getTimeToTemp(heat_keuken, 21);
|
|
|
|
if(room_enter_kenneth == 1 || room_enter_michel == 1 || room_enter_michel == 1){
|
|
v_keuken_on = true;
|
|
}
|
|
|
|
if(room_leave_kenneth == 1 || room_leave_michel == 1 || room_leave_michel == 1){
|
|
v_keuken_on = false;
|
|
}
|
|
|
|
if(v_keuken_on){
|
|
v_keuken.keepTemp(21);
|
|
}
|
|
|
|
bool state_keuken = v_keuken.getState();
|
|
|
|
Serial.print("Keuken:\t");
|
|
Serial.println(temp_keuken,4);
|
|
Serial.print("Verwarming:\t");
|
|
|
|
if(state_keuken){
|
|
Serial.println("On");
|
|
}
|
|
else {
|
|
Serial.println("Off");
|
|
}
|
|
|
|
Serial.print("Tijd tot 21:\t");
|
|
Serial.println(toTemp_keuken);
|
|
|
|
|
|
//SLAAPKAMER1
|
|
slaapkamer1.calcTemp(temp);
|
|
double temp_slaapkamer1 = slaapkamer1.getTemp();
|
|
|
|
v_slaapkamer1.setTemp(temp_slaapkamer1);
|
|
temp_slaapkamer1 = v_slaapkamer1.getTemp();
|
|
slaapkamer1.setTemp(temp_slaapkamer1);
|
|
|
|
double heat_slaapkamer1 = slaapkamer1.getHeatFlow();
|
|
int toTemp_slaapkamer1 = v_slaapkamer1.getTimeToTemp(heat_slaapkamer1, 20);
|
|
|
|
if(room_enter_kenneth == 1 || room_enter_michel == 1 || room_enter_michel == 1){
|
|
v_slaapkamer1_on = true;
|
|
}
|
|
|
|
if(room_leave_kenneth == 1 || room_leave_michel == 1 || room_leave_michel == 1){
|
|
v_slaapkamer1_on = false;
|
|
}
|
|
|
|
if(v_slaapkamer1_on){
|
|
v_slaapkamer1.keepTemp(20);
|
|
}
|
|
|
|
bool state_slaapkamer1 = v_slaapkamer1.getState();
|
|
|
|
Serial.print("Slaapkamer1:\t");
|
|
Serial.println(temp_slaapkamer1,4);
|
|
Serial.print("Verwarming:\t");
|
|
|
|
if(state_slaapkamer1){
|
|
Serial.println("On");
|
|
}
|
|
else {
|
|
Serial.println("Off");
|
|
}
|
|
|
|
Serial.print("Tijd tot 20:\t");
|
|
Serial.println(toTemp_slaapkamer1);
|
|
|
|
|
|
//SLAAPKAMER1
|
|
slaapkamer2.calcTemp(temp);
|
|
double temp_slaapkamer2 = slaapkamer2.getTemp();
|
|
|
|
v_slaapkamer2.setTemp(temp_slaapkamer2);
|
|
temp_slaapkamer2 = v_slaapkamer2.getTemp();
|
|
slaapkamer2.setTemp(temp_slaapkamer2);
|
|
|
|
double heat_slaapkamer2 = slaapkamer2.getHeatFlow();
|
|
int toTemp_slaapkamer2 = v_slaapkamer2.getTimeToTemp(heat_slaapkamer2, 20);
|
|
|
|
if(room_enter_kenneth == 1 || room_enter_michel == 1 || room_enter_michel == 1){
|
|
v_slaapkamer2_on = true;
|
|
}
|
|
|
|
if(room_leave_kenneth == 1 || room_leave_michel == 1 || room_leave_michel == 1){
|
|
v_slaapkamer2_on = false;
|
|
}
|
|
|
|
if(v_slaapkamer2_on){
|
|
v_slaapkamer2.keepTemp(20);
|
|
}
|
|
|
|
bool state_slaapkamer2 = v_slaapkamer2.getState();
|
|
|
|
Serial.print("Slaapkamer2:\t");
|
|
Serial.println(temp_slaapkamer2,4);
|
|
Serial.print("Verwarming:\t");
|
|
|
|
if(state_slaapkamer2){
|
|
Serial.println("On");
|
|
}
|
|
else {
|
|
Serial.println("Off");
|
|
}
|
|
|
|
Serial.print("Tijd tot 20:\t");
|
|
Serial.println(toTemp_slaapkamer2);
|
|
|
|
|
|
//BADKAMER
|
|
badkamer.calcTemp(temp);
|
|
double temp_badkamer = badkamer.getTemp();
|
|
|
|
v_badkamer.setTemp(temp_badkamer);
|
|
temp_badkamer = v_badkamer.getTemp();
|
|
slaapkamer1.setTemp(temp_slaapkamer1);
|
|
|
|
double heat_badkamer = badkamer.getHeatFlow();
|
|
int toTemp_badkamer = v_badkamer.getTimeToTemp(heat_badkamer, 23);
|
|
|
|
if(room_enter_kenneth == 1 || room_enter_michel == 1 || room_enter_michel == 1){
|
|
v_badkamer_on = true;
|
|
}
|
|
|
|
if(room_leave_kenneth == 1 || room_leave_michel == 1 || room_leave_michel == 1){
|
|
v_badkamer_on = false;
|
|
}
|
|
|
|
if(v_badkamer_on){
|
|
v_slaapkamer1.keepTemp(23);
|
|
}
|
|
|
|
bool state_badkamer = v_badkamer.getState();
|
|
|
|
Serial.print("Badkamer:\t");
|
|
Serial.println(temp_badkamer,4);
|
|
Serial.print("Verwarming:\t");
|
|
|
|
if(state_badkamer){
|
|
Serial.println("On");
|
|
}
|
|
else {
|
|
Serial.println("Off");
|
|
}
|
|
|
|
Serial.print("Tijd tot 23:\t");
|
|
Serial.println(toTemp_badkamer);
|
|
|
|
|
|
//ZOLDERKAMER
|
|
zolderkamer.calcTemp(temp);
|
|
double temp_zolderkamer = zolderkamer.getTemp();
|
|
|
|
v_zolderkamer.setTemp(temp_zolderkamer);
|
|
temp_zolderkamer = v_zolderkamer.getTemp();
|
|
slaapkamer1.setTemp(temp_slaapkamer1);
|
|
|
|
double heat_zolderkamer = zolderkamer.getHeatFlow();
|
|
int toTemp_zolderkamer = v_zolderkamer.getTimeToTemp(heat_zolderkamer, 18);
|
|
|
|
if(room_enter_kenneth == 1 || room_enter_michel == 1 || room_enter_michel == 1){
|
|
v_zolderkamer_on = true;
|
|
}
|
|
|
|
if(room_leave_kenneth == 1 || room_leave_michel == 1 || room_leave_michel == 1){
|
|
v_zolderkamer_on = false;
|
|
}
|
|
|
|
if(v_zolderkamer_on){
|
|
v_slaapkamer1.keepTemp(18);
|
|
}
|
|
|
|
bool state_zolderkamer = v_zolderkamer.getState();
|
|
|
|
Serial.print("Zolderkamer:\t");
|
|
Serial.println(temp_zolderkamer,4);
|
|
Serial.print("Verwarming:\t");
|
|
|
|
if(state_zolderkamer){
|
|
Serial.println("On");
|
|
}
|
|
else {
|
|
Serial.println("Off");
|
|
}
|
|
|
|
Serial.print("Tijd tot 18:\t");
|
|
Serial.println(toTemp_zolderkamer);
|
|
|
|
|
|
//SCHERM
|
|
lcd.setCursor(0,0);
|
|
lcd.print("Timer: ");
|
|
lcd.print(timer);
|
|
lcd.setCursor(0,1);
|
|
lcd.print("Buitentemp: ");
|
|
lcd.print(temp);
|
|
|
|
//TIMER
|
|
++timer;
|
|
delay(1000);
|
|
} |