Programmeringsgruppe 1
/
Alarmsystem20_02_2018
klokka 15:07
Fork of AlarmsystemDel1 by
Diff: main.cpp
- Revision:
- 11:dad1798ed88f
- Parent:
- 10:f0a6d74095d4
- Child:
- 12:0193024eab13
--- a/main.cpp Fri Feb 09 07:51:55 2018 +0000 +++ b/main.cpp Fri Feb 09 10:53:12 2018 +0000 @@ -1,5 +1,6 @@ #include "mbed.h" #include <vector> +#include <math.h> #define Inn 4 //#define Feil 0<1 @@ -11,22 +12,21 @@ 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 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 DigitalIn Servicebryter(p20); -AnalogIn _Sone1(p15); AnalogIn _Sone2(p16); AnalogIn _Sone3(p17); AnalogIn _Sone4(p19); -float Soner[Inn]; -int tilstand1(int i); +AnalogIn _Sone1(p15); AnalogIn _Sone2(p16); AnalogIn _Sone3(p17); AnalogIn _Sone4(p19); +float Soner[Inn]; int tilstand = 0; +int TilstandSjekk(int, int); -//Ticker AlarmBlink; // 10Hz blinking for alarmfunksjon på lys og telling +Ticker AlarmBlink; // 10Hz blinking for alarmfunksjon på lys og telling //nt Tid = 0; -//volatile int sysclock = 0; +volatile int sysclock = 0; int Tilstandssjekk(); -//void AlarmBlink_Start(void); +void AlarmBlink_Start(void); //volatile int Klokke = 0; int main() { - //AlarmBlink.attach(&AlarmBlink_Start, 0.05); - + AlarmBlink.attach(&AlarmBlink_Start, 0.05); while(1) { /*if(Servicebryter == 1) { Utganger1 = 0; @@ -37,21 +37,30 @@ //Soner[2] = _Sone3; //Soner[3] = _Sone4; for(int i=0; i < Inn; i++) { - pc.printf("%f\n", Soner[i]); + //pc.printf("%f\n", Soner[i]); + Driftslys = 1; + if((AlarmUtganger1 && AlarmUtganger2) > 0) AlarmBlink_Start(); if((Soner[i] > 0.75 )&&( Soner[i] < 0.83)) { //Tilstand1, Dør 1 åpen - pc.printf("Vi er i Tilstand1\n"); - Tilstand1(i); + //pc.printf("Vi er i Tilstand1\n"); + tilstand = 1; + TilstandSjekk(i, tilstand); } if((Soner[i] > 0.55 )&&( Soner[i] < 0.59)) { //Normaldrift - pc.printf("Vi er i Normaldrift\n"); + //pc.printf("Vi er i Normaldrift\n"); + tilstand = 0; + TilstandSjekk(i, tilstand); } if((Soner[i] > 0.65 )&&( Soner[i] < 0.69)) { //Tilstand 2, Dør 2 åpen - pc.printf("Vi er i tilstand2\n"); + //pc.printf("Vi er i tilstand2\n"); + tilstand = 2; + TilstandSjekk(i, tilstand); } if(Soner[i] >= 1) { //Begge dører er åpne - pc.printf("Vi er i tilstand 3, begge doorer er aapne"); + //pc.printf("Vi er i tilstand 3, begge doorer er aapne"); + tilstand = 3; + TilstandSjekk(i, tilstand); } - wait(1.5); + //wait(1.5); } //pc.printf("%f\n", Sone1[]); //Tilstandssjekk(Sone1[]); @@ -63,15 +72,54 @@ } } -int Tilstand1(int a) { - AlarmUtganger1 = pow(2, a); //Alarmutganger operer med binærtall så bytter ut +int TilstandSjekk(int i, int tilstand) +{ + if(tilstand == 0) { + //pc.printf("Vi er i funksjonen normaldrift i sone: %d \n", i); + double n = 2; // We want 2^i + double Y = 1; + for(int k=1; k<=i; k++) Y = Y*n; + if(Y == AlarmUtganger1) AlarmUtganger1 = AlarmUtganger1 - Y; + if(Y == AlarmUtganger2) AlarmUtganger2 = AlarmUtganger2 - Y; + if((AlarmUtganger1 && AlarmUtganger2) == 0 ) AlarmBlink.detach(); + int Utganger1 = AlarmUtganger1; int Utganger2 = AlarmUtganger2; + //pc.printf("Utgangsbuss1 har naa verdien: %d \n Utgangsbuss2 har naa verdien: %d", Utganger1, Utganger2); + } + if(tilstand == 1) { //Hvis dør 1 er åpen... + //pc.printf("Vi er i funksjonen tilstandssjekk dor 1, med verdi: %d\n", i); + double n = 2; // We want 2^i + double Y = 1; + for(int k=1; k<=i; k++) Y = Y*n; + if( Y == AlarmUtganger2 ) AlarmUtganger2 = AlarmUtganger2 - Y; + if( Y!=AlarmUtganger1) AlarmUtganger1 = Y + AlarmUtganger1; //Sjekk om denne verdien har blitt sjekket før, hvis ikke starter alarm på neste dør. + int Utganger1 = AlarmUtganger1; + //pc.printf("Vi har verdien paa utgangsbuss: %d\n", Utganger1); + } + if(tilstand == 2) { //Hvis dør 2 er åpen... + //pc.printf("Vi er i funksjonen tilstandssjekk dor 2, med verdi: %d\n", i); + double n = 2; // We want 2^i + double Y = 1; + for(int k=1; k<=i; k++) Y = Y*n; + if( Y == AlarmUtganger1 ) AlarmUtganger1 = AlarmUtganger1 - Y; + if( Y!=AlarmUtganger2) AlarmUtganger2 = Y + AlarmUtganger2; //Sjekk om denne verdien har blitt sjekket før, hvis ikke starter alarm på neste dør. + int Utganger2 = AlarmUtganger2; + //pc.printf("Vi har verdien paa utgangsbuss: %d\n", Utganger2); + } + if(tilstand == 3) { //Hvis begge dører er åpne + //pc.printf("Vi er i funksjonen tilstandssjekk alle dorer, med verdi: %d \n", i); + double n = 2; // We want 2^i + double Y = 1; + for(int k=1; k<=i; k++) Y = Y*n; + if( Y!=AlarmUtganger1 ) AlarmUtganger1 = Y + AlarmUtganger1; + if( Y!=AlarmUtganger2 ) AlarmUtganger2 = Y + AlarmUtganger2; + int Utganger2 = AlarmUtganger2; + int Utganger1 = AlarmUtganger2; + //pc.printf("Utgangsbuss1 har verdien: %d \n Utgangsbuss2 har verdien: %d \n", Utganger1, Utganger2); + } + return 0; } -/*void AlarmBlink_Start(void) +void AlarmBlink_Start(void) { - sysclock = !sysclock; - Driftslys = 1; - if(Normaldrift == 1) { - sysclock = 1; - } -}*/ \ No newline at end of file + Driftslys = 0; +} \ No newline at end of file