Berckvens Michiel & Basteyns Jonas
Dependencies: DS1307 TextLCD mbed
main.cpp@5:6878defcfeb9, 2014-12-11 (annotated)
- Committer:
- Michielber
- Date:
- Thu Dec 11 16:07:34 2014 +0000
- Revision:
- 5:6878defcfeb9
- Parent:
- 4:25e4117e8a56
Project updated belastingslijn
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Michielber | 5:6878defcfeb9 | 1 | #include "mbed.h" //Invoegen van de mbed bibliotheek. |
Michielber | 5:6878defcfeb9 | 2 | #include "TextLCD.h" //Invoegen van de LCD bibliotheek. |
Michielber | 5:6878defcfeb9 | 3 | #include "ds1307.h" //Invoegen van de de1307 bibliotheek voor de CLK. |
Michielber | 5:6878defcfeb9 | 4 | #include "EthernetNetIf.h" //Invoegen van de ethernet bibliotheek. |
Michielber | 5:6878defcfeb9 | 5 | #include "HTTPServer.h" //Invoegen van de HTTP bibliotheek. |
Michielber | 5:6878defcfeb9 | 6 | #include "RPCFunction.h" //Invoegen van de RPC bibliotheek. |
Michielber | 5:6878defcfeb9 | 7 | //////////////////////////////////////////////////////////////////////////////////// |
Michielber | 5:6878defcfeb9 | 8 | TextLCD lcd(p21, p22, p23, p24, p27, p28); //Instellen van de LCD pinnen. rs, e, d4-d7 |
Michielber | 5:6878defcfeb9 | 9 | AnalogIn LM35_1(p19); //Analoge ingang voor eerste LM35 toewijzen op welke pin. |
Michielber | 5:6878defcfeb9 | 10 | AnalogIn LM35_2(p20); //Analoge ingang voor tweede LM35 toewijzen op welke pin. |
Michielber | 5:6878defcfeb9 | 11 | Serial pc(USBTX, USBRX); //Zorgen dat we een seriële communicatie tussen computer en MBED kunnen opzetten waardoor we de printf lijnen kunnen gaan uitlezen. |
Michielber | 5:6878defcfeb9 | 12 | DigitalOut LEDJE1 (p6); //Uitgang voor LED op breadboard voor chauffage aan/uit. |
Michielber | 5:6878defcfeb9 | 13 | DigitalOut LEDJE2 (p7); //Uitgang voor LED op breadboard voor chauffage aan/uit. |
Michielber | 5:6878defcfeb9 | 14 | InterruptIn knopHOGER(p8); //Aanmaken van ingangknop voor temperatuur hoger te kunnen instellen onder interrupt. |
Michielber | 5:6878defcfeb9 | 15 | InterruptIn knopLAGER(p30); //Aanmaken van ingangknop voor temperatuur lager te kunnen instellen onder interrupt. |
Michielber | 5:6878defcfeb9 | 16 | InterruptIn aanuitknop(p5); //Aanmaken van aan/uit knop voor het systeem op of af te zetten onder interrupt. |
Michielber | 5:6878defcfeb9 | 17 | DigitalOut relais(p29); //Aanmaken van een uitgangspin voor het aansturen van de Relais. |
Michielber | 5:6878defcfeb9 | 18 | PwmOut motorout(p25); //Aanmaken van PWM pin voor het aansturen van de servo-motor onder PWM. |
Michielber | 5:6878defcfeb9 | 19 | DS1307 my1307(p9,p10); //Opstarten van de DS1307 en de pinnen voor connectie mee geven. |
Michielber | 5:6878defcfeb9 | 20 | LocalFileSystem fs("webfs"); //Instellingen voor HTTP |
Michielber | 5:6878defcfeb9 | 21 | LocalFileSystem local("local"); //Instellingen voor HTTP, /local/Project.htm gaan we gebruiken, hierbij komt ons project lokaal te staan. |
Michielber | 5:6878defcfeb9 | 22 | //////////////////////////////////////////////////////////////////////////////////// |
Michielber | 5:6878defcfeb9 | 23 | int c=0; //Aanmaken van de c variable voor HTTP, hierbij geven we deze variable de waarde 0 mee. |
Michielber | 5:6878defcfeb9 | 24 | float waarde = 25; //Aanmaken van de waarde variable voor een instel temperatuur mee te geven. |
Michielber | 5:6878defcfeb9 | 25 | float temp2; // Aanmaken van de temp2 variable, deze dient voor de temperatuur van de tweede LM35 in op te slaan. |
Michielber | 5:6878defcfeb9 | 26 | bool aanuit = 0; //Aanmaken van een variable voor te kijken of het programma/MBED aan of uit staat. |
Michielber | 5:6878defcfeb9 | 27 | float temp1; //Aanmaken van de temp1 variable, deze dient voor de temperatuur van de eerste LM35 in op te slaan. // variable aanmaken voor temp van 1ste LM35 in te steken. // variable aanmaken voor temp van 2de LM35 in te steken. |
Michielber | 5:6878defcfeb9 | 28 | float afronden; //Aanmaken van de variable afronden, deze gaat dienen |
Michielber | 5:6878defcfeb9 | 29 | float hoekverdraaiing; //Aanmaken van de variable graden, deze dient voor het weergeven van onze temperatuur waarde in °C |
Michielber | 5:6878defcfeb9 | 30 | float verschilgraden; |
Michielber | 5:6878defcfeb9 | 31 | float stand; |
Michielber | 5:6878defcfeb9 | 32 | float lijn; |
Michielber | 5:6878defcfeb9 | 33 | float counter; //We gaan de variable counter aan maken voor het tellen van hoeveel keer we op hoger of lager hebben geduwd voor de ingestelde waarde te verhogen of verlagen. |
Michielber | 5:6878defcfeb9 | 34 | float flaginstellen = 0; //We gaan de variable flaginstellen aanmaken voor te gaan kijken of wij willen gaan instellen van de waardes of het programma willen uitvoeren. |
Michielber | 5:6878defcfeb9 | 35 | int sec = 0; //We gaan de variable sec aanmaken zodat we de seconden kunnen instellen die er op ons LCD moet komen te staan. |
Michielber | 5:6878defcfeb9 | 36 | int minuten = 0; //We gaan de variable minuten aanmaken zodat we de minuten kunnen instellen die er op ons LCD moet komen te staan. |
Michielber | 5:6878defcfeb9 | 37 | int hours = 0; //We gaan de variable hours aanmaken zodat we de uren kunnen instellen die er op ons LCD moet komen te staan. |
Michielber | 5:6878defcfeb9 | 38 | int day = 0; //We gaan de variable day aanmaken zodat we de dagen kunnen instellen die er op ons LCD moet komen te staan. |
Michielber | 5:6878defcfeb9 | 39 | int date = 0; //We gaan de variable date aanmaken zodat we de datum kunnen instellen die er op ons LCD moet komen te staan. |
Michielber | 5:6878defcfeb9 | 40 | int month = 0; //We gaan de variable month aanmaken zodat we de maanden kunnen instellen die er op ons LCD moet komen te staan. |
Michielber | 5:6878defcfeb9 | 41 | int year = 0; //We gaan de variable year aanmaken zodat we de jaren kunnen instellen die er op ons LCD moet komen te staan. |
Michielber | 0:f615d151a72c | 42 | int junk = 0; |
Michielber | 5:6878defcfeb9 | 43 | //////////////////////////////////////////////////////////////////////////////////// |
Michielber | 5:6878defcfeb9 | 44 | DigitalOut led1(LED1, "led1"); //We gaan een digitale uitgang aanroepen namelijk de eerste LED en geven deze de naam led1. |
Michielber | 5:6878defcfeb9 | 45 | //////////////////////////////////////////////////////////////////////////////////// |
Michielber | 1:691e8c893065 | 46 | /* HTTP Instellingen */ |
Michielber | 5:6878defcfeb9 | 47 | EthernetNetIf eth( //We gaan de functie van ethernet opendoen om hierin de gewenste adressen in te kunnen gaan voegen. |
Michielber | 5:6878defcfeb9 | 48 | IpAddr(192,168,1,2), //Ip adres toedienen waarop de MBED verbonden word. |
Michielber | 5:6878defcfeb9 | 49 | IpAddr(255,255,255,0), //Subnetmasker voor de MBED. |
Michielber | 5:6878defcfeb9 | 50 | IpAddr(192,168,1,1), //Het IP adres waarop we gaan schrijven. |
Michielber | 5:6878defcfeb9 | 51 | IpAddr(192,168,1,1)); //Het IP adres waarvan we gaan lezen. |
Michielber | 5:6878defcfeb9 | 52 | HTTPServer svr; // Opstarten van de HTTP server met de bovenliggende eigenschappen. |
Michielber | 0:f615d151a72c | 53 | /* END HTTP */ |
Michielber | 5:6878defcfeb9 | 54 | //////////////////////////////////////////////////////////////////////////////////// |
Michielber | 5:6878defcfeb9 | 55 | void Hoger(void) { //Interrupt voor de ingestelde waarde hoger te zetten a.d.h.v. een drukknop. |
Michielber | 5:6878defcfeb9 | 56 | flaginstellen = 1; //Vlag voor instellen op 1 zetten, door de vlag op 1 te zetten kunnen we gaan instellen ipv het programma te runnen. |
Michielber | 5:6878defcfeb9 | 57 | waarde += 0.5; //De ingestelde waarde gaan we verhogen met 0.5°C. |
Michielber | 5:6878defcfeb9 | 58 | counter = 0; //We gaan de counter terug op 0 zetten, waardoor we terug 0 keer hebben gedrukt op de verhoog knop. |
Michielber | 5:6878defcfeb9 | 59 | wait(0.5); //We gaan 0.5 seconden wachten voordat we verder gaan zodat we zeker zijn dat er geen twee keer is gedrukt op de verhoog knop. |
Michielber | 0:f615d151a72c | 60 | } |
Michielber | 5:6878defcfeb9 | 61 | //////////////////////////////////////////////////////////////////////////////////// |
Michielber | 5:6878defcfeb9 | 62 | void Lager(void) { //Interrupt voor de ingestelde waarde lager te zetten a.d.h.v. een drukknop. |
Michielber | 5:6878defcfeb9 | 63 | flaginstellen = 1; //Vlag voor instellen op 1 zetten, door de vlag op 1 te zetten kunnen we gaan instellen ipv het programma te runnen. |
Michielber | 5:6878defcfeb9 | 64 | waarde -= 0.5; //De ingestelde waarde gaan we verlagen met 0.5°C. |
Michielber | 5:6878defcfeb9 | 65 | counter = 0; //We gaan de counter terug op 0 zetten, waardoor we terug 0 keer hebben gedrukt op de verhoog knop. |
Michielber | 5:6878defcfeb9 | 66 | wait(0.5); //We gaan 0.5 seconden wachten voordat we verder gaan zodat we zeker zijn dat er geen twee keer is gedrukt op de verhoog knop. |
Michielber | 0:f615d151a72c | 67 | } |
Michielber | 5:6878defcfeb9 | 68 | //////////////////////////////////////////////////////////////////////////////////// |
Michielber | 5:6878defcfeb9 | 69 | void AanUit(void) { //Interrupt voor de aan/uit knop. |
Michielber | 5:6878defcfeb9 | 70 | if(aanuit == 0) //Als de aanuit knop gelijk is aan gedrukt dan gaan we de volgende code uitvoeren. |
Michielber | 5:6878defcfeb9 | 71 | { |
Michielber | 5:6878defcfeb9 | 72 | aanuit = 1; //We gaan de variable aanuit terug op 1 zetten na het drukken van de knop, hierdoor doen we dit omdat anders we nooit de toestand van deze knop kunnen veranderen. |
Michielber | 5:6878defcfeb9 | 73 | lcd.cls(); //We gaan het LCD refreshen of m.a.w. het LCD leegmaken. |
Michielber | 5:6878defcfeb9 | 74 | lcd.printf("Opstarten..."); //We gaan het op LCD de tekst met opstarten.... laten tonen om aan te geven dat we ons systeem hebben opgezet met het drukken op de aan/uit knop |
Michielber | 5:6878defcfeb9 | 75 | motorout = (90 * 0.000511 + 0.026); //Motor op 90 graden zetten, dit is de begin toestand. |
Michielber | 5:6878defcfeb9 | 76 | temp1 = (LM35_1 * 3.22*100); // omvormen van analoge waarde naar graden celcius |
Michielber | 5:6878defcfeb9 | 77 | afronden = 2*temp1; //We gaan de temperatuur maal 2 doen. |
Michielber | 5:6878defcfeb9 | 78 | afronden = rint(afronden); //Hierna gaan we het getal afronden, door het getal te vermenigvuldigen met 2 kunnen we beter afronden. |
Michielber | 5:6878defcfeb9 | 79 | waarde = afronden/2; //Temperatuur afronden op 0.5graden |
Michielber | 5:6878defcfeb9 | 80 | wait(2); //Hierna gaan we 2s wachten zodat de MBED alles juist kan instellen en zodat we op het LCD te zien krijgen dat ons programma opstart. |
Michielber | 5:6878defcfeb9 | 81 | } |
Michielber | 5:6878defcfeb9 | 82 | else //Als de toestand van de variable gelijk is aan 0, dan voeren we de code van hieronder uit. |
Michielber | 5:6878defcfeb9 | 83 | { |
Michielber | 5:6878defcfeb9 | 84 | aanuit = 0; //We gaan de variable terug op 0 instellen waardoor we terug de variable op 1 kunnen zetten indien we het programma terug willen opstarten. |
Michielber | 5:6878defcfeb9 | 85 | lcd.cls(); //We gaan het LCD refreshen of m.a.w. het LCD leegmaken. |
Michielber | 5:6878defcfeb9 | 86 | lcd.printf("Uitschakelen..."); //We gaan het op LCD de tekst met uitschakelen.... laten tonen om aan te geven dat we ons systeem hebben uitgezet met het drukken op de aan/uit knop |
Michielber | 5:6878defcfeb9 | 87 | motorout = (90 * 0.000511 + 0.026); //Motor op 90 graden zetten, dit is de begin toestand. |
Michielber | 5:6878defcfeb9 | 88 | wait(2); //Hierna gaan we 2s wachten zodat de MBED alles juist kan instellen en zodat we op het LCD te zien krijgen dat ons programma opstart. |
Michielber | 0:f615d151a72c | 89 | } |
Michielber | 5:6878defcfeb9 | 90 | } |
Michielber | 5:6878defcfeb9 | 91 | //////////////////////////////////////////////////////////////////////////////////// |
Michielber | 5:6878defcfeb9 | 92 | void temperatuurinlezen(void) { //Interrupt voor de temperatuur inlezen. |
Michielber | 5:6878defcfeb9 | 93 | temp1 = (LM35_1 * 3.22*100); // omvormen van analoge waarde naar graden celcius |
Michielber | 5:6878defcfeb9 | 94 | afronden = 2*temp1; //We gaan de temperatuur maal 2 doen. |
Michielber | 5:6878defcfeb9 | 95 | afronden = rint(afronden); //Hierna gaan we het getal afronden, door het getal te vermenigvuldigen met 2 kunnen we beter afronden. |
Michielber | 5:6878defcfeb9 | 96 | temp1 = afronden/2; //Temperatuur afronden op 0.5graden |
Michielber | 5:6878defcfeb9 | 97 | temp2 = (LM35_2 * 3.22*100); // omvormen van analoge waarde naar graden celcius |
Michielber | 5:6878defcfeb9 | 98 | afronden = 2*temp2; //We gaan de temperatuur maal 2 doen |
Michielber | 5:6878defcfeb9 | 99 | afronden = rint(afronden); //Hierna gaan we het getal afronden, door het getal te vermenigvuldigen met 2 kunnen we beter afronden. |
Michielber | 5:6878defcfeb9 | 100 | temp2 = afronden/2; //Temperatuur afronden op 0.5graden |
Michielber | 5:6878defcfeb9 | 101 | } |
Michielber | 5:6878defcfeb9 | 102 | //////////////////////////////////////////////////////////////////////////////////// |
Michielber | 5:6878defcfeb9 | 103 | void temperatuuruitsturen(void) { //Interrupt voor de temperatuur uitlezen. |
Michielber | 5:6878defcfeb9 | 104 | if(temp1 > (waarde + 1)) { //Als de waarde van de eerste LM35 hoger is als de ingestelde waarde |
Michielber | 5:6878defcfeb9 | 105 | LEDJE1 = 1; // Lamp1 op breadboard aan "Groen". |
Michielber | 5:6878defcfeb9 | 106 | LEDJE2 = 0; // Lamp2 op breadboard uit"Rood". |
Michielber | 5:6878defcfeb9 | 107 | lcd.cls(); //We gaan het LCD refreshen of m.a.w. het LCD leegmaken. |
Michielber | 5:6878defcfeb9 | 108 | lcd.printf("BIN: %5.2f C",temp1); //Temperatuur binnen op LCD |
Michielber | 5:6878defcfeb9 | 109 | lcd.locate(0,1); //We gaan ons eigen op de juiste lijn van het LCD zetten, namelijk op de tweede lijn. |
Michielber | 5:6878defcfeb9 | 110 | lcd.printf("BUI: %5.2f C",temp2); //Temperatuur buiten op LCD |
Michielber | 5:6878defcfeb9 | 111 | wait(0.3); //Wachttijd |
Michielber | 5:6878defcfeb9 | 112 | relais = 0; //We gaan de relais op 0 zetten waardoor deze uitschakelt en het bijhorend LEDJE gaat doven. |
Michielber | 5:6878defcfeb9 | 113 | } |
Michielber | 5:6878defcfeb9 | 114 | else if(temp1 <= (waarde - 1) ) { //Als de waarde van de eerste LM35 lager is als de ingestelde waarde |
Michielber | 5:6878defcfeb9 | 115 | LEDJE1 = 0; // Lamp1 op breadboard uit "Groen". |
Michielber | 5:6878defcfeb9 | 116 | LEDJE2 = 1; // Lamp2 op breadboard aan "Rood". |
Michielber | 5:6878defcfeb9 | 117 | lcd.cls(); //We gaan het LCD refreshen of m.a.w. het LCD leegmaken. |
Michielber | 5:6878defcfeb9 | 118 | lcd.printf("BIN: %5.2f C",temp1); //Temperatuur binnen op LCD |
Michielber | 5:6878defcfeb9 | 119 | lcd.locate(0,1); //We gaan ons eigen op de juiste lijn van het LCD zetten, namelijk op de tweede lijn. |
Michielber | 5:6878defcfeb9 | 120 | lcd.printf("BUI: %5.2f C",temp2); //Temperatuur buiten op LCD |
Michielber | 5:6878defcfeb9 | 121 | wait(0.3); //Wachttijd |
Michielber | 5:6878defcfeb9 | 122 | relais = 1; //We gaan de relais op 1 zetten waardoor deze inschakelt en het bijhorend LEDJE gaat aangaan. |
Michielber | 5:6878defcfeb9 | 123 | } |
Michielber | 5:6878defcfeb9 | 124 | } |
Michielber | 5:6878defcfeb9 | 125 | //////////////////////////////////////////////////////////////////////////////////// |
Michielber | 5:6878defcfeb9 | 126 | void motor(float graden) { //Interrupt voor de toestand van de servo-motor. |
Michielber | 5:6878defcfeb9 | 127 | if ( (graden > 20) && (graden < 160) ) { //Als de ingegeven graden groter is als de begin waarde en alsook kleiner is als de grootste waarde dan de code van hieronder uitoeren. |
Michielber | 5:6878defcfeb9 | 128 | motorout = (graden * 0.000511 + 0.026); //We gaan de motor laten draaien naar de gewenste graden die afhankelijk is van het temperatuurverschil. |
Michielber | 5:6878defcfeb9 | 129 | } |
Michielber | 5:6878defcfeb9 | 130 | else if (graden >= 160){ //Als het temperatuur verschil groter word als 160° dan gaan we de motor op zijn laatste positie namelijk 160° laten staan waardoor we zien dat we een maximaal temperatuurverschil hebben. |
Michielber | 5:6878defcfeb9 | 131 | motorout = (160 * 0.000511 + 0.026); //Beveiliging => niet boven 160graden |
Michielber | 5:6878defcfeb9 | 132 | } |
Michielber | 5:6878defcfeb9 | 133 | else { |
Michielber | 5:6878defcfeb9 | 134 | motorout = (20 * 0.000511 + 0.026); //Beveiliging => niet onder 20 graden |
Michielber | 5:6878defcfeb9 | 135 | } |
Michielber | 5:6878defcfeb9 | 136 | return; |
Michielber | 5:6878defcfeb9 | 137 | } |
Michielber | 5:6878defcfeb9 | 138 | //////////////////////////////////////////////////////////////////////////////////// |
Michielber | 5:6878defcfeb9 | 139 | void initHTTP(void) { //Interrupt voor het HTTP protocol. |
Michielber | 5:6878defcfeb9 | 140 | printf("Start initialisatie HTTP\r\n"); //We gaan op het LCD schrijven dat we bezigz zijn met de intialisering van het LCD |
Michielber | 5:6878defcfeb9 | 141 | EthernetErr ethErr; //Error variabele aanmaken |
Michielber | 0:f615d151a72c | 142 | int count = 0; |
Michielber | 0:f615d151a72c | 143 | do { |
Michielber | 0:f615d151a72c | 144 | printf("Setting up %d...\n\r", ++count); |
Michielber | 5:6878defcfeb9 | 145 | ethErr = eth.setup(); //Ethernet poort starten, variabele toekennen aan de setup |
Michielber | 5:6878defcfeb9 | 146 | if (ethErr) printf("Timeout\n\r", ethErr); //Als er een fout is timeout geven |
Michielber | 5:6878defcfeb9 | 147 | } |
Michielber | 5:6878defcfeb9 | 148 | while (ethErr != ETH_OK); //Zolang er geen fout is |
Michielber | 0:f615d151a72c | 149 | printf("Connected OK\n\r"); |
Michielber | 5:6878defcfeb9 | 150 | const char* hwAddr = eth.getHwAddr(); //Adres krijgen |
Michielber | 5:6878defcfeb9 | 151 | IpAddr ethIp = eth.getIp(); //Ip adres opvragen |
Michielber | 0:f615d151a72c | 152 | printf("IP address : %d.%d.%d.%d\n\r", ethIp[0], ethIp[1], ethIp[2], ethIp[3]); |
Michielber | 5:6878defcfeb9 | 153 | svr.addHandler<SimpleHandler>("/hello"); //HTTPS server request handler |
Michielber | 5:6878defcfeb9 | 154 | svr.addHandler<FSHandler>(""); //Handler voor file weg te schrijven |
Michielber | 5:6878defcfeb9 | 155 | svr.bind(80); //Server binden aan poort 80 |
Michielber | 5:6878defcfeb9 | 156 | printf("Server listening\n\r"); //Laten zien dat onze server luistert, waardoor we kunnen zenden van data. |
Michielber | 5:6878defcfeb9 | 157 | } |
Michielber | 5:6878defcfeb9 | 158 | //////////////////////////////////////////////////////////////////////////////////// |
Michielber | 5:6878defcfeb9 | 159 | void klokophalen() { //Interrupt voor de tijd op ons LCD te krijgen. |
Michielber | 5:6878defcfeb9 | 160 | my1307.gettime(&sec, &minuten, &hours, &day, &date, &month, &year); //De tijden van de klok ophalen en laten tonen op het LCD |
Michielber | 5:6878defcfeb9 | 161 | } |
Michielber | 5:6878defcfeb9 | 162 | //////////////////////////////////////////////////////////////////////////////////// |
Michielber | 5:6878defcfeb9 | 163 | void klokuitsturen() { //Interrupt voor de CLK. |
Michielber | 5:6878defcfeb9 | 164 | klokophalen(); //De tijden van de klok ophalen |
Michielber | 5:6878defcfeb9 | 165 | lcd.cls(); //We gaan het LCD refreshen of m.a.w. het LCD leegmaken.kunt g |
Michielber | 5:6878defcfeb9 | 166 | lcd.locate(0,0); //Eerste lijn van het LCD |
Michielber | 5:6878defcfeb9 | 167 | lcd.printf("%d:%d:%d",hours,minuten,sec); //Tijd op LCD zetten |
Michielber | 5:6878defcfeb9 | 168 | lcd.locate(0,1); //Tweede lijn van het LCD |
Michielber | 5:6878defcfeb9 | 169 | lcd.printf("%d/%d/%d",date,month,year); //Datum op LCD zetten |
Michielber | 5:6878defcfeb9 | 170 | } |
Michielber | 5:6878defcfeb9 | 171 | //////////////////////////////////////////////////////////////////////////////////// |
Michielber | 5:6878defcfeb9 | 172 | void hoekverdraaiingbepalen(float verschilgraden,float temperatuurbuiten) { |
Michielber | 5:6878defcfeb9 | 173 | float startstand; |
Michielber | 0:f615d151a72c | 174 | |
Michielber | 5:6878defcfeb9 | 175 | //Bepalen op welke stand hij staat (Waar hij op de belastingslijn is) |
Michielber | 5:6878defcfeb9 | 176 | if (verschilgraden < -1.5) { |
Michielber | 5:6878defcfeb9 | 177 | stand = -2; |
Michielber | 5:6878defcfeb9 | 178 | } |
Michielber | 5:6878defcfeb9 | 179 | else if( (-1.5 <= verschilgraden) && (verschilgraden < -0.5) ){ |
Michielber | 5:6878defcfeb9 | 180 | stand = -1; |
Michielber | 5:6878defcfeb9 | 181 | } |
Michielber | 5:6878defcfeb9 | 182 | else if ( (-0.5 <= verschilgraden) && (verschilgraden <= 0.5) ) { |
Michielber | 5:6878defcfeb9 | 183 | stand = 0; |
Michielber | 5:6878defcfeb9 | 184 | } |
Michielber | 5:6878defcfeb9 | 185 | else if ( (0.5 < verschilgraden) && (verschilgraden <= 1.5) ) { |
Michielber | 5:6878defcfeb9 | 186 | stand = 1; |
Michielber | 5:6878defcfeb9 | 187 | } |
Michielber | 5:6878defcfeb9 | 188 | else { |
Michielber | 5:6878defcfeb9 | 189 | stand = 2; |
Michielber | 5:6878defcfeb9 | 190 | } |
Michielber | 0:f615d151a72c | 191 | |
Michielber | 5:6878defcfeb9 | 192 | //Bepalen van belastingslijn// |
Michielber | 5:6878defcfeb9 | 193 | printf("Temperatuurbuiten: %f\n\r", temperatuurbuiten); |
Michielber | 5:6878defcfeb9 | 194 | if ( temperatuurbuiten < 23 ){ |
Michielber | 5:6878defcfeb9 | 195 | startstand = 125; //Belastingslijn 1 |
Michielber | 5:6878defcfeb9 | 196 | printf("Temperatuurbuiten is kleiner dan -5 graden.\r\n"); |
Michielber | 5:6878defcfeb9 | 197 | } |
Michielber | 5:6878defcfeb9 | 198 | else if ( (23 <= temperatuurbuiten) && (temperatuurbuiten <= 25) ){ |
Michielber | 5:6878defcfeb9 | 199 | startstand = 90; //Belastingslijn 2 |
Michielber | 5:6878defcfeb9 | 200 | printf("Temperatuurbuiten is tussen -5 en 10 graden.\r\n"); |
Michielber | 5:6878defcfeb9 | 201 | } |
Michielber | 5:6878defcfeb9 | 202 | else { |
Michielber | 5:6878defcfeb9 | 203 | startstand = 55; //Belastingslijn 3 |
Michielber | 5:6878defcfeb9 | 204 | printf("Temperatuurbuiten is groter dan 10 graden.\r\n"); |
Michielber | 5:6878defcfeb9 | 205 | } |
Michielber | 5:6878defcfeb9 | 206 | |
Michielber | 5:6878defcfeb9 | 207 | //Bepalen van graden// |
Michielber | 5:6878defcfeb9 | 208 | hoekverdraaiing = startstand + (stand * 35); |
Michielber | 5:6878defcfeb9 | 209 | if (hoekverdraaiing > 160) { //Beveiliging |
Michielber | 5:6878defcfeb9 | 210 | hoekverdraaiing = 160; |
Michielber | 5:6878defcfeb9 | 211 | } |
Michielber | 5:6878defcfeb9 | 212 | else if (hoekverdraaiing < 20){ //Beveiliging |
Michielber | 5:6878defcfeb9 | 213 | hoekverdraaiing = 20; |
Michielber | 5:6878defcfeb9 | 214 | } |
Michielber | 0:f615d151a72c | 215 | |
Michielber | 0:f615d151a72c | 216 | } |
Michielber | 5:6878defcfeb9 | 217 | //////////////////////////////////////////////////////////////////////////////////// |
Michielber | 0:f615d151a72c | 218 | int main(void) |
Michielber | 0:f615d151a72c | 219 | { |
Michielber | 0:f615d151a72c | 220 | /* START INITIALISATIE */ |
Michielber | 5:6878defcfeb9 | 221 | knopHOGER.rise(&Hoger); //Knop hoger instellen. |
Michielber | 5:6878defcfeb9 | 222 | knopLAGER.rise(&Lager); //Knop lager inestellen |
Michielber | 5:6878defcfeb9 | 223 | aanuitknop.rise(&AanUit); //Knop aan&uit instellen |
Michielber | 5:6878defcfeb9 | 224 | initHTTP(); //HTTP initialiseren |
Michielber | 5:6878defcfeb9 | 225 | Timer tm; //Timer selecteren |
Michielber | 5:6878defcfeb9 | 226 | tm.start(); //Timer starten |
Michielber | 0:f615d151a72c | 227 | /* STOP INITIALISATIE */ |
Michielber | 5:6878defcfeb9 | 228 | while(true) { //While lus |
Michielber | 5:6878defcfeb9 | 229 | if( (aanuit == 1) && (flaginstellen == 0) ) { //open if functie |
Michielber | 5:6878defcfeb9 | 230 | temperatuurinlezen(); //Inlezen van temperatuur |
Michielber | 5:6878defcfeb9 | 231 | temperatuuruitsturen(); //Uitsturen van temperatuur |
Michielber | 5:6878defcfeb9 | 232 | klokophalen(); //Ophalen van de klok waarde voor datum en tijd |
Michielber | 5:6878defcfeb9 | 233 | /* START HTTP */ |
Michielber | 5:6878defcfeb9 | 234 | printf("Net poll start\r\n"); //Printen op de Computer voor Theratherm |
Michielber | 5:6878defcfeb9 | 235 | Net::poll(); |
Michielber | 5:6878defcfeb9 | 236 | if (tm.read() > 0.5) { //Open IF functie |
Michielber | 5:6878defcfeb9 | 237 | led1 = !led1; //Led aan of uit sturen |
Michielber | 5:6878defcfeb9 | 238 | tm.start(); //Start timer |
Michielber | 5:6878defcfeb9 | 239 | c++; //Optellen zodat om de 1s de gegevens worden doorgestuurd |
Michielber | 0:f615d151a72c | 240 | } |
Michielber | 5:6878defcfeb9 | 241 | printf("Net poll gedaan\r\n"); |
Michielber | 5:6878defcfeb9 | 242 | if (c==1) { //Als we gaan zenden dan gaan we de code van hieronder uitvoeren tijdens het zenden van de data. |
Michielber | 0:f615d151a72c | 243 | printf("Ik probeer nu de file te openen..\r\n"); |
Michielber | 0:f615d151a72c | 244 | //FILE *fp = fopen("/webfs/mydata.htm","w"); |
Michielber | 5:6878defcfeb9 | 245 | FILE *fp = fopen("/local/Project.htm", "w"); // Open "Test.htm" on the local file system for writing |
Michielber | 5:6878defcfeb9 | 246 | printf("File geopend!\r\n"); //Print |
Michielber | 5:6878defcfeb9 | 247 | fprintf(fp,"<HTML>\r\n"); //HTML opstarten |
Michielber | 5:6878defcfeb9 | 248 | fprintf(fp,"<HEAD>\r\n"); //Head van het bestand open zetten. |
Michielber | 5:6878defcfeb9 | 249 | fprintf(fp,"<script type=\"text/javascript\">window.setTimeout(function(){ document.location.reload(true); }, 3000);</script>");//Script laden |
Michielber | 5:6878defcfeb9 | 250 | fprintf(fp,"<link rel=\"stylesheet\" href=\"https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css\">");//Stijl van het document laden |
Michielber | 5:6878defcfeb9 | 251 | fprintf(fp,"<style>\r\n");//De style toepassen die is opgevraagd |
Michielber | 5:6878defcfeb9 | 252 | fprintf(fp,"tbody {background:#FF6666;}");//Achtergrond veranderen van kleur |
Michielber | 5:6878defcfeb9 | 253 | fprintf(fp,"</style>\r\n");//De aangemaakt stijl terug sluiten |
Michielber | 5:6878defcfeb9 | 254 | fprintf(fp,"</HEAD>\r\n");//Sluiten van de HEAD |
Michielber | 5:6878defcfeb9 | 255 | fprintf(fp,"<BODY>\r\n");//Sluiten van de BODY |
Michielber | 3:201eb46eb4ab | 256 | /* TEST BOOTSTRAP */ |
Michielber | 3:201eb46eb4ab | 257 | fprintf(fp,"<div class=\"container\">\r\n"); |
Michielber | 3:201eb46eb4ab | 258 | fprintf(fp,"<div class=\"panel panel-success\">"); |
Michielber | 5:6878defcfeb9 | 259 | fprintf(fp,"<div class=\"panel-heading\">%d:%d:%d %d/%d/%d</div>",hours,minuten,sec,date,month,year); |
Michielber | 5:6878defcfeb9 | 260 | fprintf(fp,"<table class=\"table\">");//Aanmaken van tabel |
Michielber | 3:201eb46eb4ab | 261 | fprintf(fp,"<thead><tr><th>Temperatuur binnen</th><th>Temperatuur buiten</th></tr></thead>"); |
Michielber | 5:6878defcfeb9 | 262 | fprintf(fp,"<tbody><tr><td>%.1f °C</td>",temp1);//Kiezen waar we temp1 in de tabel gaan steken |
Michielber | 5:6878defcfeb9 | 263 | fprintf(fp,"<td>%.1f °C</td></tr></tbody></table></div>",temp2);//Kiezen waar we temp2 in de tabel gaan steken. |
Michielber | 3:201eb46eb4ab | 264 | /* END TEST BOOTSTRAP */ |
Michielber | 3:201eb46eb4ab | 265 | fprintf(fp,"</div>"); |
Michielber | 0:f615d151a72c | 266 | printf("Variabelen printen\r\n"); |
Michielber | 0:f615d151a72c | 267 | fprintf(fp,"</BODY>\r\n"); |
Michielber | 0:f615d151a72c | 268 | fprintf(fp,"</HTML>\r\n"); |
Michielber | 0:f615d151a72c | 269 | printf("Sessie stoppen \r\n"); |
Michielber | 5:6878defcfeb9 | 270 | fclose(fp);//Stop schrijven |
Michielber | 0:f615d151a72c | 271 | printf("staat online\r\n"); |
Michielber | 0:f615d151a72c | 272 | c=0; |
Michielber | 0:f615d151a72c | 273 | } |
Michielber | 0:f615d151a72c | 274 | /* EINDE HTTP */ |
Michielber | 5:6878defcfeb9 | 275 | /* Motor sturing hier */ |
Michielber | 5:6878defcfeb9 | 276 | verschilgraden = waarde - temp1; |
Michielber | 5:6878defcfeb9 | 277 | printf("Verschilgraden: %f\n\r", verschilgraden); |
Michielber | 5:6878defcfeb9 | 278 | hoekverdraaiingbepalen(verschilgraden,temp2); |
Michielber | 5:6878defcfeb9 | 279 | printf("Stand: %f\n\r", stand); |
Michielber | 5:6878defcfeb9 | 280 | printf("Hoekverdraaiing: %f\n\r", hoekverdraaiing); |
Michielber | 5:6878defcfeb9 | 281 | wait(1); |
Michielber | 5:6878defcfeb9 | 282 | motor(hoekverdraaiing); //Motor aansturen |
Michielber | 5:6878defcfeb9 | 283 | /* Stop motor sturing hier */ |
Michielber | 5:6878defcfeb9 | 284 | } |
Michielber | 5:6878defcfeb9 | 285 | else if( (aanuit == 1) && (flaginstellen == 1) ) { //open else if |
Michielber | 5:6878defcfeb9 | 286 | /* Programmatie instellen */ |
Michielber | 5:6878defcfeb9 | 287 | printf("Programma instelmodus aan\r\n"); |
Michielber | 5:6878defcfeb9 | 288 | while (counter <= 3) { |
Michielber | 5:6878defcfeb9 | 289 | lcd.cls(); //We gaan het LCD refreshen of m.a.w. het LCD leegmaken. |
Michielber | 5:6878defcfeb9 | 290 | lcd.printf("BIN: %5.2f C",waarde); //Printen van de binnen temp |
Michielber | 5:6878defcfeb9 | 291 | lcd.locate(0,1); //Tweede lijn van LCD |
Michielber | 5:6878defcfeb9 | 292 | lcd.printf("BUI: %5.2f C",temp2); // Printen van de buiten temp |
Michielber | 5:6878defcfeb9 | 293 | wait(0.8); //Wachttijd |
Michielber | 5:6878defcfeb9 | 294 | lcd.cls(); //We gaan het LCD refreshen of m.a.w. het LCD leegmaken. |
Michielber | 5:6878defcfeb9 | 295 | lcd.printf(""); //Lcd laten flikkeren voor instellen |
Michielber | 5:6878defcfeb9 | 296 | lcd.locate(0,1); // Tweede lijn van het LCd |
Michielber | 5:6878defcfeb9 | 297 | lcd.printf("BUI: %5.2f C",temp2); //Printen van de buiten temp |
Michielber | 5:6878defcfeb9 | 298 | wait(0.2); //Wachttijd |
Michielber | 5:6878defcfeb9 | 299 | counter++; //Counter incrementeren met 1 |
Michielber | 5:6878defcfeb9 | 300 | } |
Michielber | 5:6878defcfeb9 | 301 | flaginstellen = 0; //Instellen stoppen |
Michielber | 5:6878defcfeb9 | 302 | } |
Michielber | 5:6878defcfeb9 | 303 | else { //open else |
Michielber | 5:6878defcfeb9 | 304 | lcd.cls(); //We gaan het LCD refreshen of m.a.w. het LCD leegmaken. |
Michielber | 5:6878defcfeb9 | 305 | klokuitsturen(); //De waarde van de klok op de LCD zetten |
Michielber | 5:6878defcfeb9 | 306 | printf("Staat uit\r\n"); |
Michielber | 5:6878defcfeb9 | 307 | } //sluit else |
Michielber | 5:6878defcfeb9 | 308 | } |
Michielber | 5:6878defcfeb9 | 309 | } |