klokka 15:07

Fork of AlarmsystemDel1 by Programmeringsgruppe 1

main.cpp

Committer:
andreped
Date:
2018-02-09
Revision:
11:dad1798ed88f
Parent:
10:f0a6d74095d4
Child:
12:0193024eab13

File content as of revision 11:dad1798ed88f:

#include "mbed.h"
#include <vector>
#include <math.h>

#define Inn 4
//#define Feil 0<1


//DigitalOut myled2(LED2);
Serial pc(USBTX, USBRX);
DigitalOut Driftslys(LED1);
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 tilstand = 0;
int TilstandSjekk(int, int);

Ticker AlarmBlink; // 10Hz blinking for alarmfunksjon på lys og telling
//nt Tid = 0;
volatile int sysclock = 0;

int Tilstandssjekk();
void AlarmBlink_Start(void);
//volatile int Klokke = 0;

int main()
{
    AlarmBlink.attach(&AlarmBlink_Start, 0.05);
    while(1) {
        /*if(Servicebryter == 1) {
            Utganger1 = 0;
            Utganger2 = 0;
        }*/
        Soner[0] = _Sone1;
        //Soner[1] = _Sone2;
        //Soner[2] = _Sone3;
        //Soner[3] = _Sone4;
        for(int i=0; i < Inn; 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");
                tilstand = 1;
                TilstandSjekk(i, tilstand);
            }
            if((Soner[i] > 0.55 )&&( Soner[i] < 0.59)) { //Normaldrift
                //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");
                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");
                tilstand = 3;
                TilstandSjekk(i, tilstand);
            }
            //wait(1.5);
        }
        //pc.printf("%f\n", Sone1[]);
        //Tilstandssjekk(Sone1[]);
        //float volt = Sone1[];
        //pc.printf("%f\n", volt);
        //while(sysclock == 1);
        //while(sysclock == 0);
        //Tid++;
    }
}

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)
{
    Driftslys = 0;
}