amklsnrjkglwar

Dependencies:   mbed

Fork of HelloWorld by Simon Ford

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "SerialBuff.h"
00003 #include "Timer.h"
00004 
00005 DigitalOut drift1(LED1),drift2(LED2),drift3(LED3),drift4(LED4);
00006 DigitalOut rod1(p23),rod2(p24),rod3(p25),rod4(p26),rod5(p27),rod6(p28),rod7(p29),rod8(p30);
00007 DigitalIn reset1(p13);
00008 AnalogIn sone1(p15),sone2(p16),sone3(p17),sone4(p18);
00009 
00010 Ticker t1;
00011 
00012 LocalFileSystem local("local");
00013 
00014 Serial pc(USBTX, USBRX);
00015 
00016 
00017 void alarm1(void);
00018 void alarm2(void);
00019 void alarm3(void);
00020 void alarm4(void);
00021 void blink1(void);
00022 void blink2(void);
00023 void blink3(void);
00024 void blink4(void);
00025 void logg(void);
00026 void testlogg(void);
00027 void reset(void);
00028 void sekunder(void);
00029 void passord(void);
00030 void meny(void);
00031 void status(void);
00032 void linje1(void);
00033 
00034 #define grense0 1                         // 3.3v
00035 #define grense3 0.5                       // sone 1 0.5
00036 #define grense2 0.662                     // sone 2 0.662
00037 #define grense1 0.398                     // sone 1 og 2 0.398
00038 #define blink 0.1
00039 #define vindu 0.08
00040 
00041 volatile unsigned int sek = 0,min = 0,hour = 0,dag = 0,stat_rod1,stat_rod2,stat_rod3,stat_rod4,stat_rod5,stat_rod6,stat_rod7,stat_rod8,stat_reset,passord_1,valg,reset2;
00042 
00043 
00044 int main()
00045 {
00046     reset1.mode(PullDown);
00047     passord();
00048     meny();
00049     t1.attach(&sekunder, 1.0);
00050     if(valg == 1) {
00051         while(1) {
00052             alarm1();
00053             alarm2();
00054             alarm3();
00055             alarm4();
00056 
00057             reset();
00058             wait (0.1);
00059         }
00060     }
00061 }
00062 void meny(void)
00063 {
00064 
00065     printf("\r\n\r\nMeny\r\n\r\n");
00066     printf("Tast:\r\n");
00067     printf("1 starte systemet\r\n");
00068     printf("2 reset alarmen\r\n");
00069     printf("3 avslutte systemet\r\n");
00070     printf("4 status\r\n");
00071     scanf("%d",&valg);
00072 
00073     if(valg == 1) {
00074 
00075     } else if(valg == 2) {
00076         reset2 = 1;
00077     } else if(valg == 3) {
00078         passord();
00079     } else if(valg == 4) {
00080         status();
00081     } else {
00082 
00083     }
00084 }
00085 
00086 
00087 
00088 void linje1(void)
00089 {
00090     printf("\r\nVelkommen til BitGuard 3.25.1");
00091 }
00092 
00093 void status(void)
00094 {
00095     if(rod1 == 1) {
00096         printf("sløyfe 1\r\ndetektor 1 har slått ut etter %dsek %dmin %dtimer %ddager\r\n",sek,min,hour,dag);
00097     }
00098     if (rod2 == 1) {
00099         printf("sløyfe 1\r\ndetektor 2 har slått ut etter %dsek %dmin %dtimer %ddager\r\n",sek,min,hour,dag);
00100     }
00101     if(rod3 == 1) {
00102         printf("sløyfe 2\r\ndetektor 1 har slått ut etter %dsek %dmin %dtimer %ddager\r\n",sek,min,hour,dag);
00103     }
00104     if(rod4 == 1) {
00105         printf("sløyfe 2\r\ndetektor 2 har slått ut etter %dsek %dmin %dtimer %ddager\r\n",sek,min,hour,dag);
00106     }
00107     if(rod5 == 1) {
00108         printf("sløyfe 3\r\ndetektor 1 har slått ut etter %dsek %dmin %dtimer %ddager\r\n",sek,min,hour,dag);
00109     }
00110     if(rod6 == 1) {
00111         printf("sløyfe 3\r\ndetektor 2 har slått ut etter %dsek %dmin %dtimer %ddager\r\n",sek,min,hour,dag);
00112     }
00113     if(rod7 == 1) {
00114         printf("sløyfe 4\r\ndetektor 1 har slått ut etter %dsek %dmin %dtimer %ddager\r\n",sek,min,hour,dag);
00115 
00116     }
00117     if(rod8 == 1) {
00118         printf("sløyfe 4\r\ndetektor 2 har slått ut etter %dsek %dmin %dtimer %ddager\r\n",sek,min,hour,dag);
00119     }
00120     if(reset1 == 0) {
00121         printf("alarmen har blitt resatt\r\n");
00122     } else {
00123         printf("\r\nalt er i orden, ingen alarm er utlost");
00124     }
00125     meny();
00126 }
00127 void passord (void)
00128 {
00129     printf("Hei!\r\nvenligst tast inn passord\r\n");
00130     scanf("%d", &passord_1);
00131     while (passord_1 != 258456) {
00132         printf("passord du har tastet inn er feil \r\nvenligst prov igjen\r\n ");
00133         scanf("%d", &passord_1);
00134     }
00135     linje1();
00136 }
00137 void sekunder(void)
00138 {
00139     sek++;
00140     min = sek / 60;
00141     sek = sek % 60;
00142     hour = min / 60;
00143     min %= 60;
00144     dag = hour / 24;
00145     hour %= 24;
00146 
00147 }
00148 void alarm1(void)
00149 {
00150     if( (sone1 >=  (grense0 - vindu)) && (sone1 <= (grense0 + vindu))) {
00151         blink1();
00152         testlogg();
00153     } else if( (sone1 >=  (grense1 - vindu)) && (sone1 <= (grense1 + vindu))) {
00154         blink1();
00155         rod1 = 1;
00156         rod2 = 1;
00157 
00158     }   else if( (sone1 >=  (grense2 - vindu)) && (sone1 <= (grense2 + vindu))) {
00159         blink1();
00160         rod1 = 1;
00161 
00162     }   else {
00163         blink1();
00164         rod2 = 1;
00165 
00166 
00167     }
00168 
00169 
00170 
00171 }
00172 
00173 
00174 
00175 
00176 void alarm2(void)
00177 {
00178     if((sone2 >=  (grense0 - vindu)) && (sone2 <= (grense0 + vindu))) {
00179         blink2();
00180         testlogg();
00181     } else if((sone2 >=  (grense1 - vindu)) && (sone2 <= (grense1 + vindu))) {
00182         blink2();
00183         rod3 = 1;
00184         rod4 = 1;
00185     }   else if((sone2 >=  (grense2 - vindu)) && (sone2 <= (grense2 + vindu))) {
00186         blink2();
00187         rod3 = 1;
00188 
00189     }   else {
00190         blink2();
00191         rod4 = 1;
00192 
00193     }
00194 
00195 
00196 }
00197 
00198 void alarm3(void)
00199 {
00200     if( (sone3 >=  (grense0 - vindu)) && (sone3 <= (grense0 + vindu))) {
00201         blink3();
00202         testlogg();
00203     } else if( (sone3 >=  (grense1 - vindu)) && (sone3 <= (grense1 + vindu))) {
00204         blink3();
00205         rod5 = 1;
00206         rod6 = 1;
00207     }   else if( (sone3 >=  (grense2 - vindu)) && (sone3 <= (grense2 + vindu))) {
00208         blink3();
00209         rod5 = 1;
00210     }   else {
00211         blink3();
00212         rod6 = 1;
00213 
00214     }
00215 
00216 
00217 
00218 }
00219 
00220 void alarm4(void)
00221 {
00222     if( (sone4 >=  (grense0 - vindu)) && (sone4 <= (grense0 + vindu))) {
00223         blink4();
00224         testlogg();
00225     } else if( (sone4 >=  (grense1 - vindu)) && (sone4 <= (grense1 + vindu))) {
00226         blink4();
00227         rod7 = 1;
00228         rod8 = 1;
00229     }   else if( (sone4 >=  (grense2 - vindu)) && (sone4 <= (grense2 + vindu))) {
00230         blink4();
00231         rod7 = 1;
00232     }   else {
00233         blink4();
00234         rod8 = 1;
00235 
00236     }
00237 
00238 
00239 
00240 }
00241 void blink1(void)
00242 {
00243     if ( rod1 == 1||rod2 == 1) {
00244         drift1 = 1;
00245         wait(blink);
00246         drift1 = 0;
00247     } else {
00248         drift1 = 1;
00249     }
00250 }
00251 
00252 void blink2(void)
00253 {
00254     if ( rod3 == 1||rod4 == 1) {
00255         drift2 = 1;
00256         wait(blink);
00257         drift2 = 0;
00258     } else {
00259         drift2 = 1;
00260     }
00261 }
00262 
00263 void blink3(void)
00264 {
00265     if ( rod5 == 1||rod6 == 1) {
00266         drift3 = 1;
00267         wait(blink);
00268         drift3 = 0;
00269     } else {
00270         drift3 = 1;
00271     }
00272 }
00273 
00274 void blink4(void)
00275 {
00276     if ( rod7 == 1||rod8 == 1) {
00277         drift4 = 1;
00278         wait(blink);
00279         drift4 = 0;
00280     } else {
00281         drift4 = 1;
00282     }
00283 }
00284 void reset(void)
00285 {
00286     if (reset1 == 0 || reset2 == 1 ) {
00287         rod1=rod2=rod3=rod4=rod5=rod6=rod7=rod8=drift1=drift2=drift3=drift4 = 0 ;
00288     }
00289     reset2 = 0;
00290     // scanf("%d",&valg);
00291 }
00292 
00293 
00294 void testlogg(void)
00295 {
00296     if(rod1||rod2||rod3||rod4||rod5||rod6||rod7||rod8 == 1) {
00297         logg();
00298 
00299     }
00300 }
00301 
00302 
00303 void logg(void)
00304 {
00305     FILE *fp = fopen("/local/logg.txt", "a");
00306     if (fp == NULL) {
00307         pc.printf("Filfeil - avslutter\r\n");
00308         exit(1);
00309     }
00310 
00311     if(rod1 == 1 && stat_rod1 == 0 ) {
00312         fprintf(fp,"sløyfe 1\r\ndetektor 1 har slått ut etter %dsek %dmin %dtimer %ddager\r\n",sek,min,hour,dag);
00313         stat_rod1 = 1;
00314     }
00315     if (rod2 == 1 && stat_rod2 == 0 ) {
00316         fprintf(fp,"sløyfe 1\r\ndetektor 2 har slått ut etter %dsek %dmin %dtimer %ddager\r\n",sek,min,hour,dag);
00317         stat_rod2 = 1;
00318     }
00319     if(rod3 == 1 && stat_rod3 == 0 ) {
00320         fprintf(fp,"sløyfe 2\r\ndetektor 1 har slått ut etter %dsek %dmin %dtimer %ddager\r\n",sek,min,hour,dag);
00321         stat_rod3 = 1;
00322     }
00323     if(rod4 == 1 && stat_rod4 == 0 ) {
00324         fprintf(fp,"sløyfe 2\r\ndetektor 2 har slått ut etter %dsek %dmin %dtimer %ddager\r\n",sek,min,hour,dag);
00325         stat_rod4 = 1;
00326     }
00327     if(rod5 == 1 && stat_rod5 == 0 ) {
00328         fprintf(fp,"sløyfe 3\r\ndetektor 1 har slått ut etter %dsek %dmin %dtimer %ddager\r\n",sek,min,hour,dag);
00329         stat_rod5 = 1;
00330     }
00331     if(rod6 == 1 && stat_rod6 == 0 ) {
00332         fprintf(fp,"sløyfe 3\r\ndetektor 2 har slått ut etter %dsek %dmin %dtimer %ddager\r\n",sek,min,hour,dag);
00333         stat_rod6 = 1;
00334     }
00335     if(rod7 == 1 && stat_rod7 == 0 ) {
00336         fprintf(fp,"sløyfe 4\r\ndetektor 1 har slått ut etter %dsek %dmin %dtimer %ddager\r\n",sek,min,hour,dag);
00337         stat_rod7 = 1;
00338     }
00339     if(rod8 == 1 && stat_rod8 == 0 ) {
00340         fprintf(fp,"sløyfe 4\r\ndetektor 2 har slått ut etter %dsek %dmin %dtimer %ddager\r\n",sek,min,hour,dag);
00341         stat_rod8 = 1;
00342     }
00343     if(reset1 == 0 && stat_reset == 0) {
00344         fprintf(fp,"alarmen har blitt resatt\r\n");
00345         stat_reset = 1;
00346     }
00347     fclose(fp);
00348 }