Programmeringsgruppe 1
/
Alarmsystem20_02_2018
klokka 15:07
Fork of AlarmsystemDel1 by
main.cpp@11:dad1798ed88f, 2018-02-09 (annotated)
- 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?
User | Revision | Line number | New 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 | } |