Berckvens Michiel & Basteyns Jonas

Dependencies:   DS1307 TextLCD mbed

Committer:
Michielber
Date:
Thu Dec 04 10:47:49 2014 +0000
Revision:
2:6330f557c82e
Parent:
1:691e8c893065
Child:
3:201eb46eb4ab
4/12/2014 Berckvens Michiel & Basteyns Jonas

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Michielber 0:f615d151a72c 1 #include "mbed.h"
Michielber 0:f615d151a72c 2 #include "TextLCD.h"
Michielber 0:f615d151a72c 3 #include "ds1307.h"
Michielber 0:f615d151a72c 4 #include "EthernetNetIf.h"
Michielber 0:f615d151a72c 5 //#include "HTTPClient.h"
Michielber 0:f615d151a72c 6 //#include "NTPClient.h"
Michielber 0:f615d151a72c 7 #include "HTTPServer.h"
Michielber 0:f615d151a72c 8 #include "RPCFunction.h"
Michielber 0:f615d151a72c 9
Michielber 0:f615d151a72c 10 TextLCD lcd(p21, p22, p23, p24, p27, p28); // rs, e, d4-d7
Michielber 0:f615d151a72c 11 AnalogIn LM35_1(p19); // Analoge ingang voor LM35 toewijzen op welke pin.
Michielber 0:f615d151a72c 12 AnalogIn LM35_2(p20); // Analoge ingang voor LM35 toewijzen op welke pin.
Michielber 0:f615d151a72c 13 Serial pc(USBTX, USBRX); //Zorgen dat we een seriele communicatie tussen computer en MBED kunnen opzetten.
Michielber 0:f615d151a72c 14 DigitalOut LEDJE1 (p6); // Uitgang voor LED op breadboard.
Michielber 0:f615d151a72c 15 DigitalOut LEDJE2 (p7); // Uitgang voor LED op breadboard.
Michielber 0:f615d151a72c 16 InterruptIn knopHOGER(p8); // Aanmaken van ingang voor drukknopje voor hogere temp
Michielber 0:f615d151a72c 17 InterruptIn knopLAGER(p30); // Aanmaken van ingang voor drukknopje voor lagere temp
Michielber 0:f615d151a72c 18 DigitalOut myled1(LED1); // Aanmaken van LED van MBED te gerbuiken voor hogere temp
Michielber 0:f615d151a72c 19 DigitalOut myled2(LED2); // Aanmaken van LED van MBED te gerbuiken voor lagere temp
Michielber 0:f615d151a72c 20 InterruptIn aanuitknop(p5);
Michielber 0:f615d151a72c 21 DigitalOut relais(p29);
Michielber 0:f615d151a72c 22 PwmOut motorout(p25);
Michielber 0:f615d151a72c 23 DS1307 my1307(p9,p10); // start DS1307 class and give it pins for connections of the DS1307 device
Michielber 0:f615d151a72c 24
Michielber 1:691e8c893065 25 LocalFileSystem fs("webfs"); //Instellingen voor HTTP
Michielber 1:691e8c893065 26 LocalFileSystem local("local"); //Instellingen voor HTTP, /local/Project.htm gaan we gebruiken
Michielber 0:f615d151a72c 27
Michielber 0:f615d151a72c 28 int c=0;
Michielber 0:f615d151a72c 29 float waarde = 25;
Michielber 0:f615d151a72c 30 float temp2;
Michielber 0:f615d151a72c 31 bool aanuit = 0;
Michielber 0:f615d151a72c 32 float temp1; // variable aanmaken voor temp van 1ste LM35 in te steken. // variable aanmaken voor temp van 2de LM35 in te steken.
Michielber 0:f615d151a72c 33 float afronden;
Michielber 0:f615d151a72c 34 float graden;
Michielber 0:f615d151a72c 35 float counter;
Michielber 0:f615d151a72c 36 float flaginstellen = 0;
Michielber 0:f615d151a72c 37 int sec = 0;
Michielber 0:f615d151a72c 38 int minuten = 0;
Michielber 0:f615d151a72c 39 int hours = 0;
Michielber 0:f615d151a72c 40 int day = 0;
Michielber 0:f615d151a72c 41 int date = 0;
Michielber 0:f615d151a72c 42 int month = 0;
Michielber 0:f615d151a72c 43 int year = 0;
Michielber 0:f615d151a72c 44 int junk = 0;
Michielber 0:f615d151a72c 45
Michielber 0:f615d151a72c 46 DigitalOut led1(LED1, "led1");
Michielber 0:f615d151a72c 47
Michielber 0:f615d151a72c 48
Michielber 1:691e8c893065 49 /* HTTP Instellingen */
Michielber 0:f615d151a72c 50
Michielber 0:f615d151a72c 51 EthernetNetIf eth(
Michielber 1:691e8c893065 52 IpAddr(192,168,1,2), //Ip adress toedienen
Michielber 1:691e8c893065 53 IpAddr(255,255,255,0), //Subnetmasker
Michielber 0:f615d151a72c 54 IpAddr(192,168,1,1),
Michielber 0:f615d151a72c 55 IpAddr(192,168,1,1));
Michielber 0:f615d151a72c 56 //HTTPClient http;
Michielber 0:f615d151a72c 57 //NTPClient ntp;
Michielber 0:f615d151a72c 58 HTTPServer svr;
Michielber 0:f615d151a72c 59
Michielber 0:f615d151a72c 60
Michielber 0:f615d151a72c 61 /* END HTTP */
Michielber 0:f615d151a72c 62
Michielber 1:691e8c893065 63 void Hoger(void) { //Interrupt voor de ingestelde waarde hoger te zetten
Michielber 1:691e8c893065 64 flaginstellen = 1; //Vlag voor instellen op 1 zetten
Michielber 1:691e8c893065 65 waarde += 0.5; //Waarde hoger zetten
Michielber 1:691e8c893065 66 counter = 0; //Insteltijd resetten
Michielber 0:f615d151a72c 67 wait(0.5);
Michielber 0:f615d151a72c 68
Michielber 0:f615d151a72c 69 }
Michielber 0:f615d151a72c 70
Michielber 1:691e8c893065 71 void Lager(void) { //Interrupt voor de ingestelde waarde hoger te zetten
Michielber 1:691e8c893065 72 flaginstellen = 1; //Vlag voor instellen op 1 zetten
Michielber 1:691e8c893065 73 waarde -= 0.5; //Waarde lager zetten
Michielber 1:691e8c893065 74 counter = 0; //Insteltijd resetten
Michielber 0:f615d151a72c 75 wait(0.5);
Michielber 0:f615d151a72c 76 }
Michielber 0:f615d151a72c 77
Michielber 0:f615d151a72c 78 void AanUit(void) {
Michielber 0:f615d151a72c 79
Michielber 0:f615d151a72c 80 if(aanuit == 0) {
Michielber 0:f615d151a72c 81
Michielber 0:f615d151a72c 82 aanuit = 1;
Michielber 0:f615d151a72c 83 lcd.cls();
Michielber 0:f615d151a72c 84 lcd.printf("Opstarten...");
Michielber 1:691e8c893065 85 motorout = (20 * 0.000511 + 0.026); //Motor op 20 graden zetten
Michielber 0:f615d151a72c 86 temp1 = (LM35_1 * 3.22*100); // omvormen van analoge waarde naar graden celcius
Michielber 0:f615d151a72c 87 afronden = 2*temp1;
Michielber 0:f615d151a72c 88 afronden = rint(afronden);
Michielber 0:f615d151a72c 89 waarde = afronden/2;
Michielber 0:f615d151a72c 90 wait(2);
Michielber 0:f615d151a72c 91 }else {
Michielber 0:f615d151a72c 92
Michielber 0:f615d151a72c 93 aanuit = 0;
Michielber 0:f615d151a72c 94 lcd.cls();
Michielber 0:f615d151a72c 95 lcd.printf("Uitschakelen...");
Michielber 1:691e8c893065 96 motorout = (20 * 0.000511 + 0.026); //Motor terug op 20 graden zetten
Michielber 0:f615d151a72c 97 wait(2);
Michielber 0:f615d151a72c 98 }
Michielber 0:f615d151a72c 99
Michielber 0:f615d151a72c 100 }
Michielber 0:f615d151a72c 101
Michielber 0:f615d151a72c 102 void temperatuurinlezen(void) {
Michielber 0:f615d151a72c 103 temp1 = (LM35_1 * 3.22*100); // omvormen van analoge waarde naar graden celcius
Michielber 0:f615d151a72c 104 afronden = 2*temp1;
Michielber 0:f615d151a72c 105 afronden = rint(afronden);
Michielber 1:691e8c893065 106 temp1 = afronden/2; //Temperatuur afronden op 0.5graden
Michielber 0:f615d151a72c 107
Michielber 0:f615d151a72c 108 temp2 = (LM35_2 * 3.22*100); // omvormen van analoge waarde naar grade celcius
Michielber 0:f615d151a72c 109 afronden = 2*temp2;
Michielber 1:691e8c893065 110 afronden = rint(afronden);
Michielber 1:691e8c893065 111 temp2 = afronden/2; //Temperatuur afronden op 0.5graden
Michielber 0:f615d151a72c 112 }
Michielber 0:f615d151a72c 113
Michielber 0:f615d151a72c 114 void temperatuuruitsturen(void) {
Michielber 0:f615d151a72c 115 if(temp1 > (waarde + 1)) { //Als de waarde van de eerste LM35 hoger is als de ingestelde waarde
Michielber 0:f615d151a72c 116 LEDJE1 = 1; // Lamp1 op breadboard aan.
Michielber 0:f615d151a72c 117 LEDJE2 = 0; // Lamp2 op breadboard uit.
Michielber 0:f615d151a72c 118 lcd.cls();
Michielber 1:691e8c893065 119 lcd.printf("BIN: %5.2f C",temp1); //Temperatuur binnen op LCD
Michielber 0:f615d151a72c 120 lcd.locate(0,1);
Michielber 1:691e8c893065 121 lcd.printf("BUI: %5.2f C",temp2); //Temperatuur buiten op LCD
Michielber 0:f615d151a72c 122 wait(0.3);
Michielber 0:f615d151a72c 123 relais = 0;
Michielber 0:f615d151a72c 124 // Een halve seconden wachten, zodat we onze temperatuur kunnen aflezen op het scherm.
Michielber 0:f615d151a72c 125 } else if(temp1 <= (waarde - 1) ) { //Als de waarde van de eerste LM35 lager is als de ingestelde waarde
Michielber 0:f615d151a72c 126 LEDJE1 = 0; // Lamp1 op breadboard uit.
Michielber 0:f615d151a72c 127 LEDJE2 = 1; // Lamp2 op breadboard aan.
Michielber 0:f615d151a72c 128 lcd.cls();
Michielber 0:f615d151a72c 129 lcd.printf("BIN: %5.2f C",temp1);
Michielber 0:f615d151a72c 130 lcd.locate(0,1);
Michielber 0:f615d151a72c 131 lcd.printf("BUI: %5.2f C",temp2);
Michielber 0:f615d151a72c 132 wait(0.3); // Een halve seconden wachten, zodat we onze temperatuur kunnen aflezen op het scherm.
Michielber 0:f615d151a72c 133 relais = 1;
Michielber 0:f615d151a72c 134 }
Michielber 0:f615d151a72c 135
Michielber 0:f615d151a72c 136 }
Michielber 0:f615d151a72c 137
Michielber 0:f615d151a72c 138 void motor(float graden) {
Michielber 0:f615d151a72c 139
Michielber 0:f615d151a72c 140 if ( (graden > 20) && (graden < 160) ) {
Michielber 0:f615d151a72c 141 motorout = (graden * 0.000511 + 0.026);
Michielber 0:f615d151a72c 142 }
Michielber 0:f615d151a72c 143 else if (graden >= 160){
Michielber 1:691e8c893065 144 motorout = (160 * 0.000511 + 0.026); //Beveiliging => niet boven 160graden
Michielber 0:f615d151a72c 145 }
Michielber 0:f615d151a72c 146 else {
Michielber 1:691e8c893065 147 motorout = (20 * 0.000511 + 0.026); //Beveiliging => niet onder 20 graden
Michielber 0:f615d151a72c 148 }
Michielber 0:f615d151a72c 149 return;
Michielber 0:f615d151a72c 150 }
Michielber 0:f615d151a72c 151
Michielber 0:f615d151a72c 152 void initHTTP(void) {
Michielber 0:f615d151a72c 153 printf("Start initialisatie HTTP\r\n");
Michielber 0:f615d151a72c 154 EthernetErr ethErr;
Michielber 0:f615d151a72c 155 int count = 0;
Michielber 0:f615d151a72c 156 do {
Michielber 0:f615d151a72c 157 printf("Setting up %d...\n\r", ++count);
Michielber 0:f615d151a72c 158 ethErr = eth.setup();
Michielber 0:f615d151a72c 159 if (ethErr) printf("Timeout\n\r", ethErr);
Michielber 0:f615d151a72c 160 } while (ethErr != ETH_OK);
Michielber 0:f615d151a72c 161
Michielber 0:f615d151a72c 162 printf("Connected OK\n\r");
Michielber 0:f615d151a72c 163 const char* hwAddr = eth.getHwAddr();
Michielber 0:f615d151a72c 164
Michielber 0:f615d151a72c 165 IpAddr ethIp = eth.getIp();
Michielber 0:f615d151a72c 166 printf("IP address : %d.%d.%d.%d\n\r", ethIp[0], ethIp[1], ethIp[2], ethIp[3]);
Michielber 0:f615d151a72c 167
Michielber 0:f615d151a72c 168 //LocalFileSystem fs("webfs");
Michielber 0:f615d151a72c 169
Michielber 0:f615d151a72c 170 svr.addHandler<SimpleHandler>("/hello");
Michielber 0:f615d151a72c 171 svr.addHandler<FSHandler>("");
Michielber 0:f615d151a72c 172
Michielber 0:f615d151a72c 173 svr.bind(80);
Michielber 0:f615d151a72c 174 printf("Server listening\n\r");
Michielber 0:f615d151a72c 175
Michielber 0:f615d151a72c 176 }
Michielber 0:f615d151a72c 177
Michielber 0:f615d151a72c 178 void klokophalen() {
Michielber 2:6330f557c82e 179 my1307.gettime(&sec, &minuten, &hours, &day, &date, &month, &year); //De tijden van de klok ophalen
Michielber 0:f615d151a72c 180
Michielber 0:f615d151a72c 181 }
Michielber 0:f615d151a72c 182
Michielber 0:f615d151a72c 183 void klokuitsturen() {
Michielber 2:6330f557c82e 184 klokophalen(); //De tijden van de klok ophalen
Michielber 0:f615d151a72c 185 lcd.cls();
Michielber 0:f615d151a72c 186 lcd.locate(0,0);
Michielber 2:6330f557c82e 187 lcd.printf("%d:%d:%d",hours,minuten,sec); //Tijd op LCD zetten
Michielber 0:f615d151a72c 188 lcd.locate(0,1);
Michielber 2:6330f557c82e 189 lcd.printf("%d/%d/%d",date,month,year); //Datum op LCD zetten
Michielber 0:f615d151a72c 190
Michielber 0:f615d151a72c 191 }
Michielber 0:f615d151a72c 192
Michielber 0:f615d151a72c 193 int main(void)
Michielber 0:f615d151a72c 194 {
Michielber 0:f615d151a72c 195
Michielber 0:f615d151a72c 196
Michielber 0:f615d151a72c 197 /* START INITIALISATIE */
Michielber 0:f615d151a72c 198 knopHOGER.rise(&Hoger);
Michielber 0:f615d151a72c 199 knopLAGER.rise(&Lager);
Michielber 0:f615d151a72c 200 aanuitknop.rise(&AanUit);
Michielber 0:f615d151a72c 201 initHTTP();
Michielber 0:f615d151a72c 202 Timer tm;
Michielber 0:f615d151a72c 203 tm.start();
Michielber 0:f615d151a72c 204
Michielber 0:f615d151a72c 205 /* STOP INITIALISATIE */
Michielber 0:f615d151a72c 206
Michielber 0:f615d151a72c 207 while(true) {
Michielber 0:f615d151a72c 208
Michielber 0:f615d151a72c 209
Michielber 0:f615d151a72c 210 if( (aanuit == 1) && (flaginstellen == 0) ) { //open if
Michielber 0:f615d151a72c 211
Michielber 0:f615d151a72c 212 temperatuurinlezen();
Michielber 0:f615d151a72c 213 temperatuuruitsturen();
Michielber 0:f615d151a72c 214 klokophalen();
Michielber 0:f615d151a72c 215
Michielber 0:f615d151a72c 216 /* START HTTP */
Michielber 0:f615d151a72c 217 printf("Net poll start\r\n");
Michielber 0:f615d151a72c 218 Net::poll();
Michielber 0:f615d151a72c 219 if (tm.read() > 0.5) {
Michielber 0:f615d151a72c 220 led1 = !led1;
Michielber 2:6330f557c82e 221 tm.start(); //Start timer
Michielber 2:6330f557c82e 222 c++; //Optellen zodat om de 1s de
Michielber 0:f615d151a72c 223 }
Michielber 0:f615d151a72c 224 printf("Net poll gedaan\r\n");
Michielber 0:f615d151a72c 225 if (c==1) {
Michielber 0:f615d151a72c 226 printf("Ik probeer nu de file te openen..\r\n");
Michielber 0:f615d151a72c 227 //FILE *fp = fopen("/webfs/mydata.htm","w");
Michielber 0:f615d151a72c 228 FILE *fp = fopen("/local/Project.htm", "w"); // Open "Test.htm" on the local file system for writing
Michielber 0:f615d151a72c 229 printf("File geopend!\r\n");
Michielber 0:f615d151a72c 230 fprintf(fp,"<HTML>\r\n");
Michielber 0:f615d151a72c 231 fprintf(fp,"<HEAD>\r\n");
Michielber 0:f615d151a72c 232 fprintf(fp,"</HEAD>\r\n");
Michielber 0:f615d151a72c 233 fprintf(fp,"<BODY>\r\n");
Michielber 0:f615d151a72c 234 fprintf(fp," \r\n");
Michielber 0:f615d151a72c 235 printf("Variabelen printen\r\n");
Michielber 0:f615d151a72c 236 fprintf(fp,"De binnen temperatuur is %f\r\n",temp1);
Michielber 0:f615d151a72c 237 fprintf(fp," \r\n");
Michielber 0:f615d151a72c 238 fprintf(fp,"De buiten temperatuur is %f\r\n",temp2);
Michielber 0:f615d151a72c 239 fprintf(fp," \r\n");
Michielber 0:f615d151a72c 240 fprintf(fp,"De tijd is: %d:%d:%d",hours,minuten,sec);
Michielber 0:f615d151a72c 241 fprintf(fp," \r\n");
Michielber 0:f615d151a72c 242 fprintf(fp,"De datum is: %d/%d/%d",date,month,year);
Michielber 0:f615d151a72c 243 fprintf(fp," \r\n");
Michielber 0:f615d151a72c 244 fprintf(fp,"</BODY>\r\n");
Michielber 0:f615d151a72c 245 fprintf(fp,"</HTML>\r\n");
Michielber 0:f615d151a72c 246 printf("Sessie stoppen \r\n");
Michielber 2:6330f557c82e 247 fclose(fp); //Stop schrijven
Michielber 0:f615d151a72c 248 printf("staat online\r\n");
Michielber 0:f615d151a72c 249 c=0;
Michielber 0:f615d151a72c 250 }
Michielber 0:f615d151a72c 251 /* EINDE HTTP */
Michielber 0:f615d151a72c 252
Michielber 0:f615d151a72c 253
Michielber 0:f615d151a72c 254
Michielber 0:f615d151a72c 255 /* Motor sturing hier */
Michielber 0:f615d151a72c 256 graden = waarde - temp1;
Michielber 0:f615d151a72c 257 graden = 20 + (graden*5); //5 Graden per Graad celsius. (Max 28 graden)
Michielber 0:f615d151a72c 258 motor(graden); //Motor aansturen
Michielber 0:f615d151a72c 259
Michielber 0:f615d151a72c 260 /* Stop motor sturing hier */
Michielber 0:f615d151a72c 261
Michielber 0:f615d151a72c 262 } //sluit if
Michielber 0:f615d151a72c 263 else if( (aanuit == 1) && (flaginstellen == 1) ) { //open else if
Michielber 0:f615d151a72c 264 /* Programmatie instellen */
Michielber 0:f615d151a72c 265 printf("Programma instelmodus aan\r\n");
Michielber 0:f615d151a72c 266 while (counter <= 3) {
Michielber 0:f615d151a72c 267 lcd.cls();
Michielber 0:f615d151a72c 268 lcd.printf("BIN: %5.2f C",waarde);
Michielber 0:f615d151a72c 269 lcd.locate(0,1);
Michielber 0:f615d151a72c 270 lcd.printf("BUI: %5.2f C",temp2);
Michielber 0:f615d151a72c 271 wait(0.8);
Michielber 0:f615d151a72c 272 lcd.cls();
Michielber 2:6330f557c82e 273 lcd.printf(""); //Lcd laten flikkeren voor instellen
Michielber 0:f615d151a72c 274 lcd.locate(0,1);
Michielber 0:f615d151a72c 275 lcd.printf("BUI: %5.2f C",temp2);
Michielber 0:f615d151a72c 276 wait(0.2);
Michielber 0:f615d151a72c 277 counter++;
Michielber 0:f615d151a72c 278 }
Michielber 0:f615d151a72c 279
Michielber 0:f615d151a72c 280
Michielber 0:f615d151a72c 281
Michielber 0:f615d151a72c 282 flaginstellen = 0; //Instellen stoppen
Michielber 0:f615d151a72c 283 }
Michielber 0:f615d151a72c 284 else { //open else
Michielber 2:6330f557c82e 285 lcd.cls(); //LCD Clearen
Michielber 2:6330f557c82e 286 klokuitsturen(); //De waarde van de klok op de LCD zetten
Michielber 0:f615d151a72c 287 printf("Staat uit\r\n");
Michielber 0:f615d151a72c 288 } //sluit else
Michielber 0:f615d151a72c 289
Michielber 0:f615d151a72c 290 }
Michielber 0:f615d151a72c 291 }
Michielber 0:f615d151a72c 292