Project Embedded C

Dependencies:   DS1307 EthernetInterface Servo TextLCD WebSocketClient mbed-rtos mbed

Committer:
RubenHendriks
Date:
Sat Jan 03 22:50:38 2015 +0000
Revision:
3:565a5c8cc347
Parent:
2:d30df08dd179
Version 3.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
RubenHendriks 1:00c0039f4309 1 //Include de nodigige library
RubenHendriks 0:f8f8433058d6 2 #include "mbed.h"
RubenHendriks 0:f8f8433058d6 3 #include "TextLCD.h"
RubenHendriks 0:f8f8433058d6 4 #include "Servo.h"
RubenHendriks 0:f8f8433058d6 5 #include "ds1307.h"
RubenHendriks 0:f8f8433058d6 6 #include <time.h>
RubenHendriks 0:f8f8433058d6 7 #include "EthernetInterface.h"
RubenHendriks 0:f8f8433058d6 8 #include "Websocket.h"
RubenHendriks 0:f8f8433058d6 9
RubenHendriks 1:00c0039f4309 10 //Defineer de ingangen en uitgangen
RubenHendriks 0:f8f8433058d6 11 DigitalOut myled(LED1);
RubenHendriks 0:f8f8433058d6 12 AnalogIn LM35_1(p15);
RubenHendriks 0:f8f8433058d6 13 AnalogIn LM35_2(p16);
RubenHendriks 0:f8f8433058d6 14 AnalogIn LM35_3(p17);
RubenHendriks 0:f8f8433058d6 15 AnalogIn LM35_4(p18);
RubenHendriks 0:f8f8433058d6 16 AnalogIn Potmeter(p19);
RubenHendriks 0:f8f8433058d6 17 Servo myservo(p24);
RubenHendriks 0:f8f8433058d6 18 TextLCD lcd(p12,p11,p8,p7,p6,p5);
RubenHendriks 0:f8f8433058d6 19 DigitalOut Relais(p13);
RubenHendriks 0:f8f8433058d6 20 PwmOut b (p21);
RubenHendriks 0:f8f8433058d6 21 PwmOut g (p22);
RubenHendriks 0:f8f8433058d6 22 PwmOut r (p23);
RubenHendriks 0:f8f8433058d6 23 DigitalIn SW_1(p30);
RubenHendriks 0:f8f8433058d6 24 DigitalIn SW_2(p29);
RubenHendriks 0:f8f8433058d6 25 DigitalIn SW_3(p28);
RubenHendriks 0:f8f8433058d6 26 DigitalIn SW_4(p27);
RubenHendriks 0:f8f8433058d6 27 DS1307 my1307(p9,p10);
RubenHendriks 0:f8f8433058d6 28
RubenHendriks 1:00c0039f4309 29 //Maak globale variable aan
RubenHendriks 1:00c0039f4309 30 float duty_red,duty_green; //Bevat de duty cycle van de RBG led
RubenHendriks 1:00c0039f4309 31 float LMTemp_1,LMTemp_2,LMTemp_3,LMTemp_4; //Bevat de berekende temperatuur van de temp senor
RubenHendriks 1:00c0039f4309 32 int menu = 0; //Bevat de waarde van het huidige menu
RubenHendriks 1:00c0039f4309 33 float instelliving = 20; //Standaart instelling voor de gevraagde living temperatuur
RubenHendriks 1:00c0039f4309 34 float instelkeuken = 20; //Standaart instelling voor de gevraagde keuken temperatuur
RubenHendriks 1:00c0039f4309 35 float instelslaap = 20; //Standaart instelling voor de gevraagde slaapkamer temperatuur
RubenHendriks 1:00c0039f4309 36 int sec,min,uur,dag,datum,maand,jaar; //Bevat de huidige tijd en datum
RubenHendriks 1:00c0039f4309 37 int startsec = 0; //Standaard instelling voor de startijd (seconden)
RubenHendriks 1:00c0039f4309 38 int startmin = 0; //Standaard instelling voor de startijd (minuten)
RubenHendriks 1:00c0039f4309 39 int startuur = 7; //Standaard instelling voor de startijd (uren)
RubenHendriks 1:00c0039f4309 40 int stopsec = 0; //Standaard instelling voor de stoptijd (seconden)
RubenHendriks 1:00c0039f4309 41 int stopmin = 0; //Standaard instelling voor de stoptijd (minuten)
RubenHendriks 1:00c0039f4309 42 int stopuur = 23; //Standaard instelling voor de stoptijd (uren)
RubenHendriks 1:00c0039f4309 43 int timerwijzigen = 0; //Bevat de timerwaarde om in de instellingen van de stop of startijd te wijzigen
RubenHendriks 1:00c0039f4309 44 int flikertimer = 0; //Bevat de waarde van de timer om het tewijzigen deel te laten flikkeren
RubenHendriks 1:00c0039f4309 45 int wijzigmenustart = 0; //Bevat de waarde van welk deel menu dat men wilt wijzigen uur,min,sec (startijd)
RubenHendriks 1:00c0039f4309 46 int wijzigmenustop = 0; //Bevat de waarde van welk deel menu dat men wilt wijzigen uur,min,sec (stoptijd)
RubenHendriks 1:00c0039f4309 47 float stooklijn = 0; //Bevat de huidige waarde van de stooklijn
RubenHendriks 1:00c0039f4309 48 int menubuffer = 0; //Bevat de waarde van het hoofdmenu voordat er automatich naar de menu stooklijn word geprongen
RubenHendriks 1:00c0039f4309 49 int showtimer = 0; //Bevat de waarde van de timer hoe lang stooklijn op het display wordt gezet
RubenHendriks 1:00c0039f4309 50 bool showstooklijn = false; //Wordt true wanneer de stooklijn moet worden weergegeven
RubenHendriks 1:00c0039f4309 51 float hysteresis = 1.5; //Standaart instelling voor de hysteresis
RubenHendriks 1:00c0039f4309 52 bool hysteresisbuffer[3]; //Buffer voor de hysteresis te berekenen 3 ellementen [living,keuken,slaapkamer]
RubenHendriks 1:00c0039f4309 53 float position = 0; //Standaart positie van de servomotor
RubenHendriks 1:00c0039f4309 54 bool aan = true; //Standaart staat de verwarming aan totdat men de stoptijd voorbij komt
RubenHendriks 0:f8f8433058d6 55
RubenHendriks 0:f8f8433058d6 56 //-------------------------------------------------------------------
RubenHendriks 1:00c0039f4309 57 //----Functie voor het bepalen of er moet worden verwarmt of niet----
RubenHendriks 1:00c0039f4309 58 //-------------------------------------------------------------------
RubenHendriks 0:f8f8433058d6 59 void onoff(int status){
RubenHendriks 1:00c0039f4309 60 if (status >= 1){ //Kijken of er ergens warmte wordt gevraagt
RubenHendriks 1:00c0039f4309 61 Relais = 1; //Maak de uitgang van de relais hoog
RubenHendriks 1:00c0039f4309 62 duty_red=duty_red+0.0005; //Verhoog de duty cycle met 0.0005
RubenHendriks 1:00c0039f4309 63 duty_green=duty_green-0.0005; //Verlaag de duty cycle met 0.0005
RubenHendriks 1:00c0039f4309 64 if (duty_red >= 1) (duty_red = 1); //Wanneer de dutcycle gelijk is aan 1 maak deze dan altijd 1 zodat de rode led constand oplicht
RubenHendriks 1:00c0039f4309 65 if (duty_green <= 0) (duty_green = 0); //Wanneer de dutcycle gelijk is aan 0 maak deze dan altijd 0 zodat de groene led constand gedooft is
RubenHendriks 1:00c0039f4309 66 r.write(duty_red); //Schrijf de dutcycle van de rode led weg naar de pwm uitgang van de rode led
RubenHendriks 1:00c0039f4309 67 g.write(duty_green); //Schrijf de dutcycle van de groen led weg naar de pwm uitgang van de groen led
RubenHendriks 0:f8f8433058d6 68 }
RubenHendriks 1:00c0039f4309 69 else { //Wanneer er geen warmte wordt gevraagt...
RubenHendriks 1:00c0039f4309 70 Relais = 0; //Maak de uitgang van de relais laag
RubenHendriks 1:00c0039f4309 71 duty_red=duty_red-0.0005; //Verlaag de duty cycle met 0.0005
RubenHendriks 1:00c0039f4309 72 duty_green=duty_green+0.0005; //Verhoog de duty cycle met 0.0005
RubenHendriks 1:00c0039f4309 73 if (duty_red <= 0) (duty_red = 0); //Wanneer de dutcycle gelijk is aan 0 maak deze dan altijd 0 zodat de rode led constand gedooft is
RubenHendriks 1:00c0039f4309 74 if (duty_green >=1) (duty_green = 1); //Wanneer de dutcycle gelijk is aan 1 maak deze dan altijd 1 zodat de groen led constand oplicht
RubenHendriks 1:00c0039f4309 75 r.write(duty_red); //Schrijf de dutcycle van de rode led weg naar de pwm uitgang van de rode led
RubenHendriks 1:00c0039f4309 76 g.write(duty_green); //Schrijf de dutcycle van de groen led weg naar de pwm uitgang van de groen led
RubenHendriks 0:f8f8433058d6 77 }
RubenHendriks 0:f8f8433058d6 78 }
RubenHendriks 1:00c0039f4309 79
RubenHendriks 1:00c0039f4309 80 //-----------------------------------------------------------------
RubenHendriks 1:00c0039f4309 81 //------------Functie voor het uitlezen van de LM35----------------
RubenHendriks 0:f8f8433058d6 82 //-----------------------------------------------------------------
RubenHendriks 0:f8f8433058d6 83 float LM35 (int sensor){
RubenHendriks 1:00c0039f4309 84 float waardes[100] = {0}; //Maak een lokale variabele aan van 100 elementen met als waarde 0
RubenHendriks 1:00c0039f4309 85 float gemiddelde = 0; //Maak een lokale variabele aan waarin de 100 elementen bij elkaar zijn opgeteld
RubenHendriks 1:00c0039f4309 86 float temperatuur = 0; //Maak een lokale variabele aan die de juiste temperatuur bevat
RubenHendriks 0:f8f8433058d6 87
RubenHendriks 1:00c0039f4309 88 for(int i=0;i<100;i++){ //Lees de sensor 100 keer uit en zet de waardes in de variabele 'waardes'
RubenHendriks 0:f8f8433058d6 89 if (sensor == 1) (waardes[i] = LM35_1.read());
RubenHendriks 1:00c0039f4309 90 if (sensor == 2) (waardes[i] = LM35_2.read()); //Lees enkel de gevraagde sensor uit
RubenHendriks 0:f8f8433058d6 91 if (sensor == 3) (waardes[i] = LM35_3.read());
RubenHendriks 0:f8f8433058d6 92 if (sensor == 4) (waardes[i] = LM35_4.read());
RubenHendriks 1:00c0039f4309 93 wait(0.00001); //Wacht heel even voor de volgende meting
RubenHendriks 0:f8f8433058d6 94 }
RubenHendriks 0:f8f8433058d6 95
RubenHendriks 1:00c0039f4309 96 for(int i=0;i<100;i++){ //Doorloop alle elemenenten van de variabele 'waardes'
RubenHendriks 1:00c0039f4309 97 gemiddelde = gemiddelde + waardes[i]; //Verhoog de gemidelde waarde met de waarde die in het huidige element staat
RubenHendriks 0:f8f8433058d6 98 }
RubenHendriks 0:f8f8433058d6 99
RubenHendriks 1:00c0039f4309 100 temperatuur = ((gemiddelde /100) * 368.5503686)- 6; //Bereken de temperatuur door het gemidelde te delen door het aantal elementen en te vermenigvuldigen met een constante
RubenHendriks 1:00c0039f4309 101 return temperatuur; //Stuur de waarde van 'temperatuur' terug
RubenHendriks 0:f8f8433058d6 102 }
RubenHendriks 1:00c0039f4309 103
RubenHendriks 1:00c0039f4309 104 //------------------------------------------------------------------
RubenHendriks 1:00c0039f4309 105 //------------------Functie voor de stooklijn-----------------------
RubenHendriks 0:f8f8433058d6 106 //------------------------------------------------------------------
RubenHendriks 1:00c0039f4309 107 float stooklijnfunctie (float huidige){
RubenHendriks 1:00c0039f4309 108 float analoog = Potmeter * 3; //Maak een lokale variabele aan die de waarde van de analoge ingang * 3 bevat
RubenHendriks 1:00c0039f4309 109 if (huidige - analoog > 0.1 | analoog - huidige > 0.1){ //Kijk of de stooklijn met meer of minder dan 0.1 is veranderd
RubenHendriks 1:00c0039f4309 110 if(showstooklijn == false) (menubuffer = menu); //Als 'showstooklijn' is false sla dan het huidige menu op in de menubuffer
RubenHendriks 1:00c0039f4309 111 showstooklijn = true; //Maak de 'showstooklijn' variabele true zodat de menubuffer niet wordt aangepast
RubenHendriks 1:00c0039f4309 112 menu = 8; //Laat menu 8 op het display verschijnen (Stooklijn)
RubenHendriks 1:00c0039f4309 113 }
RubenHendriks 1:00c0039f4309 114 else (analoog = huidige); //Als de verandering van de stooklijn kleinder is dan 0.1 geef de huidige waarde dan terug
RubenHendriks 1:00c0039f4309 115
RubenHendriks 1:00c0039f4309 116 if (showstooklijn == true & menu != 8)(showstooklijn = false); //Zet 'showstooklijn' op false als er naar een ander menu wordt gegaan
RubenHendriks 1:00c0039f4309 117 if (showstooklijn == true & menu == 8){ //Wanneer menu 8 wordt getoond en 'showstooklijn' is true...
RubenHendriks 1:00c0039f4309 118 showtimer = showtimer + 1; //Incrementeer 'showtimer' met 1
RubenHendriks 1:00c0039f4309 119 if (showtimer > 3000) { //Wanneer de 'showtimer' groter is dan 3000... 3000 is +- 3 seconden
RubenHendriks 1:00c0039f4309 120 menu = menubuffer; //Zet de vorige menu terug op het LCD
RubenHendriks 1:00c0039f4309 121 showstooklijn = false; //Zet de showstooklijn terug op false
RubenHendriks 1:00c0039f4309 122 showtimer = 0; //Clear de showstooklijn timer
RubenHendriks 1:00c0039f4309 123 }
RubenHendriks 0:f8f8433058d6 124 }
RubenHendriks 1:00c0039f4309 125 return analoog; //Geef de nieuwe waarde van de stooklijn terug
RubenHendriks 0:f8f8433058d6 126 }
RubenHendriks 1:00c0039f4309 127
RubenHendriks 1:00c0039f4309 128 //------------------------------------------------------------------
RubenHendriks 1:00c0039f4309 129 //----Functie voor dag nummers om te zetten naar dag benamingen-----
RubenHendriks 0:f8f8433058d6 130 //------------------------------------------------------------------
RubenHendriks 0:f8f8433058d6 131 const char* dagen (int dag){
RubenHendriks 1:00c0039f4309 132 const char* dagbenaming =""; //Maak een variable aan waarin de huidige dag benaming komt te staan
RubenHendriks 1:00c0039f4309 133
RubenHendriks 1:00c0039f4309 134 //Zet de dag nummer om in een dag benaming
RubenHendriks 0:f8f8433058d6 135 if (dag == 1) (dagbenaming = "Ma");
RubenHendriks 0:f8f8433058d6 136 else if (dag == 2) (dagbenaming = "Di");
RubenHendriks 0:f8f8433058d6 137 else if (dag == 3) (dagbenaming = "Wo");
RubenHendriks 0:f8f8433058d6 138 else if (dag == 4) (dagbenaming = "Do");
RubenHendriks 0:f8f8433058d6 139 else if (dag == 5) (dagbenaming = "Vr");
RubenHendriks 0:f8f8433058d6 140 else if (dag == 6) (dagbenaming = "Za");
RubenHendriks 0:f8f8433058d6 141 else if (dag == 7) (dagbenaming = "Zo");
RubenHendriks 0:f8f8433058d6 142
RubenHendriks 1:00c0039f4309 143 return dagbenaming; //Geef de huidige dag benaming terug
RubenHendriks 0:f8f8433058d6 144 }
RubenHendriks 1:00c0039f4309 145
RubenHendriks 1:00c0039f4309 146 //-----------------------------------------------------------------
RubenHendriks 1:00c0039f4309 147 //---------Functie voor het berekenen van de warmtevraag-----------
RubenHendriks 0:f8f8433058d6 148 //-----------------------------------------------------------------
RubenHendriks 0:f8f8433058d6 149 int aantalwarmtevraag (){
RubenHendriks 1:00c0039f4309 150 int aantal =0; //Reset de variabele
RubenHendriks 1:00c0039f4309 151
RubenHendriks 1:00c0039f4309 152 //Kijk of er warmt wordt gevraagt in de living
RubenHendriks 0:f8f8433058d6 153 if (LMTemp_1 < (instelliving - (hysteresis /2)) & hysteresisbuffer[0] == false) (hysteresisbuffer[0] = true);
RubenHendriks 0:f8f8433058d6 154 if (LMTemp_1 < (instelliving - (hysteresis /2)) | hysteresisbuffer[0] == true ) (aantal = aantal + 1);
RubenHendriks 0:f8f8433058d6 155 if (LMTemp_1 > (instelliving + (hysteresis /2))) (hysteresisbuffer[0] = false);
RubenHendriks 0:f8f8433058d6 156
RubenHendriks 1:00c0039f4309 157 //Kijk of er warmt wordt gevraagt in de keuken
RubenHendriks 0:f8f8433058d6 158 if (LMTemp_2 < (instelkeuken - (hysteresis /2)) & hysteresisbuffer[1] == false) (hysteresisbuffer[1] = true);
RubenHendriks 0:f8f8433058d6 159 if (LMTemp_2 < (instelkeuken - (hysteresis /2)) | hysteresisbuffer[1] == true ) (aantal = aantal + 1);
RubenHendriks 0:f8f8433058d6 160 if (LMTemp_2 > (instelkeuken + (hysteresis /2))) (hysteresisbuffer[1] = false);
RubenHendriks 0:f8f8433058d6 161
RubenHendriks 1:00c0039f4309 162 //Kijk of er warmt wordt gevraagt in de slaapkamer
RubenHendriks 0:f8f8433058d6 163 if (LMTemp_3 < (instelslaap - (hysteresis /2)) & hysteresisbuffer[2] == false) (hysteresisbuffer[2] = true);
RubenHendriks 0:f8f8433058d6 164 if (LMTemp_3 < (instelslaap - (hysteresis /2)) | hysteresisbuffer[2] == true ) (aantal = aantal + 1);
RubenHendriks 0:f8f8433058d6 165 if (LMTemp_3 > (instelslaap + (hysteresis /2))) (hysteresisbuffer[2] = false);
RubenHendriks 0:f8f8433058d6 166
RubenHendriks 1:00c0039f4309 167 //Kijk of dat de huidige tijd tussen het start uur en het stop uur zit
RubenHendriks 0:f8f8433058d6 168 if (uur == startuur & min == startmin & sec == startsec) (aan = true);
RubenHendriks 0:f8f8433058d6 169 if (uur == stopuur & min == stopmin & sec == stopsec) (aan = false);
RubenHendriks 1:00c0039f4309 170
RubenHendriks 1:00c0039f4309 171 if (aan == false) (aantal = 0); //Als de cv niet moet op staan zet dan het aantal op nul
RubenHendriks 1:00c0039f4309 172 return aantal; //Geef het aantal warmte vraag terug
RubenHendriks 0:f8f8433058d6 173 }
RubenHendriks 1:00c0039f4309 174
RubenHendriks 1:00c0039f4309 175 //-----------------------------------------------------------------
RubenHendriks 1:00c0039f4309 176 //-------Functie voor positie bepaling voor de servo motor---------
RubenHendriks 0:f8f8433058d6 177 //-----------------------------------------------------------------
RubenHendriks 0:f8f8433058d6 178 void servoposition (int aantalwarmtevraag, float stooklijn){
RubenHendriks 1:00c0039f4309 179 float graden = -105 + (aantalwarmtevraag * 40); //-105 is het nulpunt van de servo, zet de servo bij elke warmte vraag 40° meer open
RubenHendriks 1:00c0039f4309 180 graden = graden + (stooklijn * 25); //Pas de positie van de servo aan de huidige stooklijn
RubenHendriks 1:00c0039f4309 181 if (graden >= 90) (graden = 90); //Als het resultaat groter wordt stuur dan de servo helmaal open (dit zorgt er voor dat de servo niet vast loopt)
RubenHendriks 1:00c0039f4309 182 if (aantalwarmtevraag == 0) (graden = -105); //Als er geen warmte vraag is zet dan de servo volledig toe
RubenHendriks 1:00c0039f4309 183 if (stooklijn <= 0.09) (graden = -105); //Als de stooklijn 0 is zet dan de servo helemaal toe
RubenHendriks 1:00c0039f4309 184 myservo.position(graden); //Schrijf de positie naar de servo motor
RubenHendriks 0:f8f8433058d6 185 }
RubenHendriks 1:00c0039f4309 186
RubenHendriks 0:f8f8433058d6 187 //*****************************************************************
RubenHendriks 0:f8f8433058d6 188 //*******************************Main******************************
RubenHendriks 0:f8f8433058d6 189 //*****************************************************************
RubenHendriks 0:f8f8433058d6 190 int main() {
RubenHendriks 0:f8f8433058d6 191
RubenHendriks 1:00c0039f4309 192 lcd.cls(); //Clear het LCD
RubenHendriks 1:00c0039f4309 193 lcd.locate(0,0); //Ga naar positie 0 op de eerste lijn
RubenHendriks 1:00c0039f4309 194 lcd.printf("Welkom"); //Geef een welkomsboodschap weer op het LCD
RubenHendriks 1:00c0039f4309 195 lcd.locate(0,1); //Ga naar positie 0 op de 2de lijn
RubenHendriks 1:00c0039f4309 196 lcd.printf("Initialiseren"); //Geef 'Initialiseren' weer op het LCD
RubenHendriks 1:00c0039f4309 197
RubenHendriks 1:00c0039f4309 198 myservo.calibrate(0.0009, 105); //Geef het middenpunt van de servo aan (servo is niet 100% gecentreerd daarom 105°)
RubenHendriks 1:00c0039f4309 199
RubenHendriks 1:00c0039f4309 200 //**************************************************
RubenHendriks 1:00c0039f4309 201 //--------------Initaliseer websocket---------------
RubenHendriks 1:00c0039f4309 202 //**************************************************
RubenHendriks 0:f8f8433058d6 203 char json_str[1000]; //Maak een buffer aan voor de te verzenden karakters
RubenHendriks 0:f8f8433058d6 204
RubenHendriks 0:f8f8433058d6 205 EthernetInterface eth; //Declareer de ethernet interface
RubenHendriks 0:f8f8433058d6 206 eth.init(); //Use DHCP ip
RubenHendriks 0:f8f8433058d6 207 eth.connect(); //Maak conectie met het gekregen ip adress
RubenHendriks 0:f8f8433058d6 208
RubenHendriks 1:00c0039f4309 209 Websocket ws("ws://sockets.mbed.org:443/ws/ProjectEmbeddedC/wo"); //Wijs een mbed server toe (write only)
RubenHendriks 1:00c0039f4309 210 ws.connect(); //Connectie maken met de mbed server
RubenHendriks 1:00c0039f4309 211 wait(2.0); //Wacht even totodat de mbed conectie heeft gemaakt met de mbed server
RubenHendriks 0:f8f8433058d6 212
RubenHendriks 1:00c0039f4309 213
RubenHendriks 1:00c0039f4309 214 int timer = 0; //Maak een lokale variabele aan die de tijdbasis vormt voor het hele programma
RubenHendriks 1:00c0039f4309 215 int timerweb = 0; //Maak een lokale variabele aan die de tijdbasis vormt voor data te versturen naar de websocket
RubenHendriks 0:f8f8433058d6 216
RubenHendriks 1:00c0039f4309 217 while(1) { //Ga in een eeuwige lus
RubenHendriks 0:f8f8433058d6 218
RubenHendriks 1:00c0039f4309 219 timer = timer + 1; //Incrementeer de hoofdtimer met 1
RubenHendriks 1:00c0039f4309 220 if (timer >= 250){ //Wanneer de timer groter of gelijk is aan 250 worden de instructies uitgevoerd, dit is de refresh time van het programma en ook de debounce time (+- 250ms)
RubenHendriks 1:00c0039f4309 221 timer = 0; //Clear de timer terug voor de volgende cyclus
RubenHendriks 1:00c0039f4309 222
RubenHendriks 1:00c0039f4309 223 timerweb = timerweb + 1; //Incrementeer de webtimer met 1
RubenHendriks 1:00c0039f4309 224 if (timerweb >= 20){ //Wanneer deze timer groter of gelijk is aan 20 wordt de data naar de websocket verzonden (+-5 seconden)
RubenHendriks 1:00c0039f4309 225 timerweb = 0; //Clear de webtimer terug voor de volgende cyclus
RubenHendriks 0:f8f8433058d6 226
RubenHendriks 1:00c0039f4309 227 //Data verzenden naar de webssocket
RubenHendriks 1:00c0039f4309 228 sprintf(json_str,"------------------------------------------------------------------- \r\n ");
RubenHendriks 1:00c0039f4309 229 ws.send(json_str);
RubenHendriks 1:00c0039f4309 230 sprintf(json_str, "Starttijd: %.2D:%.2D:%.2D \r\n Stoptijd: %.2D:%.2D:%.2D \r\n",startuur,startmin,startsec,stopuur,stopmin,stopsec);
RubenHendriks 1:00c0039f4309 231 ws.send(json_str);
RubenHendriks 1:00c0039f4309 232 sprintf(json_str, "Hysteresis: %.1f °C \r\n",hysteresis);
RubenHendriks 1:00c0039f4309 233 ws.send(json_str);
RubenHendriks 1:00c0039f4309 234 sprintf(json_str, "Huidige stooklijn: %.1f °C/uur \r\n",stooklijn);
RubenHendriks 1:00c0039f4309 235 ws.send(json_str);
RubenHendriks 1:00c0039f4309 236 sprintf(json_str, "Huidige buiten temperatuur: %.1f °C \r\n ",LMTemp_4);
RubenHendriks 1:00c0039f4309 237 ws.send(json_str);
RubenHendriks 1:00c0039f4309 238 sprintf(json_str, "Huidige temperuur slaapkamer: %.1f °C \r\n Gewenst %.1f °C \r\n ",LMTemp_3,instelslaap);
RubenHendriks 1:00c0039f4309 239 ws.send(json_str);
RubenHendriks 1:00c0039f4309 240 sprintf(json_str, "Huidige temperuur keuken: %.1f °C \r\n Gewenst %.1f °C \r\n ",LMTemp_2,instelkeuken);
RubenHendriks 1:00c0039f4309 241 ws.send(json_str);
RubenHendriks 1:00c0039f4309 242 sprintf(json_str, "Huidige temperuur living: %.1f °C \r\n Gewenst %.1f °C \r\n ",LMTemp_1,instelliving);
RubenHendriks 1:00c0039f4309 243 ws.send(json_str);
RubenHendriks 1:00c0039f4309 244 sprintf(json_str, "%s %.2D-%.2D-%.2D %.2D:%.2D:%.2D \r\n ",dagen(dag),datum,maand,jaar,uur,min,sec);
RubenHendriks 1:00c0039f4309 245 ws.send(json_str);
RubenHendriks 1:00c0039f4309 246 }
RubenHendriks 0:f8f8433058d6 247
RubenHendriks 1:00c0039f4309 248 my1307.gettime( &sec, &min, &uur, &dag, &datum, &maand, &jaar); //Lees de tijd uit de DS1307 en plaats elk element in een apparte variabele
RubenHendriks 0:f8f8433058d6 249
RubenHendriks 1:00c0039f4309 250 LMTemp_1 = LM35(1); //Lees de temperatuur uit van de living
RubenHendriks 1:00c0039f4309 251 LMTemp_2 = LM35(2); //Lees de temperatuur uit van de keuken
RubenHendriks 1:00c0039f4309 252 LMTemp_3 = LM35(3); //Lees de temperatuur uit van de slaapkamer
RubenHendriks 1:00c0039f4309 253 LMTemp_4 = LM35(4); //Lees de temperatuur uit van buiten
RubenHendriks 0:f8f8433058d6 254
RubenHendriks 1:00c0039f4309 255 if (SW_1 == true){ //Als er op toets 1 word gedrukt...
RubenHendriks 1:00c0039f4309 256 menu = menu + 1; //Scrol naar boven door het menu
RubenHendriks 1:00c0039f4309 257 if (menu > 11) (menu = 0); //Als alle menu's zijn doorlopen ga dan terug naar het eerste menu
RubenHendriks 0:f8f8433058d6 258 }
RubenHendriks 0:f8f8433058d6 259
RubenHendriks 1:00c0039f4309 260 if (SW_2 == true){ //Als er op toets 2 word gedrukt...
RubenHendriks 1:00c0039f4309 261 menu = menu - 1; //Scrol naar beneden door het menu
RubenHendriks 1:00c0039f4309 262 if (menu < 0) (menu = 11); //Als men voorbij het eerste menu wilt gaan begin laat dan het laatste menu terug zien
RubenHendriks 0:f8f8433058d6 263 }
RubenHendriks 0:f8f8433058d6 264
RubenHendriks 1:00c0039f4309 265 if (menu == 0){ //Wanneer menu 0 is geselecteerd...
RubenHendriks 1:00c0039f4309 266 lcd.cls(); //Clear het LCD
RubenHendriks 1:00c0039f4309 267 lcd.locate(4,0); //Zet de cursor op positie 4 op de eerste lijn
RubenHendriks 1:00c0039f4309 268 lcd.printf("%.2D:%.2D:%.2D",uur,min,sec); //Print de tijd naar het LCD
RubenHendriks 1:00c0039f4309 269 lcd.locate(3,1); //Zet de cursor op positie 3 op de 2de lijn
RubenHendriks 1:00c0039f4309 270 lcd.printf("%s %.2D-%.2D-%.2D",dagen(dag),datum,maand,jaar); //Print de dag en datum op het LCD
RubenHendriks 1:00c0039f4309 271 wijzigmenustop = 0; //Zorg er voor als men uit menu 10 komt dat de ingestelde starttijd word opgeslagen
RubenHendriks 1:00c0039f4309 272 }
RubenHendriks 1:00c0039f4309 273
RubenHendriks 1:00c0039f4309 274 else if (menu == 1){ //Wanneer menu 1 is geselecteerd...
RubenHendriks 1:00c0039f4309 275 lcd.cls(); //Clear het LCD
RubenHendriks 1:00c0039f4309 276 lcd.locate(0,0); //Zet de cursor op positie 0 op de eerste lijn
RubenHendriks 1:00c0039f4309 277 lcd.printf("Temperatuur"); //Print het woord "Temperatuur" naar het LCD
RubenHendriks 1:00c0039f4309 278 lcd.locate(0,1); //Zet de cursor op positie 0 op de 2de lijn
RubenHendriks 1:00c0039f4309 279 lcd.printf("Living: %.1f C",LMTemp_1); //Print de temperatuur van de living naar het LCD
RubenHendriks 0:f8f8433058d6 280 }
RubenHendriks 0:f8f8433058d6 281
RubenHendriks 1:00c0039f4309 282 else if (menu == 2){ //Wanneer menu 2 is geselecteerd...
RubenHendriks 1:00c0039f4309 283 lcd.cls(); //Clear het LCD
RubenHendriks 1:00c0039f4309 284 lcd.locate(0,0); //Zet de cursor op positie 0 op de eerste lijn
RubenHendriks 1:00c0039f4309 285 lcd.printf("Temperatuur"); //Print het woord "Temperatuur" naar het LCD
RubenHendriks 1:00c0039f4309 286 lcd.locate(0,1); //Zet de cursor op positie 0 op de 2de lijn
RubenHendriks 1:00c0039f4309 287 lcd.printf("Keuken: %.1f C",LMTemp_2); //Print de temperatuur van de keuken naar het LCD
RubenHendriks 0:f8f8433058d6 288 }
RubenHendriks 0:f8f8433058d6 289
RubenHendriks 1:00c0039f4309 290 else if (menu == 3){ //Wanneer menu 3 is geselecteerd...
RubenHendriks 1:00c0039f4309 291 lcd.cls(); //Clear het LCD
RubenHendriks 1:00c0039f4309 292 lcd.locate(0,0); //Zet de cursor op positie 0 op de eerste lijn
RubenHendriks 1:00c0039f4309 293 lcd.printf("Temperatuur"); //Print het woord "Temperatuur" naar het LCD
RubenHendriks 1:00c0039f4309 294 lcd.locate(0,1); //Zet de cursor op positie 0 op de 2de lijn
RubenHendriks 1:00c0039f4309 295 lcd.printf("Slaap: %.1f C",LMTemp_3); //Print de temperatuur van de slaapkamer naar het LCD
RubenHendriks 0:f8f8433058d6 296 }
RubenHendriks 0:f8f8433058d6 297
RubenHendriks 1:00c0039f4309 298 else if (menu == 4){ //Wanneer menu 4 is geselecteerd...
RubenHendriks 1:00c0039f4309 299 lcd.cls(); //Clear het LCD
RubenHendriks 1:00c0039f4309 300 lcd.locate(0,0); //Zet de cursor op positie 0 op de eerste lijn
RubenHendriks 1:00c0039f4309 301 lcd.printf("Temperatuur"); //Print het woord "Temperatuur" naar het LCD
RubenHendriks 1:00c0039f4309 302 lcd.locate(0,1); //Zet de cursor op positie 0 op de 2de lijn
RubenHendriks 1:00c0039f4309 303 lcd.printf("Buiten: %.1f C",LMTemp_4); //Print de temperatuur van buiten naar het LCD
RubenHendriks 0:f8f8433058d6 304 }
RubenHendriks 0:f8f8433058d6 305
RubenHendriks 1:00c0039f4309 306 else if (menu == 5){ //Wanneer menu 5 is geselecteerd...
RubenHendriks 1:00c0039f4309 307 lcd.cls(); //Clear het LCD
RubenHendriks 1:00c0039f4309 308 lcd.locate(0,0); //Zet de cursor op positie 0 op de eerste lijn
RubenHendriks 1:00c0039f4309 309 lcd.printf("Gewenste temp"); //Print het woorden "Gewenste temp" naar het LCD
RubenHendriks 1:00c0039f4309 310 lcd.locate(0,1); //Zet de cursor op positie 0 op de 2de lijn
RubenHendriks 1:00c0039f4309 311 lcd.printf("Living: %.1f C",instelliving); //Print de huidige gewenste temperatuur van de living naar het LCD
RubenHendriks 0:f8f8433058d6 312
RubenHendriks 1:00c0039f4309 313 if (SW_3 == true & instelliving < 30) (instelliving = instelliving + 0.1); //Wanneer er op switch 3 wordt geduwt verhoog de gewenste temperatuur met 0.1
RubenHendriks 1:00c0039f4309 314 if (SW_4 == true & instelliving > 0) (instelliving = instelliving - 0.1); //Wanneer er op switch 4 wordt geduwt verlaag de gewenste temperatuur met 0.1
RubenHendriks 0:f8f8433058d6 315 }
RubenHendriks 0:f8f8433058d6 316
RubenHendriks 1:00c0039f4309 317 else if (menu == 6){ //Wanneer menu 6 is geselecteerd...
RubenHendriks 1:00c0039f4309 318 lcd.cls(); //Clear het LCD
RubenHendriks 1:00c0039f4309 319 lcd.locate(0,0); //Zet de cursor op positie 0 op de eerste lijn
RubenHendriks 1:00c0039f4309 320 lcd.printf("Gewenste temp"); //Print het woorden "Gewenste temp" naar het LCD
RubenHendriks 1:00c0039f4309 321 lcd.locate(0,1); //Zet de cursor op positie 0 op de 2de lijn
RubenHendriks 1:00c0039f4309 322 lcd.printf("Keuken: %.1f C",instelkeuken); //Print de huidige gewenste temperatuur van de keuken naar het LCD
RubenHendriks 0:f8f8433058d6 323
RubenHendriks 1:00c0039f4309 324 if (SW_3 == true & instelkeuken < 30) (instelkeuken = instelkeuken + 0.1); //Wanneer er op switch 3 wordt geduwt verhoog de gewenste temperatuur met 0.1
RubenHendriks 1:00c0039f4309 325 if (SW_4 == true & instelkeuken > 0) (instelkeuken = instelkeuken - 0.1); //Wanneer er op switch 4 wordt geduwt verlaag de gewenste temperatuur met 0.1
RubenHendriks 0:f8f8433058d6 326 }
RubenHendriks 0:f8f8433058d6 327
RubenHendriks 1:00c0039f4309 328 else if (menu == 7){ //Wanneer menu 7 is geselecteerd...
RubenHendriks 1:00c0039f4309 329 lcd.cls(); //Clear het LCD
RubenHendriks 1:00c0039f4309 330 lcd.locate(0,0); //Zet de cursor op positie 0 op de eerste lijn
RubenHendriks 1:00c0039f4309 331 lcd.printf("Gewenste temp"); //Print het woorden "Gewenste temp" naar het LCD
RubenHendriks 1:00c0039f4309 332 lcd.locate(0,1); //Zet de cursor op positie 0 op de 2de lijn
RubenHendriks 1:00c0039f4309 333 lcd.printf("Slaap: %.1f C",instelslaap); //Print de huidige gewenste temperatuur van de slaapkamer naar het LCD
RubenHendriks 0:f8f8433058d6 334
RubenHendriks 1:00c0039f4309 335 if (SW_3 == true & instelslaap < 30) (instelslaap = instelslaap + 0.1); //Wanneer er op switch 3 wordt geduwt verhoog de gewenste temperatuur met 0.1
RubenHendriks 1:00c0039f4309 336 if (SW_4 == true & instelslaap > 0) (instelslaap = instelslaap - 0.1); //Wanneer er op switch 4 wordt geduwt verlaag de gewenste temperatuur met 0.1
RubenHendriks 1:00c0039f4309 337 }
RubenHendriks 1:00c0039f4309 338
RubenHendriks 1:00c0039f4309 339 else if (menu == 8){ //Wanneer menu 8 is geselecteerd...
RubenHendriks 1:00c0039f4309 340 lcd.cls(); //Clear het LCD
RubenHendriks 1:00c0039f4309 341 lcd.locate(0,0); //Zet de cursor op positie 0 op de eerste lijn
RubenHendriks 1:00c0039f4309 342 lcd.printf("Stooklijn"); //Print het woord "Stooklijn" naar het LCD
RubenHendriks 1:00c0039f4309 343 lcd.locate(0,1); //Zet de cursor op positie 0 op de 2de lijn
RubenHendriks 1:00c0039f4309 344 lcd.printf("%.1f C/uur",stooklijn); //Print de huidige stooklijn naar het LCD
RubenHendriks 1:00c0039f4309 345 wijzigmenustart = 0; //Zorg er voor als er uit menu 9 wordt teruggekeerd dat de ingestelde starttijd word opgeslagen
RubenHendriks 0:f8f8433058d6 346 }
RubenHendriks 0:f8f8433058d6 347
RubenHendriks 1:00c0039f4309 348 else if (menu == 9){ //Wanneer menu 9 is geselecteerd...
RubenHendriks 1:00c0039f4309 349 lcd.cls(); //Clear het LCD
RubenHendriks 1:00c0039f4309 350 lcd.locate(0,0); //Zet de cursor op positie 0 op de eerste lijn
RubenHendriks 1:00c0039f4309 351 lcd.printf("Hysteresis"); //Print het woord "Hysteresis" naar het LCD
RubenHendriks 1:00c0039f4309 352 lcd.locate(0,1); //Zet de cursor op positie 0 op de 2de lijn
RubenHendriks 1:00c0039f4309 353 lcd.printf("%.1f C",hysteresis); //Print de huidige hysteresis naar het LCD
RubenHendriks 1:00c0039f4309 354 wijzigmenustart = 0; //Zorg er voor als er uit menu 9 wordt teruggekeerd dat de ingestelde starttijd word opgeslagen
RubenHendriks 0:f8f8433058d6 355
RubenHendriks 1:00c0039f4309 356 if (SW_3 == true & hysteresis < 5) (hysteresis = hysteresis + 0.1); //Wanneer er op switch 3 wordt geduwt verhoog de hysteresis met 0.1
RubenHendriks 1:00c0039f4309 357 if (SW_4 == true & hysteresis > 0) (hysteresis = hysteresis - 0.1); //Wanneer er op switch 4 wordt geduwt verlaag de hysteresis met 0.1
RubenHendriks 0:f8f8433058d6 358 }
RubenHendriks 0:f8f8433058d6 359 //----------------Menu 10--------------------------------
RubenHendriks 1:00c0039f4309 360 else if (menu == 10){ //Wanneer menu 10 is geselecteerd...
RubenHendriks 1:00c0039f4309 361 lcd.cls(); //Clear het LCD
RubenHendriks 1:00c0039f4309 362 lcd.locate(0,0); //Zet de cursor op positie 0 op de eerste lijn
RubenHendriks 1:00c0039f4309 363 lcd.printf("Starttijd"); //Print het woord "Startijd" steeds naar het LCD
RubenHendriks 1:00c0039f4309 364 if (wijzigmenustart == 0 | flikertimer >= 3){ //Waneer er geen wijzing wordt uitgevoerd of de flikertimer overflowd...
RubenHendriks 1:00c0039f4309 365 lcd.locate(0,1); //Zet de cursor op positie 0 op de 2de lijn
RubenHendriks 1:00c0039f4309 366 lcd.printf("%.2D:%.2D:%.2D",startuur,startmin,startsec); //Print alle elemeneten van de startijd naar het LCD
RubenHendriks 0:f8f8433058d6 367 }
RubenHendriks 1:00c0039f4309 368
RubenHendriks 1:00c0039f4309 369 timerwijzigen = timerwijzigen + 1; //Incrementeer de timerwijzigen met 1 (tijdbasis voor het indrukken van beide knoppen)
RubenHendriks 1:00c0039f4309 370 if (!(SW_3 == true && SW_4 == true & 1)) (timerwijzigen = 0); //Wanneer beide knopen tergelijkertijd worden ingedrukt wordt de timerwijzigen NIET gecleard
RubenHendriks 1:00c0039f4309 371 if (timerwijzigen == 3)(wijzigmenustart = wijzigmenustart + 1); //Wanneer de timerwijzigen gelijk is aan 3 en dus beide knopen +- 750ms zijn ingedrukt, incrementeer de wijzig meneu met 1
RubenHendriks 1:00c0039f4309 372 if (wijzigmenustart > 3) (wijzigmenustart = 0); //Wanneer de menu meer als 3 wordt wordt deze terug op 0 gezet
RubenHendriks 0:f8f8433058d6 373
RubenHendriks 1:00c0039f4309 374 if (wijzigmenustart == 1){ //Wanneer de wijzigmenustart gelijk is aan 1...
RubenHendriks 1:00c0039f4309 375 flikertimer = flikertimer + 1; //Incrementeer de flikertimer met 1
RubenHendriks 1:00c0039f4309 376 if (flikertimer <= 4) { //Wanneer de flikertimer kleiner of gelijk is aan 4...
RubenHendriks 1:00c0039f4309 377 lcd.locate(0,0); //Zet de cursor op positie 0 op de eerste lijn
RubenHendriks 1:00c0039f4309 378 lcd.printf("Starttijd"); //Print het woord "Startijd" steeds naar het LCD
RubenHendriks 1:00c0039f4309 379 lcd.locate(0,1); //Zet de cursor op positie 0 op de 2de lijn
RubenHendriks 1:00c0039f4309 380 lcd.printf(" :%.2D:%.2D",startmin,startsec); //Print de elemeneten startmin en startsec van de startijd naar het LCD
RubenHendriks 0:f8f8433058d6 381 }
RubenHendriks 1:00c0039f4309 382
RubenHendriks 1:00c0039f4309 383 if (flikertimer > 4) (flikertimer = 0); //Clear de flikkertimer wanneer hij groter wordt dan 4
RubenHendriks 1:00c0039f4309 384
RubenHendriks 1:00c0039f4309 385 if (SW_3 == true) (startuur = startuur + 1); //Wanneer er op switch 3 wordt geduwt verhoog het start uur met 0.1
RubenHendriks 1:00c0039f4309 386 if (SW_4 == true) (startuur = startuur - 1); //Wanneer er op switch 4 wordt geduwt verlaag het start uur met 0.1
RubenHendriks 1:00c0039f4309 387 if (startuur > 23) (startuur = 0); //Wanneer het start uur groter wordt dan 23 uur, zet het dan terug op 0
RubenHendriks 1:00c0039f4309 388 if (startuur < 0) (startuur = 23); //Wanneer het start uur kleiner wordt dan 0 uur, zet het dan terug op 23
RubenHendriks 0:f8f8433058d6 389 }
RubenHendriks 0:f8f8433058d6 390
RubenHendriks 1:00c0039f4309 391 if (wijzigmenustart == 2){ //Wanneer de wijzigmenustart gelijk is aan 2...
RubenHendriks 1:00c0039f4309 392 flikertimer = flikertimer + 1; //Incrementeer de flikertimer met 1
RubenHendriks 1:00c0039f4309 393 if (flikertimer <= 4) { //Wanneer de flikertimer kleiner of gelijk is aan 4...
RubenHendriks 1:00c0039f4309 394 lcd.locate(0,0); //Zet de cursor op positie 0 op de eerste lijn
RubenHendriks 1:00c0039f4309 395 lcd.printf("Starttijd"); //Print het woord "Startijd" steeds naar het LCD
RubenHendriks 1:00c0039f4309 396 lcd.locate(0,1); //Zet de cursor op positie 0 op de 2de lijn
RubenHendriks 1:00c0039f4309 397 lcd.printf("%.2D: :%.2D",startuur,startsec); //Print de elemeneten startuur en startsec van de startijd naar het LCD
RubenHendriks 0:f8f8433058d6 398 }
RubenHendriks 1:00c0039f4309 399
RubenHendriks 1:00c0039f4309 400 if (flikertimer > 4) (flikertimer = 0); //Clear de flikkertimer wanneer hij groter wordt dan 4
RubenHendriks 1:00c0039f4309 401
RubenHendriks 1:00c0039f4309 402 if (SW_3 == true) (startmin = startmin + 1); //Wanneer er op switch 3 wordt geduwt verhoog het start min met 0.1
RubenHendriks 1:00c0039f4309 403 if (SW_4 == true) (startmin = startmin - 1); //Wanneer er op switch 4 wordt geduwt verlaag het start min met 0.1
RubenHendriks 1:00c0039f4309 404 if (startmin > 59) (startmin = 0); //Wanneer het start min groter wordt dan 59 min, zet het dan terug op 0
RubenHendriks 1:00c0039f4309 405 if (startmin < 0) (startmin = 59); //Wanneer het start min kleiner wordt dan 0 min, zet het dan terug op 59
RubenHendriks 1:00c0039f4309 406 }
RubenHendriks 1:00c0039f4309 407
RubenHendriks 1:00c0039f4309 408 if (wijzigmenustart == 3){ //Wanneer de wijzigmenustart gelijk is aan 3...
RubenHendriks 1:00c0039f4309 409 flikertimer = flikertimer + 1; //Incrementeer de flikertimer met 1
RubenHendriks 1:00c0039f4309 410 if (flikertimer <= 4) { //Wanneer de flikertimer kleiner of gelijk is aan 4...
RubenHendriks 1:00c0039f4309 411 lcd.locate(0,0); //Zet de cursor op positie 0 op de eerste lijn
RubenHendriks 1:00c0039f4309 412 lcd.printf("Starttijd"); //Print het woord "Startijd" steeds naar het LCD
RubenHendriks 1:00c0039f4309 413 lcd.locate(0,1); //Zet de cursor op positie 0 op de 2de lijn
RubenHendriks 1:00c0039f4309 414 lcd.printf("%.2D:%.2D: ",startuur,startmin); //Print de elemeneten startuur en startmin van de startijd naar het LCD
RubenHendriks 0:f8f8433058d6 415 }
RubenHendriks 1:00c0039f4309 416
RubenHendriks 1:00c0039f4309 417 if (flikertimer > 4) (flikertimer = 0); //Clear de flikkertimer wanneer hij groter wordt dan 4
RubenHendriks 1:00c0039f4309 418
RubenHendriks 1:00c0039f4309 419 if (SW_3 == true) (startsec = startsec + 1); //Wanneer er op switch 3 wordt geduwt verhoog het start sec met 0.1
RubenHendriks 1:00c0039f4309 420 if (SW_4 == true) (startsec = startsec - 1); //Wanneer er op switch 4 wordt geduwt verlaag het start sec met 0.1
RubenHendriks 1:00c0039f4309 421 if (startsec > 59) (startsec = 0); //Wanneer het start sec groter wordt dan 59 sec, zet het dan terug op 0
RubenHendriks 1:00c0039f4309 422 if (startsec < 0) (startsec = 59); //Wanneer het start sec kleiner wordt dan 0 sec, zet het dan terug op 59
RubenHendriks 0:f8f8433058d6 423 }
RubenHendriks 1:00c0039f4309 424 wijzigmenustop = 0; //Zorg er voor als er uit menu 10 wordt teruggekeerd dat de ingestelde stoptijd word opgeslagen
RubenHendriks 0:f8f8433058d6 425 }
RubenHendriks 0:f8f8433058d6 426 //---------------------------- Menu 11---------------------------------
RubenHendriks 1:00c0039f4309 427 else if (menu == 11){ //Wanneer menu 11 is geselecteerd...
RubenHendriks 1:00c0039f4309 428 lcd.cls(); //Clear het LCD
RubenHendriks 1:00c0039f4309 429 lcd.locate(0,0); //Zet de cursor op positie 0 op de eerste lijn
RubenHendriks 1:00c0039f4309 430 lcd.printf("Stoptijd"); //Print het woord "Stoptijd" steeds naar het LCD
RubenHendriks 1:00c0039f4309 431 if (wijzigmenustop == 0 | flikertimer >= 3){ //Waneer er geen wijzing wordt uitgevoerd of de flikertimer overflowd...
RubenHendriks 1:00c0039f4309 432 lcd.locate(0,1); //Zet de cursor op positie 0 op de 2de lijn
RubenHendriks 1:00c0039f4309 433 lcd.printf("%.2D:%.2D:%.2D",stopuur,stopmin,stopsec); //Print alle elemeneten van de stoptijd naar het LCD
RubenHendriks 0:f8f8433058d6 434 }
RubenHendriks 1:00c0039f4309 435
RubenHendriks 1:00c0039f4309 436 timerwijzigen = timerwijzigen + 1; //Incrementeer de timerwijzigen met 1 (tijdbasis voor het indrukken van beide knoppen)
RubenHendriks 1:00c0039f4309 437 if (!(SW_3 == true && SW_4 == true & 1)) (timerwijzigen = 0); //Wanneer beide knopen tergelijkertijd worden ingedrukt wordt de timerwijzigen NIET gecleard
RubenHendriks 1:00c0039f4309 438 if (timerwijzigen == 3)(wijzigmenustop = wijzigmenustop + 1); //Wanneer de timerwijzigen gelijk is aan 3 en dus beide knopen +- 750ms zijn ingedrukt, incrementeer de wijzig meneu met 1
RubenHendriks 1:00c0039f4309 439 if (wijzigmenustop > 3) (wijzigmenustop = 0); //Wanneer de menu meer als 3 wordt wordt deze terug op 0 gezet
RubenHendriks 0:f8f8433058d6 440
RubenHendriks 1:00c0039f4309 441 if (wijzigmenustop == 1){ //Wanneer de wijzigmenustart gelijk is aan 1...
RubenHendriks 1:00c0039f4309 442 flikertimer = flikertimer + 1; //Incrementeer de flikertimer met 1
RubenHendriks 1:00c0039f4309 443 if (flikertimer <= 4) { //Wanneer de flikertimer kleiner of gelijk is aan 4...
RubenHendriks 1:00c0039f4309 444 lcd.locate(0,0); //Zet de cursor op positie 0 op de eerste lijn
RubenHendriks 1:00c0039f4309 445 lcd.printf("Stoptijd"); //Print het woord "Stoptijd" steeds naar het LCD
RubenHendriks 1:00c0039f4309 446 lcd.locate(0,1); //Zet de cursor op positie 0 op de 2de lijn
RubenHendriks 1:00c0039f4309 447 lcd.printf(" :%.2D:%.2D",stopmin,stopsec); //Print de elemeneten stopmin en stopsec van de stoptijd naar het LCD
RubenHendriks 0:f8f8433058d6 448 }
RubenHendriks 1:00c0039f4309 449
RubenHendriks 1:00c0039f4309 450 if (flikertimer > 4) (flikertimer = 0); //Clear de flikkertimer wanneer hij groter wordt dan 4
RubenHendriks 1:00c0039f4309 451
RubenHendriks 1:00c0039f4309 452 if (SW_3 == true) (stopuur = stopuur + 1); //Wanneer er op switch 3 wordt geduwt verhoog het stop uur met 0.1
RubenHendriks 1:00c0039f4309 453 if (SW_4 == true) (stopuur = stopuur - 1); //Wanneer er op switch 4 wordt geduwt verlaag het stop uur met 0.1
RubenHendriks 1:00c0039f4309 454 if (stopuur > 23) (stopuur = 0); //Wanneer het stop uur groter wordt dan 23 uur, zet het dan terug op 0
RubenHendriks 3:565a5c8cc347 455 if (stopuur < 0) (stopuur = 23); //Wanneer het stop uur kleiner wordt dan 0 uur, zet het dan terug op 23
RubenHendriks 0:f8f8433058d6 456 }
RubenHendriks 0:f8f8433058d6 457
RubenHendriks 1:00c0039f4309 458 if (wijzigmenustop == 2){ //Wanneer de wijzigmenustart gelijk is aan 2...
RubenHendriks 1:00c0039f4309 459 flikertimer = flikertimer + 1; //Incrementeer de flikertimer met 1
RubenHendriks 1:00c0039f4309 460 if (flikertimer <= 4) { //Wanneer de flikertimer kleiner of gelijk is aan 4...
RubenHendriks 1:00c0039f4309 461 lcd.locate(0,0); //Zet de cursor op positie 0 op de eerste lijn
RubenHendriks 1:00c0039f4309 462 lcd.printf("Stoptijd"); //Print het woord "Stoptijd" steeds naar het LCD
RubenHendriks 1:00c0039f4309 463 lcd.locate(0,1); //Zet de cursor op positie 0 op de 2de lijn
RubenHendriks 1:00c0039f4309 464 lcd.printf("%.2D: :%.2D",stopuur,stopsec); //Print de elemeneten stopuur en stopsec van de stoptijd naar het LCD
RubenHendriks 0:f8f8433058d6 465 }
RubenHendriks 1:00c0039f4309 466
RubenHendriks 1:00c0039f4309 467 if (flikertimer > 4) (flikertimer = 0); //Clear de flikkertimer wanneer hij groter wordt dan 4
RubenHendriks 1:00c0039f4309 468
RubenHendriks 1:00c0039f4309 469 if (SW_3 == true) (stopmin = stopmin + 1); //Wanneer er op switch 3 wordt geduwt verhoog het stop min met 0.1
RubenHendriks 1:00c0039f4309 470 if (SW_4 == true) (stopmin = stopmin - 1); //Wanneer er op switch 4 wordt geduwt verlaag het stop min met 0.1
RubenHendriks 1:00c0039f4309 471 if (stopmin > 59) (stopmin = 0); //Wanneer het stop min groter wordt dan 59 min, zet het dan terug op 0
RubenHendriks 3:565a5c8cc347 472 if (stopmin < 0) (stopmin = 59); //Wanneer het stop min kleiner wordt dan 0 min, zet het dan terug op 59
RubenHendriks 1:00c0039f4309 473 }
RubenHendriks 1:00c0039f4309 474
RubenHendriks 1:00c0039f4309 475 if (wijzigmenustop == 3){ //Wanneer de wijzigmenustart gelijk is aan 3...
RubenHendriks 1:00c0039f4309 476 flikertimer = flikertimer + 1; //Incrementeer de flikertimer met 1
RubenHendriks 1:00c0039f4309 477 if (flikertimer <= 4) { //Wanneer de flikertimer kleiner of gelijk is aan 4...
RubenHendriks 1:00c0039f4309 478 lcd.locate(0,0); //Zet de cursor op positie 0 op de eerste lijn
RubenHendriks 1:00c0039f4309 479 lcd.printf("Stoptijd"); //Print het woord "Stoptijd" steeds naar het LCD
RubenHendriks 1:00c0039f4309 480 lcd.locate(0,1); //Zet de cursor op positie 0 op de 2de lijn
RubenHendriks 1:00c0039f4309 481 lcd.printf("%.2D:%.2D: ",stopuur,stopmin); //Print de elemeneten stopuur en stopmin van de stoptijd naar het LCD
RubenHendriks 1:00c0039f4309 482 }
RubenHendriks 1:00c0039f4309 483
RubenHendriks 1:00c0039f4309 484 if (flikertimer > 4) (flikertimer = 0); //Clear de flikkertimer wanneer hij groter wordt dan 4
RubenHendriks 1:00c0039f4309 485
RubenHendriks 1:00c0039f4309 486 if (SW_3 == true) (stopsec = stopsec + 1); //Wanneer er op switch 3 wordt geduwt verhoog het stop sec met 0.1
RubenHendriks 1:00c0039f4309 487 if (SW_4 == true) (stopsec = stopsec - 1); //Wanneer er op switch 4 wordt geduwt verlaag het stop sec met 0.1
RubenHendriks 1:00c0039f4309 488 if (stopsec > 59) (stopsec = 0); //Wanneer het stop sec groter wordt dan 59 sec, zet het dan terug op 0
RubenHendriks 2:d30df08dd179 489 if (stopsec <= 0) (stopsec = 59); //Wanneer het stop sec kleiner wordt dan 0 sec, zet het dan terug op 59
RubenHendriks 0:f8f8433058d6 490 }
RubenHendriks 1:00c0039f4309 491 wijzigmenustart = 0; //Zorg er voor als men uit menu 10 komt dat de ingestelde starttijd word opgeslagen
RubenHendriks 1:00c0039f4309 492 }
RubenHendriks 1:00c0039f4309 493 //-------------------------------------------------------------------
RubenHendriks 1:00c0039f4309 494 }
RubenHendriks 1:00c0039f4309 495 //Gegevens die steeds worden opgevraagt
RubenHendriks 1:00c0039f4309 496 stooklijn = stooklijnfunctie(stooklijn); //Kijk of er een nieuwe stooklijn is, dit doet men met de functie "stooklijnfunctie" en men geeft de huidige stooklijn mee met de functie
RubenHendriks 1:00c0039f4309 497 onoff(aantalwarmtevraag()); //Stuur de relais en de RBG led aan afhankelijk van de warmtevraag, dit wordt gedaan met de functie "onoff" en men geeft de functie "aantalwarmtevraag" mee als variabele
RubenHendriks 1:00c0039f4309 498 servoposition(aantalwarmtevraag(),stooklijn); //Pas de hoek van de servo aan aan de huidige situatie, dit doet men met de functie "servoposition" men geeft de functie "aantalwarmtevraag" mee als variabele als ook de huidige stooklijn
RubenHendriks 1:00c0039f4309 499 wait(0.001); //Geef een kleine wacht tijd op zodat de processor niet op volle kracht meot werken, deze tijd bepaalt de snelheid van heel het programma
RubenHendriks 0:f8f8433058d6 500 }
RubenHendriks 0:f8f8433058d6 501 }
RubenHendriks 0:f8f8433058d6 502