Temp Regelaar
Dependencies: TextLCD mbed DS1307
Hoofdprogramma.cpp@4:15258c48d16f, 2014-12-15 (annotated)
- 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?
User | Revision | Line number | New 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 |