klokka 15:07

Fork of AlarmsystemDel1 by Programmeringsgruppe 1

Committer:
andreped
Date:
Fri Feb 09 10:53:12 2018 +0000
Revision:
11:dad1798ed88f
Parent:
10:f0a6d74095d4
Child:
12:0193024eab13
Fredag 09.02.2018 - 11.55

Who changed what in which revision?

UserRevisionLine numberNew contents of line
andreped 0:33bf28fd1ac6 1 #include "mbed.h"
andreped 6:a3b97bf7902b 2 #include <vector>
andreped 11:dad1798ed88f 3 #include <math.h>
andreped 0:33bf28fd1ac6 4
andreped 6:a3b97bf7902b 5 #define Inn 4
andreped 6:a3b97bf7902b 6 //#define Feil 0<1
andreped 10:f0a6d74095d4 7
andreped 6:a3b97bf7902b 8
andreped 6:a3b97bf7902b 9 //DigitalOut myled2(LED2);
andreped 4:aa2cff91ff4f 10 Serial pc(USBTX, USBRX);
andreped 0:33bf28fd1ac6 11 DigitalOut Driftslys(LED1);
andreped 10:f0a6d74095d4 12 BusOut AlarmUtganger1(p21, p22, p23, p24); //1 - Dør 1 Sone 1, 2 - Dør 1 Sone 2, 4 - Dør 1 Sone 3, 8 - Dør 1 Sone 4
andreped 10:f0a6d74095d4 13 BusOut AlarmUtganger2(p25, p26, p27, p28); //1 - Dør 2 Sone 1, 2 - Dør 2 Sone 2, 4 - Dør 2 Sone 3, 8 - Dør 2 Sone 4
andreped 0:33bf28fd1ac6 14 DigitalIn Servicebryter(p20);
andreped 11:dad1798ed88f 15 AnalogIn _Sone1(p15); AnalogIn _Sone2(p16); AnalogIn _Sone3(p17); AnalogIn _Sone4(p19);
andreped 11:dad1798ed88f 16 float Soner[Inn]; int tilstand = 0;
andreped 11:dad1798ed88f 17 int TilstandSjekk(int, int);
andreped 0:33bf28fd1ac6 18
andreped 11:dad1798ed88f 19 Ticker AlarmBlink; // 10Hz blinking for alarmfunksjon på lys og telling
andreped 6:a3b97bf7902b 20 //nt Tid = 0;
andreped 11:dad1798ed88f 21 volatile int sysclock = 0;
andreped 1:6917ec4f5e6d 22
andreped 1:6917ec4f5e6d 23 int Tilstandssjekk();
andreped 11:dad1798ed88f 24 void AlarmBlink_Start(void);
andreped 6:a3b97bf7902b 25 //volatile int Klokke = 0;
andreped 1:6917ec4f5e6d 26
andreped 1:6917ec4f5e6d 27 int main()
andreped 1:6917ec4f5e6d 28 {
andreped 11:dad1798ed88f 29 AlarmBlink.attach(&AlarmBlink_Start, 0.05);
andreped 1:6917ec4f5e6d 30 while(1) {
andreped 6:a3b97bf7902b 31 /*if(Servicebryter == 1) {
andreped 1:6917ec4f5e6d 32 Utganger1 = 0;
andreped 1:6917ec4f5e6d 33 Utganger2 = 0;
andreped 6:a3b97bf7902b 34 }*/
andreped 6:a3b97bf7902b 35 Soner[0] = _Sone1;
andreped 6:a3b97bf7902b 36 //Soner[1] = _Sone2;
andreped 6:a3b97bf7902b 37 //Soner[2] = _Sone3;
andreped 6:a3b97bf7902b 38 //Soner[3] = _Sone4;
andreped 6:a3b97bf7902b 39 for(int i=0; i < Inn; i++) {
andreped 11:dad1798ed88f 40 //pc.printf("%f\n", Soner[i]);
andreped 11:dad1798ed88f 41 Driftslys = 1;
andreped 11:dad1798ed88f 42 if((AlarmUtganger1 && AlarmUtganger2) > 0) AlarmBlink_Start();
andreped 6:a3b97bf7902b 43 if((Soner[i] > 0.75 )&&( Soner[i] < 0.83)) { //Tilstand1, Dør 1 åpen
andreped 11:dad1798ed88f 44 //pc.printf("Vi er i Tilstand1\n");
andreped 11:dad1798ed88f 45 tilstand = 1;
andreped 11:dad1798ed88f 46 TilstandSjekk(i, tilstand);
andreped 6:a3b97bf7902b 47 }
andreped 6:a3b97bf7902b 48 if((Soner[i] > 0.55 )&&( Soner[i] < 0.59)) { //Normaldrift
andreped 11:dad1798ed88f 49 //pc.printf("Vi er i Normaldrift\n");
andreped 11:dad1798ed88f 50 tilstand = 0;
andreped 11:dad1798ed88f 51 TilstandSjekk(i, tilstand);
andreped 6:a3b97bf7902b 52 }
andreped 6:a3b97bf7902b 53 if((Soner[i] > 0.65 )&&( Soner[i] < 0.69)) { //Tilstand 2, Dør 2 åpen
andreped 11:dad1798ed88f 54 //pc.printf("Vi er i tilstand2\n");
andreped 11:dad1798ed88f 55 tilstand = 2;
andreped 11:dad1798ed88f 56 TilstandSjekk(i, tilstand);
andreped 6:a3b97bf7902b 57 }
andreped 6:a3b97bf7902b 58 if(Soner[i] >= 1) { //Begge dører er åpne
andreped 11:dad1798ed88f 59 //pc.printf("Vi er i tilstand 3, begge doorer er aapne");
andreped 11:dad1798ed88f 60 tilstand = 3;
andreped 11:dad1798ed88f 61 TilstandSjekk(i, tilstand);
andreped 6:a3b97bf7902b 62 }
andreped 11:dad1798ed88f 63 //wait(1.5);
andreped 1:6917ec4f5e6d 64 }
andreped 6:a3b97bf7902b 65 //pc.printf("%f\n", Sone1[]);
andreped 6:a3b97bf7902b 66 //Tilstandssjekk(Sone1[]);
andreped 6:a3b97bf7902b 67 //float volt = Sone1[];
andreped 6:a3b97bf7902b 68 //pc.printf("%f\n", volt);
Banyrud 5:045ef3068f21 69 //while(sysclock == 1);
Banyrud 5:045ef3068f21 70 //while(sysclock == 0);
andreped 6:a3b97bf7902b 71 //Tid++;
andreped 0:33bf28fd1ac6 72 }
andreped 0:33bf28fd1ac6 73 }
andreped 1:6917ec4f5e6d 74
andreped 11:dad1798ed88f 75 int TilstandSjekk(int i, int tilstand)
andreped 11:dad1798ed88f 76 {
andreped 11:dad1798ed88f 77 if(tilstand == 0) {
andreped 11:dad1798ed88f 78 //pc.printf("Vi er i funksjonen normaldrift i sone: %d \n", i);
andreped 11:dad1798ed88f 79 double n = 2; // We want 2^i
andreped 11:dad1798ed88f 80 double Y = 1;
andreped 11:dad1798ed88f 81 for(int k=1; k<=i; k++) Y = Y*n;
andreped 11:dad1798ed88f 82 if(Y == AlarmUtganger1) AlarmUtganger1 = AlarmUtganger1 - Y;
andreped 11:dad1798ed88f 83 if(Y == AlarmUtganger2) AlarmUtganger2 = AlarmUtganger2 - Y;
andreped 11:dad1798ed88f 84 if((AlarmUtganger1 && AlarmUtganger2) == 0 ) AlarmBlink.detach();
andreped 11:dad1798ed88f 85 int Utganger1 = AlarmUtganger1; int Utganger2 = AlarmUtganger2;
andreped 11:dad1798ed88f 86 //pc.printf("Utgangsbuss1 har naa verdien: %d \n Utgangsbuss2 har naa verdien: %d", Utganger1, Utganger2);
andreped 11:dad1798ed88f 87 }
andreped 11:dad1798ed88f 88 if(tilstand == 1) { //Hvis dør 1 er åpen...
andreped 11:dad1798ed88f 89 //pc.printf("Vi er i funksjonen tilstandssjekk dor 1, med verdi: %d\n", i);
andreped 11:dad1798ed88f 90 double n = 2; // We want 2^i
andreped 11:dad1798ed88f 91 double Y = 1;
andreped 11:dad1798ed88f 92 for(int k=1; k<=i; k++) Y = Y*n;
andreped 11:dad1798ed88f 93 if( Y == AlarmUtganger2 ) AlarmUtganger2 = AlarmUtganger2 - Y;
andreped 11:dad1798ed88f 94 if( Y!=AlarmUtganger1) AlarmUtganger1 = Y + AlarmUtganger1; //Sjekk om denne verdien har blitt sjekket før, hvis ikke starter alarm på neste dør.
andreped 11:dad1798ed88f 95 int Utganger1 = AlarmUtganger1;
andreped 11:dad1798ed88f 96 //pc.printf("Vi har verdien paa utgangsbuss: %d\n", Utganger1);
andreped 11:dad1798ed88f 97 }
andreped 11:dad1798ed88f 98 if(tilstand == 2) { //Hvis dør 2 er åpen...
andreped 11:dad1798ed88f 99 //pc.printf("Vi er i funksjonen tilstandssjekk dor 2, med verdi: %d\n", i);
andreped 11:dad1798ed88f 100 double n = 2; // We want 2^i
andreped 11:dad1798ed88f 101 double Y = 1;
andreped 11:dad1798ed88f 102 for(int k=1; k<=i; k++) Y = Y*n;
andreped 11:dad1798ed88f 103 if( Y == AlarmUtganger1 ) AlarmUtganger1 = AlarmUtganger1 - Y;
andreped 11:dad1798ed88f 104 if( Y!=AlarmUtganger2) AlarmUtganger2 = Y + AlarmUtganger2; //Sjekk om denne verdien har blitt sjekket før, hvis ikke starter alarm på neste dør.
andreped 11:dad1798ed88f 105 int Utganger2 = AlarmUtganger2;
andreped 11:dad1798ed88f 106 //pc.printf("Vi har verdien paa utgangsbuss: %d\n", Utganger2);
andreped 11:dad1798ed88f 107 }
andreped 11:dad1798ed88f 108 if(tilstand == 3) { //Hvis begge dører er åpne
andreped 11:dad1798ed88f 109 //pc.printf("Vi er i funksjonen tilstandssjekk alle dorer, med verdi: %d \n", i);
andreped 11:dad1798ed88f 110 double n = 2; // We want 2^i
andreped 11:dad1798ed88f 111 double Y = 1;
andreped 11:dad1798ed88f 112 for(int k=1; k<=i; k++) Y = Y*n;
andreped 11:dad1798ed88f 113 if( Y!=AlarmUtganger1 ) AlarmUtganger1 = Y + AlarmUtganger1;
andreped 11:dad1798ed88f 114 if( Y!=AlarmUtganger2 ) AlarmUtganger2 = Y + AlarmUtganger2;
andreped 11:dad1798ed88f 115 int Utganger2 = AlarmUtganger2;
andreped 11:dad1798ed88f 116 int Utganger1 = AlarmUtganger2;
andreped 11:dad1798ed88f 117 //pc.printf("Utgangsbuss1 har verdien: %d \n Utgangsbuss2 har verdien: %d \n", Utganger1, Utganger2);
andreped 11:dad1798ed88f 118 }
andreped 11:dad1798ed88f 119 return 0;
andreped 10:f0a6d74095d4 120 }
andreped 1:6917ec4f5e6d 121
andreped 11:dad1798ed88f 122 void AlarmBlink_Start(void)
andreped 1:6917ec4f5e6d 123 {
andreped 11:dad1798ed88f 124 Driftslys = 0;
andreped 11:dad1798ed88f 125 }