Project embedded C:16/12/2014
Dependencies: DS1307 TextLCD mbed
main.cpp@0:9bf4c3c71b7a, 2014-12-16 (annotated)
- Committer:
- ninoderkinderen
- Date:
- Tue Dec 16 14:23:38 2014 +0000
- Revision:
- 0:9bf4c3c71b7a
Project embedded C: programma 16/12/2014
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ninoderkinderen | 0:9bf4c3c71b7a | 1 | //library's |
ninoderkinderen | 0:9bf4c3c71b7a | 2 | #include "mbed.h" |
ninoderkinderen | 0:9bf4c3c71b7a | 3 | #include "TextLCD.h" |
ninoderkinderen | 0:9bf4c3c71b7a | 4 | #include "ds1307.h" |
ninoderkinderen | 0:9bf4c3c71b7a | 5 | //Pin initialisatie |
ninoderkinderen | 0:9bf4c3c71b7a | 6 | AnalogIn binnen(p19);//pin 19:Analog In |
ninoderkinderen | 0:9bf4c3c71b7a | 7 | AnalogIn buiten(p20);//pin 20:Analog In |
ninoderkinderen | 0:9bf4c3c71b7a | 8 | TextLCD lcd(p15, p16, p21, p22, p23, p24); //rs, e, d4-d7 |
ninoderkinderen | 0:9bf4c3c71b7a | 9 | InterruptIn knopUP(p6);//pin6:Interrupt |
ninoderkinderen | 0:9bf4c3c71b7a | 10 | InterruptIn knopDOWN(p5);//pin5:Interrupt |
ninoderkinderen | 0:9bf4c3c71b7a | 11 | InterruptIn knopINSTEL(p7);//pin7:Interrupt |
ninoderkinderen | 0:9bf4c3c71b7a | 12 | InterruptIn knopBACK(p8);//pin8:Interrupt |
ninoderkinderen | 0:9bf4c3c71b7a | 13 | DS1307 my1307(p9, p10);//pin9:sda I2C |
ninoderkinderen | 0:9bf4c3c71b7a | 14 | DigitalOut relais(p30);//pin10:scl I2C |
ninoderkinderen | 0:9bf4c3c71b7a | 15 | DigitalOut RGBblauw(p29);//pin29:digital out |
ninoderkinderen | 0:9bf4c3c71b7a | 16 | DigitalOut RGBgroen(p28);//pin28:digital out |
ninoderkinderen | 0:9bf4c3c71b7a | 17 | DigitalOut RGBrood(p27);//pin27:digital out |
ninoderkinderen | 0:9bf4c3c71b7a | 18 | PwmOut Servo(p25);//p25:pwm out |
ninoderkinderen | 0:9bf4c3c71b7a | 19 | Serial pc(USBTX,USBRX);//serial port:USB |
ninoderkinderen | 0:9bf4c3c71b7a | 20 | //variabelen |
ninoderkinderen | 0:9bf4c3c71b7a | 21 | float i = 0;//waarde om binnentempertauur in te steken |
ninoderkinderen | 0:9bf4c3c71b7a | 22 | float j = 0;//waarde om buitentemperatuur in te steken |
ninoderkinderen | 0:9bf4c3c71b7a | 23 | int reftemp = 20;//referentietemperatuur |
ninoderkinderen | 0:9bf4c3c71b7a | 24 | int load=0;//load program |
ninoderkinderen | 0:9bf4c3c71b7a | 25 | //variabelen RTC |
ninoderkinderen | 0:9bf4c3c71b7a | 26 | int sec; |
ninoderkinderen | 0:9bf4c3c71b7a | 27 | int min; |
ninoderkinderen | 0:9bf4c3c71b7a | 28 | int hours; |
ninoderkinderen | 0:9bf4c3c71b7a | 29 | int day; |
ninoderkinderen | 0:9bf4c3c71b7a | 30 | int date; |
ninoderkinderen | 0:9bf4c3c71b7a | 31 | int month; |
ninoderkinderen | 0:9bf4c3c71b7a | 32 | int year; |
ninoderkinderen | 0:9bf4c3c71b7a | 33 | //RTC read routine |
ninoderkinderen | 0:9bf4c3c71b7a | 34 | void test_rw(int test) { |
ninoderkinderen | 0:9bf4c3c71b7a | 35 | } |
ninoderkinderen | 0:9bf4c3c71b7a | 36 | //interruptroutine: referentietemp instellen |
ninoderkinderen | 0:9bf4c3c71b7a | 37 | void instellen() |
ninoderkinderen | 0:9bf4c3c71b7a | 38 | { |
ninoderkinderen | 0:9bf4c3c71b7a | 39 | knopINSTEL.rise(NULL); |
ninoderkinderen | 0:9bf4c3c71b7a | 40 | knopDOWN.rise(NULL); |
ninoderkinderen | 0:9bf4c3c71b7a | 41 | knopUP.rise(NULL);//interrupt disable |
ninoderkinderen | 0:9bf4c3c71b7a | 42 | wait(0.5); |
ninoderkinderen | 0:9bf4c3c71b7a | 43 | |
ninoderkinderen | 0:9bf4c3c71b7a | 44 | while(knopINSTEL == 0) |
ninoderkinderen | 0:9bf4c3c71b7a | 45 | { |
ninoderkinderen | 0:9bf4c3c71b7a | 46 | lcd.locate(0,0); |
ninoderkinderen | 0:9bf4c3c71b7a | 47 | lcd.printf(" Instellen Temp"); |
ninoderkinderen | 0:9bf4c3c71b7a | 48 | lcd.locate(0,1); |
ninoderkinderen | 0:9bf4c3c71b7a | 49 | lcd.printf(" Temp = %iC", reftemp);//Printen ingestelde referentietemp |
ninoderkinderen | 0:9bf4c3c71b7a | 50 | if(knopUP == 1)//knopUP bediend --> reftemp +1 |
ninoderkinderen | 0:9bf4c3c71b7a | 51 | { |
ninoderkinderen | 0:9bf4c3c71b7a | 52 | reftemp++; |
ninoderkinderen | 0:9bf4c3c71b7a | 53 | wait(0.4); |
ninoderkinderen | 0:9bf4c3c71b7a | 54 | } |
ninoderkinderen | 0:9bf4c3c71b7a | 55 | if(knopDOWN == 1)//knopDOWN bediend --> reftemp -1 |
ninoderkinderen | 0:9bf4c3c71b7a | 56 | { |
ninoderkinderen | 0:9bf4c3c71b7a | 57 | reftemp--; |
ninoderkinderen | 0:9bf4c3c71b7a | 58 | wait(0.4); |
ninoderkinderen | 0:9bf4c3c71b7a | 59 | } |
ninoderkinderen | 0:9bf4c3c71b7a | 60 | if (reftemp == 33)//hysteresis reftemp |
ninoderkinderen | 0:9bf4c3c71b7a | 61 | { |
ninoderkinderen | 0:9bf4c3c71b7a | 62 | reftemp = 15; |
ninoderkinderen | 0:9bf4c3c71b7a | 63 | } |
ninoderkinderen | 0:9bf4c3c71b7a | 64 | if (reftemp == 14)//hysteresis reftemp |
ninoderkinderen | 0:9bf4c3c71b7a | 65 | { |
ninoderkinderen | 0:9bf4c3c71b7a | 66 | reftemp = 32; |
ninoderkinderen | 0:9bf4c3c71b7a | 67 | } |
ninoderkinderen | 0:9bf4c3c71b7a | 68 | } |
ninoderkinderen | 0:9bf4c3c71b7a | 69 | } |
ninoderkinderen | 0:9bf4c3c71b7a | 70 | //interruptroutine: tijdsweergave |
ninoderkinderen | 0:9bf4c3c71b7a | 71 | void back() |
ninoderkinderen | 0:9bf4c3c71b7a | 72 | { |
ninoderkinderen | 0:9bf4c3c71b7a | 73 | wait(0.5); |
ninoderkinderen | 0:9bf4c3c71b7a | 74 | lcd.cls();//LCD clead |
ninoderkinderen | 0:9bf4c3c71b7a | 75 | knopBACK.rise(NULL); |
ninoderkinderen | 0:9bf4c3c71b7a | 76 | knopUP.rise(NULL);//disable interrupt |
ninoderkinderen | 0:9bf4c3c71b7a | 77 | while(knopBACK == 0)//doorolopen wanneer knopBack NIET is ingedrukt,bij bediening uit routine |
ninoderkinderen | 0:9bf4c3c71b7a | 78 | { |
ninoderkinderen | 0:9bf4c3c71b7a | 79 | test_rw(my1307.gettime( &sec, &min, &hours, &day, &date, &month, &year));//uitlezen tijd RTC |
ninoderkinderen | 0:9bf4c3c71b7a | 80 | //Dag uitschrijven op lcd |
ninoderkinderen | 0:9bf4c3c71b7a | 81 | if(day == 1) |
ninoderkinderen | 0:9bf4c3c71b7a | 82 | {lcd.locate(3,1); |
ninoderkinderen | 0:9bf4c3c71b7a | 83 | lcd.printf("Ma");} |
ninoderkinderen | 0:9bf4c3c71b7a | 84 | if(day == 2) |
ninoderkinderen | 0:9bf4c3c71b7a | 85 | {lcd.locate(3,1); |
ninoderkinderen | 0:9bf4c3c71b7a | 86 | lcd.printf("Di");} |
ninoderkinderen | 0:9bf4c3c71b7a | 87 | if(day == 3) |
ninoderkinderen | 0:9bf4c3c71b7a | 88 | {lcd.locate(3,1); |
ninoderkinderen | 0:9bf4c3c71b7a | 89 | lcd.printf("Wo");} |
ninoderkinderen | 0:9bf4c3c71b7a | 90 | if(day == 4) |
ninoderkinderen | 0:9bf4c3c71b7a | 91 | {lcd.locate(3,1); |
ninoderkinderen | 0:9bf4c3c71b7a | 92 | lcd.printf("Do");} |
ninoderkinderen | 0:9bf4c3c71b7a | 93 | if(day == 5) |
ninoderkinderen | 0:9bf4c3c71b7a | 94 | {lcd.locate(3,1); |
ninoderkinderen | 0:9bf4c3c71b7a | 95 | lcd.printf("Vr");} |
ninoderkinderen | 0:9bf4c3c71b7a | 96 | if(day == 6) |
ninoderkinderen | 0:9bf4c3c71b7a | 97 | {lcd.locate(3,1); |
ninoderkinderen | 0:9bf4c3c71b7a | 98 | lcd.printf("Za");} |
ninoderkinderen | 0:9bf4c3c71b7a | 99 | if(day == 7) |
ninoderkinderen | 0:9bf4c3c71b7a | 100 | {lcd.locate(3,1); |
ninoderkinderen | 0:9bf4c3c71b7a | 101 | lcd.printf("Zo");} |
ninoderkinderen | 0:9bf4c3c71b7a | 102 | wait(0.2); |
ninoderkinderen | 0:9bf4c3c71b7a | 103 | test_rw(my1307.gettime( &sec, &min, &hours, &day, &date, &month, &year));//uitlezen tijd RTC |
ninoderkinderen | 0:9bf4c3c71b7a | 104 | //Uur min sec //Dag datum maand jaar |
ninoderkinderen | 0:9bf4c3c71b7a | 105 | if(sec >= 9 && min >= 9 && hours >= 9) |
ninoderkinderen | 0:9bf4c3c71b7a | 106 | { |
ninoderkinderen | 0:9bf4c3c71b7a | 107 | lcd.locate(4,0); |
ninoderkinderen | 0:9bf4c3c71b7a | 108 | lcd.printf("%d:%d:%d",hours,min,sec); |
ninoderkinderen | 0:9bf4c3c71b7a | 109 | lcd.locate(6,1); |
ninoderkinderen | 0:9bf4c3c71b7a | 110 | lcd.printf("%d/%d/%d",date,month,year); |
ninoderkinderen | 0:9bf4c3c71b7a | 111 | } |
ninoderkinderen | 0:9bf4c3c71b7a | 112 | if(sec <= 9 && min >= 9 && hours >= 9) |
ninoderkinderen | 0:9bf4c3c71b7a | 113 | { |
ninoderkinderen | 0:9bf4c3c71b7a | 114 | lcd.locate(4,0); |
ninoderkinderen | 0:9bf4c3c71b7a | 115 | lcd.printf("%d:%d:0%d",hours,min,sec); |
ninoderkinderen | 0:9bf4c3c71b7a | 116 | lcd.locate(6,1); |
ninoderkinderen | 0:9bf4c3c71b7a | 117 | lcd.printf("%d/%d/%d",date,month,year); |
ninoderkinderen | 0:9bf4c3c71b7a | 118 | } |
ninoderkinderen | 0:9bf4c3c71b7a | 119 | if(sec >= 9 && min <= 9 && hours >= 9) |
ninoderkinderen | 0:9bf4c3c71b7a | 120 | { |
ninoderkinderen | 0:9bf4c3c71b7a | 121 | lcd.locate(4,0); |
ninoderkinderen | 0:9bf4c3c71b7a | 122 | lcd.printf("%d:0%d:%d",hours,min,sec); |
ninoderkinderen | 0:9bf4c3c71b7a | 123 | lcd.locate(6,1); |
ninoderkinderen | 0:9bf4c3c71b7a | 124 | lcd.printf("%d/%d/%d",date,month,year); |
ninoderkinderen | 0:9bf4c3c71b7a | 125 | } |
ninoderkinderen | 0:9bf4c3c71b7a | 126 | if(sec >= 9 && min >= 9 && hours <= 9) |
ninoderkinderen | 0:9bf4c3c71b7a | 127 | { |
ninoderkinderen | 0:9bf4c3c71b7a | 128 | lcd.locate(4,0); |
ninoderkinderen | 0:9bf4c3c71b7a | 129 | lcd.printf("0%d:%d:%d",hours,min,sec); |
ninoderkinderen | 0:9bf4c3c71b7a | 130 | lcd.locate(6,1); |
ninoderkinderen | 0:9bf4c3c71b7a | 131 | lcd.printf("%d/%d/%d",date,month,year); |
ninoderkinderen | 0:9bf4c3c71b7a | 132 | } |
ninoderkinderen | 0:9bf4c3c71b7a | 133 | if(sec <= 9 && min <= 9 && hours >= 9) |
ninoderkinderen | 0:9bf4c3c71b7a | 134 | { |
ninoderkinderen | 0:9bf4c3c71b7a | 135 | lcd.locate(4,0); |
ninoderkinderen | 0:9bf4c3c71b7a | 136 | lcd.printf("%d:0%d:0%d",hours,min,sec); |
ninoderkinderen | 0:9bf4c3c71b7a | 137 | lcd.locate(6,1); |
ninoderkinderen | 0:9bf4c3c71b7a | 138 | lcd.printf("%d/%d/%d",date,month,year); |
ninoderkinderen | 0:9bf4c3c71b7a | 139 | } |
ninoderkinderen | 0:9bf4c3c71b7a | 140 | if(sec <= 9 && min >= 9 && hours <= 9) |
ninoderkinderen | 0:9bf4c3c71b7a | 141 | { |
ninoderkinderen | 0:9bf4c3c71b7a | 142 | lcd.locate(4,0); |
ninoderkinderen | 0:9bf4c3c71b7a | 143 | lcd.printf("0%d:%d:0%d",hours,min,sec); |
ninoderkinderen | 0:9bf4c3c71b7a | 144 | lcd.locate(6,1); |
ninoderkinderen | 0:9bf4c3c71b7a | 145 | lcd.printf("%d/%d/%d",date,month,year); |
ninoderkinderen | 0:9bf4c3c71b7a | 146 | } |
ninoderkinderen | 0:9bf4c3c71b7a | 147 | if(sec >= 9 && min <= 9 && hours <= 9) |
ninoderkinderen | 0:9bf4c3c71b7a | 148 | { |
ninoderkinderen | 0:9bf4c3c71b7a | 149 | lcd.locate(4,0); |
ninoderkinderen | 0:9bf4c3c71b7a | 150 | lcd.printf("0%d:0%d:%d",hours,min,sec); |
ninoderkinderen | 0:9bf4c3c71b7a | 151 | lcd.locate(6,1); |
ninoderkinderen | 0:9bf4c3c71b7a | 152 | lcd.printf("%d/%d/%d",date,month,year); |
ninoderkinderen | 0:9bf4c3c71b7a | 153 | } |
ninoderkinderen | 0:9bf4c3c71b7a | 154 | if(sec <= 9 && min <= 9 && hours <= 9) |
ninoderkinderen | 0:9bf4c3c71b7a | 155 | { |
ninoderkinderen | 0:9bf4c3c71b7a | 156 | lcd.locate(4,0); |
ninoderkinderen | 0:9bf4c3c71b7a | 157 | lcd.printf("0%d:0%d:0%d",hours,min,sec); |
ninoderkinderen | 0:9bf4c3c71b7a | 158 | lcd.locate(6,1); |
ninoderkinderen | 0:9bf4c3c71b7a | 159 | lcd.printf("%d/%d/%d",date,month,year); |
ninoderkinderen | 0:9bf4c3c71b7a | 160 | } |
ninoderkinderen | 0:9bf4c3c71b7a | 161 | wait(0.3); |
ninoderkinderen | 0:9bf4c3c71b7a | 162 | } |
ninoderkinderen | 0:9bf4c3c71b7a | 163 | } |
ninoderkinderen | 0:9bf4c3c71b7a | 164 | //interruptroutine: start programma |
ninoderkinderen | 0:9bf4c3c71b7a | 165 | void start() |
ninoderkinderen | 0:9bf4c3c71b7a | 166 | { |
ninoderkinderen | 0:9bf4c3c71b7a | 167 | knopINSTEL.rise(NULL); |
ninoderkinderen | 0:9bf4c3c71b7a | 168 | knopBACK.rise(NULL); |
ninoderkinderen | 0:9bf4c3c71b7a | 169 | knopDOWN.rise(NULL); |
ninoderkinderen | 0:9bf4c3c71b7a | 170 | knopUP.rise(NULL);//disable interrupt |
ninoderkinderen | 0:9bf4c3c71b7a | 171 | lcd.cls();//LCD clear |
ninoderkinderen | 0:9bf4c3c71b7a | 172 | /*OPSTART ROUTINE START*/ |
ninoderkinderen | 0:9bf4c3c71b7a | 173 | lcd.locate(0,0); |
ninoderkinderen | 0:9bf4c3c71b7a | 174 | lcd.printf("SYSTEM START"); |
ninoderkinderen | 0:9bf4c3c71b7a | 175 | lcd.locate(0,1); |
ninoderkinderen | 0:9bf4c3c71b7a | 176 | lcd.printf("LOAD PROGRAM"); |
ninoderkinderen | 0:9bf4c3c71b7a | 177 | wait(2); |
ninoderkinderen | 0:9bf4c3c71b7a | 178 | lcd.cls(); |
ninoderkinderen | 0:9bf4c3c71b7a | 179 | lcd.locate(0,0); |
ninoderkinderen | 0:9bf4c3c71b7a | 180 | lcd.printf("SYSTEM START"); |
ninoderkinderen | 0:9bf4c3c71b7a | 181 | lcd.locate(0,1); |
ninoderkinderen | 0:9bf4c3c71b7a | 182 | lcd.printf("LOAD: %d",load); |
ninoderkinderen | 0:9bf4c3c71b7a | 183 | for(int l=0;l<=40;l++) |
ninoderkinderen | 0:9bf4c3c71b7a | 184 | { |
ninoderkinderen | 0:9bf4c3c71b7a | 185 | load = l; |
ninoderkinderen | 0:9bf4c3c71b7a | 186 | lcd.locate(0,1); |
ninoderkinderen | 0:9bf4c3c71b7a | 187 | lcd.printf("LOAD: %d",load); |
ninoderkinderen | 0:9bf4c3c71b7a | 188 | wait(0.1); |
ninoderkinderen | 0:9bf4c3c71b7a | 189 | } |
ninoderkinderen | 0:9bf4c3c71b7a | 190 | wait(1); |
ninoderkinderen | 0:9bf4c3c71b7a | 191 | for(int l=40;l<=70;l++) |
ninoderkinderen | 0:9bf4c3c71b7a | 192 | { |
ninoderkinderen | 0:9bf4c3c71b7a | 193 | load = l; |
ninoderkinderen | 0:9bf4c3c71b7a | 194 | lcd.locate(0,1); |
ninoderkinderen | 0:9bf4c3c71b7a | 195 | lcd.printf("LOAD: %d",load); |
ninoderkinderen | 0:9bf4c3c71b7a | 196 | wait(0.2); |
ninoderkinderen | 0:9bf4c3c71b7a | 197 | } |
ninoderkinderen | 0:9bf4c3c71b7a | 198 | wait(1); |
ninoderkinderen | 0:9bf4c3c71b7a | 199 | for(int l=70;l<=100;l++) |
ninoderkinderen | 0:9bf4c3c71b7a | 200 | { |
ninoderkinderen | 0:9bf4c3c71b7a | 201 | load = l; |
ninoderkinderen | 0:9bf4c3c71b7a | 202 | lcd.locate(0,1); |
ninoderkinderen | 0:9bf4c3c71b7a | 203 | lcd.printf("LOAD: %d",load); |
ninoderkinderen | 0:9bf4c3c71b7a | 204 | wait(0.2); |
ninoderkinderen | 0:9bf4c3c71b7a | 205 | } |
ninoderkinderen | 0:9bf4c3c71b7a | 206 | wait(1); |
ninoderkinderen | 0:9bf4c3c71b7a | 207 | lcd.cls(); |
ninoderkinderen | 0:9bf4c3c71b7a | 208 | lcd.locate(0,0); |
ninoderkinderen | 0:9bf4c3c71b7a | 209 | lcd.printf("SYSTEM START"); |
ninoderkinderen | 0:9bf4c3c71b7a | 210 | lcd.locate(0,1); |
ninoderkinderen | 0:9bf4c3c71b7a | 211 | lcd.printf("PROGRAM START"); |
ninoderkinderen | 0:9bf4c3c71b7a | 212 | wait(3); |
ninoderkinderen | 0:9bf4c3c71b7a | 213 | /*OPSTARTROUTINE END*/ |
ninoderkinderen | 0:9bf4c3c71b7a | 214 | } |
ninoderkinderen | 0:9bf4c3c71b7a | 215 | //interruptroutine: programma stoppen |
ninoderkinderen | 0:9bf4c3c71b7a | 216 | void afsluiten() |
ninoderkinderen | 0:9bf4c3c71b7a | 217 | { |
ninoderkinderen | 0:9bf4c3c71b7a | 218 | knopUP.rise(&start);//interrupt koppelen met routine |
ninoderkinderen | 0:9bf4c3c71b7a | 219 | knopINSTEL.rise(NULL); |
ninoderkinderen | 0:9bf4c3c71b7a | 220 | knopBACK.rise(NULL); |
ninoderkinderen | 0:9bf4c3c71b7a | 221 | knopDOWN.rise(NULL);//disabel interrupt |
ninoderkinderen | 0:9bf4c3c71b7a | 222 | lcd.cls();//lcd clear |
ninoderkinderen | 0:9bf4c3c71b7a | 223 | /*AFSLUITROUTINE START*/ |
ninoderkinderen | 0:9bf4c3c71b7a | 224 | lcd.locate(0,0); |
ninoderkinderen | 0:9bf4c3c71b7a | 225 | lcd.printf("SYSTEM SHUTDOWN"); |
ninoderkinderen | 0:9bf4c3c71b7a | 226 | wait(2); |
ninoderkinderen | 0:9bf4c3c71b7a | 227 | relais = 0;//relais uit |
ninoderkinderen | 0:9bf4c3c71b7a | 228 | RGBrood = 0; |
ninoderkinderen | 0:9bf4c3c71b7a | 229 | RGBgroen = 0; |
ninoderkinderen | 0:9bf4c3c71b7a | 230 | RGBblauw = 0; //RGB uit |
ninoderkinderen | 0:9bf4c3c71b7a | 231 | while(knopUP == 0) |
ninoderkinderen | 0:9bf4c3c71b7a | 232 | { |
ninoderkinderen | 0:9bf4c3c71b7a | 233 | lcd.cls(); |
ninoderkinderen | 0:9bf4c3c71b7a | 234 | lcd.locate(0,0); |
ninoderkinderen | 0:9bf4c3c71b7a | 235 | lcd.printf("SYSTEM OFF"); |
ninoderkinderen | 0:9bf4c3c71b7a | 236 | wait(0.2); |
ninoderkinderen | 0:9bf4c3c71b7a | 237 | } |
ninoderkinderen | 0:9bf4c3c71b7a | 238 | /*AFSLUITROUTINE END*/ |
ninoderkinderen | 0:9bf4c3c71b7a | 239 | } |
ninoderkinderen | 0:9bf4c3c71b7a | 240 | /*MAIN PROGRAM*/ |
ninoderkinderen | 0:9bf4c3c71b7a | 241 | int main() |
ninoderkinderen | 0:9bf4c3c71b7a | 242 | { |
ninoderkinderen | 0:9bf4c3c71b7a | 243 | while(1) |
ninoderkinderen | 0:9bf4c3c71b7a | 244 | { |
ninoderkinderen | 0:9bf4c3c71b7a | 245 | knopINSTEL.rise(&instellen); |
ninoderkinderen | 0:9bf4c3c71b7a | 246 | knopBACK.rise(&back); |
ninoderkinderen | 0:9bf4c3c71b7a | 247 | knopDOWN.rise(&afsluiten);//interrupts koppelen met routines(bovenaan gedeclareerd) |
ninoderkinderen | 0:9bf4c3c71b7a | 248 | i=0; |
ninoderkinderen | 0:9bf4c3c71b7a | 249 | j=0;//variabele temperatuurwaardes 0 zetten |
ninoderkinderen | 0:9bf4c3c71b7a | 250 | for(int a=0;a<5;a++) |
ninoderkinderen | 0:9bf4c3c71b7a | 251 | { |
ninoderkinderen | 0:9bf4c3c71b7a | 252 | for(int t=0;t<100;t++) |
ninoderkinderen | 0:9bf4c3c71b7a | 253 | { |
ninoderkinderen | 0:9bf4c3c71b7a | 254 | i=i+binnen.read(); //uitlezen temp |
ninoderkinderen | 0:9bf4c3c71b7a | 255 | } |
ninoderkinderen | 0:9bf4c3c71b7a | 256 | for(int k=0;k<100;k++) |
ninoderkinderen | 0:9bf4c3c71b7a | 257 | { |
ninoderkinderen | 0:9bf4c3c71b7a | 258 | j=j+buiten.read(); //uitlezen temp |
ninoderkinderen | 0:9bf4c3c71b7a | 259 | } |
ninoderkinderen | 0:9bf4c3c71b7a | 260 | wait(0.1); |
ninoderkinderen | 0:9bf4c3c71b7a | 261 | } |
ninoderkinderen | 0:9bf4c3c71b7a | 262 | i = (i*3.3)/5; |
ninoderkinderen | 0:9bf4c3c71b7a | 263 | j = (j*3.3)/5;//berekening juiste temperatuur: Waarde*3.3V/5(for lus van 5) |
ninoderkinderen | 0:9bf4c3c71b7a | 264 | lcd.cls();//lcd clear |
ninoderkinderen | 0:9bf4c3c71b7a | 265 | lcd.locate(0,0); |
ninoderkinderen | 0:9bf4c3c71b7a | 266 | lcd.printf("Binnen:%4.1fC", i); |
ninoderkinderen | 0:9bf4c3c71b7a | 267 | lcd.locate(0,1); |
ninoderkinderen | 0:9bf4c3c71b7a | 268 | lcd.printf("Buiten:%4.1fC", j);//LCD print temperaturen |
ninoderkinderen | 0:9bf4c3c71b7a | 269 | wait(0.1); |
ninoderkinderen | 0:9bf4c3c71b7a | 270 | wait(2); |
ninoderkinderen | 0:9bf4c3c71b7a | 271 | pc.printf("\n\n\rTemperatuur binnen: %4.1f C",i); |
ninoderkinderen | 0:9bf4c3c71b7a | 272 | pc.printf("\n\n\rTemperatuur buiten: %4.1f C",j); |
ninoderkinderen | 0:9bf4c3c71b7a | 273 | pc.printf("\n\n\r------------------------------------------");//PC print temperaturen |
ninoderkinderen | 0:9bf4c3c71b7a | 274 | if(i > (reftemp + 2) && i <= (reftemp +4))//Temperatuur te HOOG: reftemp >2 en reftemp <=4 |
ninoderkinderen | 0:9bf4c3c71b7a | 275 | { |
ninoderkinderen | 0:9bf4c3c71b7a | 276 | wait(2); |
ninoderkinderen | 0:9bf4c3c71b7a | 277 | relais = 1;//relais aan |
ninoderkinderen | 0:9bf4c3c71b7a | 278 | RGBrood = 1; |
ninoderkinderen | 0:9bf4c3c71b7a | 279 | RGBgroen = 1; |
ninoderkinderen | 0:9bf4c3c71b7a | 280 | RGBblauw = 0;//rgb rood + groen = oranje |
ninoderkinderen | 0:9bf4c3c71b7a | 281 | wait(1); |
ninoderkinderen | 0:9bf4c3c71b7a | 282 | Servo.period_ms(20);//servo pwm periode |
ninoderkinderen | 0:9bf4c3c71b7a | 283 | Servo = (130 * 0.000511 + 0.026); // rechts-half servo |
ninoderkinderen | 0:9bf4c3c71b7a | 284 | } |
ninoderkinderen | 0:9bf4c3c71b7a | 285 | else if(i > (reftemp + 3.5))//Temperatuur te HOOG: reftemp > 3.5 (hysteresis ingebouwd) |
ninoderkinderen | 0:9bf4c3c71b7a | 286 | { |
ninoderkinderen | 0:9bf4c3c71b7a | 287 | wait(2); |
ninoderkinderen | 0:9bf4c3c71b7a | 288 | relais = 1;//relais aan |
ninoderkinderen | 0:9bf4c3c71b7a | 289 | RGBrood = 1; |
ninoderkinderen | 0:9bf4c3c71b7a | 290 | RGBgroen = 0; |
ninoderkinderen | 0:9bf4c3c71b7a | 291 | RGBblauw = 0;//rgb rood |
ninoderkinderen | 0:9bf4c3c71b7a | 292 | wait(1); |
ninoderkinderen | 0:9bf4c3c71b7a | 293 | Servo.period_ms(20);//servo pwm periode |
ninoderkinderen | 0:9bf4c3c71b7a | 294 | Servo = (160 * 0.000511 + 0.026); // rechts servo |
ninoderkinderen | 0:9bf4c3c71b7a | 295 | } |
ninoderkinderen | 0:9bf4c3c71b7a | 296 | else if(i < (reftemp - 2) && i >= (reftemp -4))//Temperatuur te LAAG: reftemp>2 & reftemp <4 |
ninoderkinderen | 0:9bf4c3c71b7a | 297 | { |
ninoderkinderen | 0:9bf4c3c71b7a | 298 | wait(2); |
ninoderkinderen | 0:9bf4c3c71b7a | 299 | relais = 0;//relais uit |
ninoderkinderen | 0:9bf4c3c71b7a | 300 | RGBrood = 1; |
ninoderkinderen | 0:9bf4c3c71b7a | 301 | RGBgroen = 0; |
ninoderkinderen | 0:9bf4c3c71b7a | 302 | RGBblauw = 1;//rgb rood + blauw= paars |
ninoderkinderen | 0:9bf4c3c71b7a | 303 | wait(1); |
ninoderkinderen | 0:9bf4c3c71b7a | 304 | Servo.period_ms(20);//servo pwm periode |
ninoderkinderen | 0:9bf4c3c71b7a | 305 | Servo = (55 * 0.000511 + 0.026); // links-half servo |
ninoderkinderen | 0:9bf4c3c71b7a | 306 | } |
ninoderkinderen | 0:9bf4c3c71b7a | 307 | else if(i < (reftemp - 3.5))//Temperatuur te LAAG: reftemp>4 |
ninoderkinderen | 0:9bf4c3c71b7a | 308 | { |
ninoderkinderen | 0:9bf4c3c71b7a | 309 | wait(2); |
ninoderkinderen | 0:9bf4c3c71b7a | 310 | relais = 0;//relais uit |
ninoderkinderen | 0:9bf4c3c71b7a | 311 | RGBrood = 0; |
ninoderkinderen | 0:9bf4c3c71b7a | 312 | RGBgroen = 0; |
ninoderkinderen | 0:9bf4c3c71b7a | 313 | RGBblauw = 1;//rgb blauw |
ninoderkinderen | 0:9bf4c3c71b7a | 314 | wait(1); |
ninoderkinderen | 0:9bf4c3c71b7a | 315 | Servo.period_ms(20);//servo pwm period |
ninoderkinderen | 0:9bf4c3c71b7a | 316 | Servo = (5 * 0.000511 + 0.026); // links servo |
ninoderkinderen | 0:9bf4c3c71b7a | 317 | } |
ninoderkinderen | 0:9bf4c3c71b7a | 318 | else//Temperatuur OKE: reftemp binnen hysteresis +2 & -2 |
ninoderkinderen | 0:9bf4c3c71b7a | 319 | { |
ninoderkinderen | 0:9bf4c3c71b7a | 320 | wait(1); |
ninoderkinderen | 0:9bf4c3c71b7a | 321 | relais = 0; |
ninoderkinderen | 0:9bf4c3c71b7a | 322 | RGBrood = 0; |
ninoderkinderen | 0:9bf4c3c71b7a | 323 | RGBgroen = 1; |
ninoderkinderen | 0:9bf4c3c71b7a | 324 | RGBblauw = 0;//rgb groen |
ninoderkinderen | 0:9bf4c3c71b7a | 325 | wait(1); |
ninoderkinderen | 0:9bf4c3c71b7a | 326 | Servo.period_ms(20);//servo pwm period |
ninoderkinderen | 0:9bf4c3c71b7a | 327 | Servo = (90 * 0.000511 + 0.026); // 0-positie servo |
ninoderkinderen | 0:9bf4c3c71b7a | 328 | } |
ninoderkinderen | 0:9bf4c3c71b7a | 329 | } |
ninoderkinderen | 0:9bf4c3c71b7a | 330 | } |