Eindprogramma met alle functies

Dependencies:   DS1307 EthernetInterface TextLCD WebSocketClient mbed-rtos mbed

Fork of Hoofdprogramma by Pieter Essers

Committer:
R0375604
Date:
Mon Dec 15 13:59:06 2014 +0000
Revision:
4:15258c48d16f
Parent:
3:b2001b7e5c24
Child:
5:1c493bae26fc
Versie 4; Zonder servo in kleine stappen; Zonder Ethernet

Who changed what in which revision?

UserRevisionLine numberNew contents of line
R0375604 3:b2001b7e5c24 1 // Pieter Essers & Bjorn Vranken GROEP5
R0375604 3:b2001b7e5c24 2 // Digitale Temp Meting en aansturingen via
R0375604 3:b2001b7e5c24 3 // RGB LED // SERVO // RELAIS
R0375604 0:f99036b05ce9 4 #include "mbed.h"
R0375604 0:f99036b05ce9 5 #include "TextLCD.h"
R0375604 3:b2001b7e5c24 6 #include "ds1307.h"
R0375604 0:f99036b05ce9 7
R0375604 0:f99036b05ce9 8 // Declaratie van de Pinnen & variabelen
R0375604 0:f99036b05ce9 9 AnalogIn Temp1(p20);
R0375604 0:f99036b05ce9 10 AnalogIn Temp2(p19);
R0375604 0:f99036b05ce9 11 AnalogIn Temp3(p18);
R0375604 0:f99036b05ce9 12
R0375604 4:15258c48d16f 13 DigitalIn Druk1(p15); // temp1
R0375604 4:15258c48d16f 14 DigitalIn Druk2(p11); // temp2
R0375604 4:15258c48d16f 15 DigitalIn Druk3(p14); // temp3
R0375604 4:15258c48d16f 16 DigitalIn Down(p13); // up
R0375604 4:15258c48d16f 17 DigitalIn Up(p12); // down
R0375604 0:f99036b05ce9 18
R0375604 1:386b4ee674e3 19 DigitalOut Relais(p29); // pin voor de Relais
R0375604 0:f99036b05ce9 20
R0375604 0:f99036b05ce9 21 PwmOut Servo(p21); // servo motor
R0375604 4:15258c48d16f 22 PwmOut R(p23); // RGB => Rood
R0375604 4:15258c48d16f 23 PwmOut G(p24); // RGB => Groen
R0375604 4:15258c48d16f 24 PwmOut B(p22); // RGB => Blauw
R0375604 0:f99036b05ce9 25 PwmOut LedB(p25); // Blauwe Led als relais Uit is (Te warm)
R0375604 0:f99036b05ce9 26 PwmOut LedG(p26); // Groene Led als relais Uit is (Temp GOED)
R0375604 0:f99036b05ce9 27
R0375604 3:b2001b7e5c24 28 TextLCD lcd(p5, p6, p7, p8, p9, p10); // LCD
R0375604 3:b2001b7e5c24 29 DS1307 my1307(p28,p27); // start DS1307 class and give it pins for connections of the DS1307 device
R0375604 0:f99036b05ce9 30
R0375604 3:b2001b7e5c24 31 int sec;
R0375604 3:b2001b7e5c24 32 int min;
R0375604 3:b2001b7e5c24 33 int hours;
R0375604 3:b2001b7e5c24 34 int day;
R0375604 3:b2001b7e5c24 35 int date;
R0375604 3:b2001b7e5c24 36 int month;
R0375604 3:b2001b7e5c24 37 int year;
R0375604 3:b2001b7e5c24 38
R0375604 3:b2001b7e5c24 39 float InstelTemp1 = 21; // De Gewenste Temperatuur
R0375604 3:b2001b7e5c24 40 float InstelTemp2 = 21;
R0375604 3:b2001b7e5c24 41 float InstelTemp3 = 21;
R0375604 0:f99036b05ce9 42
R0375604 0:f99036b05ce9 43 float temp1 = 0;
R0375604 0:f99036b05ce9 44 float temp2 = 0;
R0375604 0:f99036b05ce9 45 float temp3 = 0;
R0375604 0:f99036b05ce9 46
R0375604 3:b2001b7e5c24 47 //int teller = 0; // om een wachtlus te maken.
R0375604 3:b2001b7e5c24 48 void test_rw(int test) // Test voor de RTC
R0375604 3:b2001b7e5c24 49 {
R0375604 3:b2001b7e5c24 50 }
R0375604 0:f99036b05ce9 51 int main()
R0375604 0:f99036b05ce9 52 {
R0375604 3:b2001b7e5c24 53 lcd.cls(); // LCD Clearen
R0375604 3:b2001b7e5c24 54 R.period_ms(20.0f); // 20 msecond period (50Hz)
R0375604 3:b2001b7e5c24 55 G.period_ms(20.0f); // 20 msecond period (50Hz)
R0375604 0:f99036b05ce9 56 B.period_ms(20.0f); // 20 msecond period
R0375604 1:386b4ee674e3 57 LedB.period_ms(20.0f); // 20 msecond period
R0375604 0:f99036b05ce9 58 LedG.period_ms(20.0f); // 20 msecond period
R0375604 0:f99036b05ce9 59 lcd.cls(); // LCD Clearen
R0375604 0:f99036b05ce9 60
R0375604 0:f99036b05ce9 61 while(1)
R0375604 0:f99036b05ce9 62 {
R0375604 3:b2001b7e5c24 63 my1307.gettime( &sec, &min, &hours, &day, &date, &month, &year);
R0375604 3:b2001b7e5c24 64
R0375604 0:f99036b05ce9 65 float temp1 = 0;
R0375604 0:f99036b05ce9 66 float temp2 = 0;
R0375604 0:f99036b05ce9 67 float temp3 = 0;
R0375604 3:b2001b7e5c24 68 //------------- De Tijd op de LCD printen ------------------------------------
R0375604 3:b2001b7e5c24 69 //------------- Enkel laten zien wanneer je op drukknop drukt-----------------
R0375604 3:b2001b7e5c24 70 while(Up)
R0375604 3:b2001b7e5c24 71 {
R0375604 3:b2001b7e5c24 72 my1307.gettime( &sec, &min, &hours, &day, &date, &month, &year);
R0375604 3:b2001b7e5c24 73 wait(0.5);
R0375604 3:b2001b7e5c24 74 lcd.cls();
R0375604 3:b2001b7e5c24 75 lcd.locate(0,0);
R0375604 3:b2001b7e5c24 76 lcd.printf("%d:%d:%d",hours,min,sec);
R0375604 3:b2001b7e5c24 77 lcd.locate(0,1);
R0375604 3:b2001b7e5c24 78 lcd.printf("%d/%d/%d",date,month,year);
R0375604 3:b2001b7e5c24 79 }
R0375604 1:386b4ee674e3 80 //------------- Gewenste TEMP instellen ------------------------------------
R0375604 0:f99036b05ce9 81 while(Druk1) // Gewenste Temp1 Instellen
R0375604 0:f99036b05ce9 82 {
R0375604 0:f99036b05ce9 83 lcd.locate(0,0);
R0375604 0:f99036b05ce9 84 lcd.printf("Instel Temp1 = ");
R0375604 0:f99036b05ce9 85 lcd.locate(0,1);
R0375604 0:f99036b05ce9 86 lcd.printf("%4.1f C ",InstelTemp1);
R0375604 0:f99036b05ce9 87 if(Down)
R0375604 0:f99036b05ce9 88 {
R0375604 0:f99036b05ce9 89 InstelTemp1 += 0.5;
R0375604 0:f99036b05ce9 90 lcd.locate(0,0);
R0375604 0:f99036b05ce9 91 lcd.printf("Instel Temp1 = ");
R0375604 0:f99036b05ce9 92 lcd.locate(0,1);
R0375604 0:f99036b05ce9 93 lcd.printf("%4.1f C ",InstelTemp1);
R0375604 0:f99036b05ce9 94 wait(0.5);
R0375604 0:f99036b05ce9 95 }
R0375604 0:f99036b05ce9 96 else if(Up)
R0375604 0:f99036b05ce9 97 {
R0375604 0:f99036b05ce9 98 InstelTemp1 -= 0.5;
R0375604 0:f99036b05ce9 99 lcd.locate(0,0);
R0375604 0:f99036b05ce9 100 lcd.printf("Instel Temp1 = ");
R0375604 0:f99036b05ce9 101 lcd.locate(0,1);
R0375604 0:f99036b05ce9 102 lcd.printf("%4.1f C ",InstelTemp1);
R0375604 0:f99036b05ce9 103 wait(0.5);
R0375604 0:f99036b05ce9 104 }
R0375604 0:f99036b05ce9 105 }
R0375604 0:f99036b05ce9 106 lcd.cls(); // LCD Clearen
R0375604 0:f99036b05ce9 107 while(Druk2) // Gewenste Temp2 Instellen
R0375604 0:f99036b05ce9 108 {
R0375604 0:f99036b05ce9 109 lcd.locate(0,0);
R0375604 0:f99036b05ce9 110 lcd.printf("Instel Temp2 = ");
R0375604 0:f99036b05ce9 111 lcd.locate(0,1);
R0375604 0:f99036b05ce9 112 lcd.printf("%4.1f C ",InstelTemp2);
R0375604 0:f99036b05ce9 113 if(Down)
R0375604 0:f99036b05ce9 114 {
R0375604 0:f99036b05ce9 115 InstelTemp2 += 0.5;
R0375604 0:f99036b05ce9 116 lcd.locate(0,0);
R0375604 0:f99036b05ce9 117 lcd.printf("Instel Temp2 = ");
R0375604 0:f99036b05ce9 118 lcd.locate(0,1);
R0375604 0:f99036b05ce9 119 lcd.printf("%4.1f C ",InstelTemp2);
R0375604 0:f99036b05ce9 120 wait(0.5);
R0375604 0:f99036b05ce9 121 }
R0375604 0:f99036b05ce9 122 else if(Up)
R0375604 0:f99036b05ce9 123 {
R0375604 0:f99036b05ce9 124 InstelTemp2 -= 0.5;
R0375604 0:f99036b05ce9 125 lcd.locate(0,0);
R0375604 0:f99036b05ce9 126 lcd.printf("Instel Temp2 = ");
R0375604 0:f99036b05ce9 127 lcd.locate(0,1);
R0375604 0:f99036b05ce9 128 lcd.printf("%4.1f C ",InstelTemp2);
R0375604 0:f99036b05ce9 129 wait(0.5);
R0375604 0:f99036b05ce9 130 }
R0375604 0:f99036b05ce9 131 }
R0375604 0:f99036b05ce9 132 lcd.cls(); // LCD Clearen
R0375604 0:f99036b05ce9 133 while(Druk3) // Gewenste Temp3 Instellen
R0375604 0:f99036b05ce9 134 {
R0375604 0:f99036b05ce9 135 lcd.locate(0,0);
R0375604 0:f99036b05ce9 136 lcd.printf("Instel Temp3 = ");
R0375604 0:f99036b05ce9 137 lcd.locate(0,1);
R0375604 0:f99036b05ce9 138 lcd.printf("%4.1f C ",InstelTemp3);
R0375604 0:f99036b05ce9 139 if(Down)
R0375604 0:f99036b05ce9 140 {
R0375604 0:f99036b05ce9 141 InstelTemp3 += 0.5;
R0375604 0:f99036b05ce9 142 lcd.locate(0,0);
R0375604 0:f99036b05ce9 143 lcd.printf("Instel Temp3 = ");
R0375604 0:f99036b05ce9 144 lcd.locate(0,1);
R0375604 0:f99036b05ce9 145 lcd.printf("%4.1f C ",InstelTemp3);
R0375604 0:f99036b05ce9 146 wait(0.5);
R0375604 0:f99036b05ce9 147 }
R0375604 0:f99036b05ce9 148 else if(Up)
R0375604 0:f99036b05ce9 149 {
R0375604 0:f99036b05ce9 150 InstelTemp3 -= 0.5;
R0375604 0:f99036b05ce9 151 lcd.locate(0,0);
R0375604 0:f99036b05ce9 152 lcd.printf("Instel Temp3 = ");
R0375604 0:f99036b05ce9 153 lcd.locate(0,1);
R0375604 0:f99036b05ce9 154 lcd.printf("%4.1f C ",InstelTemp3);
R0375604 0:f99036b05ce9 155 wait(0.5);
R0375604 0:f99036b05ce9 156 }
R0375604 0:f99036b05ce9 157 }
R0375604 3:b2001b7e5c24 158 //------------------------------------------------------------------------------------
R0375604 0:f99036b05ce9 159 for(int t=0; t<100; t++) // Inlezen van de Temperatuur
R0375604 0:f99036b05ce9 160 {
R0375604 0:f99036b05ce9 161 temp1 = temp1 +Temp1.read(); // Temp1 inlezen
R0375604 0:f99036b05ce9 162 temp2 = temp2 +Temp2.read(); // Temp2 inlezen
R0375604 0:f99036b05ce9 163 temp3 = temp3 +Temp3.read(); // Temp3 inlezen
R0375604 0:f99036b05ce9 164 }
R0375604 0:f99036b05ce9 165
R0375604 4:15258c48d16f 166 temp1 *= 3.3; // Bewerking voor de Temp in graden te bekomen.
R0375604 0:f99036b05ce9 167 temp2 *= 3.3;
R0375604 0:f99036b05ce9 168 temp3 *= 3.3;
R0375604 1:386b4ee674e3 169 //-------------- LCD Printen----------------------------------------------------------
R0375604 0:f99036b05ce9 170 lcd.locate(0,0); // De ingelezen Temperatuur op de LCD zetten
R0375604 0:f99036b05ce9 171 lcd.printf("Temperatuur 1 = ");
R0375604 0:f99036b05ce9 172 lcd.locate(0,1);
R0375604 0:f99036b05ce9 173 lcd.printf("%4.1f C ",temp1);
R0375604 1:386b4ee674e3 174 wait(1.5);
R0375604 0:f99036b05ce9 175 lcd.cls();
R0375604 0:f99036b05ce9 176 lcd.locate(0,0);
R0375604 0:f99036b05ce9 177 lcd.printf("Temperatuur 2 = ");
R0375604 0:f99036b05ce9 178 lcd.locate(0,1);
R0375604 0:f99036b05ce9 179 lcd.printf("%4.1f C ",temp2);
R0375604 1:386b4ee674e3 180 wait(1.5);
R0375604 0:f99036b05ce9 181 lcd.cls();
R0375604 0:f99036b05ce9 182 lcd.locate(0,0);
R0375604 0:f99036b05ce9 183 lcd.printf("Temperatuur 3 = ");
R0375604 0:f99036b05ce9 184 lcd.locate(0,1);
R0375604 0:f99036b05ce9 185 lcd.printf("%4.1f C ",temp3);
R0375604 1:386b4ee674e3 186 wait(1.5);
R0375604 3:b2001b7e5c24 187 //-----------// RGB => Temperatuur 1// WAARSCHUWIGS SIGNAAL--------------------------------------------------------
R0375604 3:b2001b7e5c24 188 if(temp1 > InstelTemp1 + 2) // Temp is te HOOG => Rode led OPGEPAST TE WARM ------ InstelTemp1 + 1 < temp1 <= InstelTemp1 + 1,5
R0375604 0:f99036b05ce9 189 {
R0375604 3:b2001b7e5c24 190 R.write(0.50f); // 50% duty cycle LED GAAT GW AAN
R0375604 0:f99036b05ce9 191 G.write(0.00f); // 0% duty cycle
R0375604 0:f99036b05ce9 192 B.write(0.00f); // 0% duty cycle
R0375604 3:b2001b7e5c24 193 }
R0375604 3:b2001b7e5c24 194 else if (temp1 < InstelTemp1 - 2) // Temp is te LAAG => Blauwe led LET OP TE KOUD
R0375604 3:b2001b7e5c24 195 {
R0375604 3:b2001b7e5c24 196 R.write(0.00f); // 50% duty cycle
R0375604 3:b2001b7e5c24 197 G.write(0.00f); // 0% duty cycle
R0375604 3:b2001b7e5c24 198 B.write(0.50f); // 0% duty cycle
R0375604 0:f99036b05ce9 199 }
R0375604 0:f99036b05ce9 200 else // Temp is te GOED => Groene led
R0375604 0:f99036b05ce9 201 {
R0375604 0:f99036b05ce9 202 R.write(0.00f); // 0% duty cycle
R0375604 0:f99036b05ce9 203 G.write(0.50f); // 50% duty cycle
R0375604 0:f99036b05ce9 204 B.write(0.00f); // 0% duty cycle
R0375604 1:386b4ee674e3 205 }
R0375604 2:52f7cccebdea 206 //-----------// Relais => Temperatuur 2// Moet met een transistor----------------------------------
R0375604 1:386b4ee674e3 207 if(temp2 > InstelTemp2 + 2) // Temp is te HOOG => Blauwe led
R0375604 1:386b4ee674e3 208 {
R0375604 1:386b4ee674e3 209 Relais = 0; // Temp is te HOOG dus moet afkoelen (Niet verwarmen)
R0375604 1:386b4ee674e3 210 LedB.write(0.50f); // 50% duty cycle
R0375604 1:386b4ee674e3 211 LedG.write(0.00f); // 0% duty cycle
R0375604 1:386b4ee674e3 212
R0375604 1:386b4ee674e3 213 }
R0375604 2:52f7cccebdea 214 else if (temp2 < InstelTemp2 - 2) // Temp is te LAAG => Rode led
R0375604 1:386b4ee674e3 215 {
R0375604 1:386b4ee674e3 216 Relais = 1; // Temp is te LAAG Dus verwarmen
R0375604 3:b2001b7e5c24 217 wait(0.5);
R0375604 2:52f7cccebdea 218 LedB.write(0.00f); // 0% duty cycle
R0375604 2:52f7cccebdea 219 LedG.write(0.00f); // 0% duty cycle
R0375604 1:386b4ee674e3 220 }
R0375604 1:386b4ee674e3 221 else // Temp is te GOED => Groene led
R0375604 1:386b4ee674e3 222 {
R0375604 3:b2001b7e5c24 223 Relais = 0; // Tem is GOED dus niets doen
R0375604 1:386b4ee674e3 224 LedB.write(0.00f); // 0% duty cycle
R0375604 3:b2001b7e5c24 225 LedG.write(0.50f); // 100% duty cycle
R0375604 1:386b4ee674e3 226 }
R0375604 1:386b4ee674e3 227 //-----------// Servo => Temparatur 3 // ------------------------------------------------------------
R0375604 1:386b4ee674e3 228 if(temp3 > InstelTemp3 + 2) // Temp is te HOOG => Servo Rechts
R0375604 1:386b4ee674e3 229 {
R0375604 1:386b4ee674e3 230 Servo = (170 * 0.000511 + 0.026); // rechts
R0375604 1:386b4ee674e3 231 }
R0375604 1:386b4ee674e3 232 else if (temp3 < InstelTemp3 - 2) // Temp is te LAAG => Servo Links
R0375604 1:386b4ee674e3 233 {
R0375604 1:386b4ee674e3 234 Servo = (7 * 0.000511 + 0.026); // links 7
R0375604 1:386b4ee674e3 235 }
R0375604 1:386b4ee674e3 236 else // Temp is te GOED => Servo Midden
R0375604 1:386b4ee674e3 237 {
R0375604 1:386b4ee674e3 238 Servo = (90 * 0.000511 + 0.026); // rust
R0375604 1:386b4ee674e3 239 }
R0375604 2:52f7cccebdea 240 //--------------------------------------------------------------------------------------------------
R0375604 0:f99036b05ce9 241 }
R0375604 0:f99036b05ce9 242 }
R0375604 0:f99036b05ce9 243
R0375604 0:f99036b05ce9 244
R0375604 0:f99036b05ce9 245
R0375604 0:f99036b05ce9 246
R0375604 0:f99036b05ce9 247
R0375604 0:f99036b05ce9 248