klokka 15:07

Fork of AlarmsystemDel1 by Programmeringsgruppe 1

main.cpp

Committer:
Banyrud
Date:
2018-02-01
Revision:
7:25e0260ee887
Parent:
5:045ef3068f21
Child:
8:bdb8bd12d4f4

File content as of revision 7:25e0260ee887:

#include "mbed.h"

#define Feil 0<1
#define Tilstand1 2.5<2.7
#define Tilstand2 2.1<2.3
#define Tilstand3 3.3
#define Normaldrift 1.8<2.0
DigitalOut myled2(LED2);
Serial pc(USBTX, USBRX);
DigitalOut Driftslys(LED1);
BusOut AlarmUtganger1(p21, p22, p23, p24);
BusOut AlarmUtganger2(p25, p26, p27, p28);
DigitalIn Servicebryter(p20);
AnalogIn _Sone1(p15); float Sone1;
AnalogIn _Sone2(p16); float Sone2;
AnalogIn _Sone3(p17); float Sone3;
AnalogIn _Sone4(p19); float Sone4;
Ticker AlarmBlink; //10Hz blinking for alarmfunksjon på lys og telling
int Tid = 0;
volatile int sysclock = 0;

int Utganger1 = AlarmUtganger1;
int Utganger2 = AlarmUtganger2;
int Bryter = Servicebryter;
int Door1_1 = 0, Door1_2 = 0, Door2_1 = 0, Door2_2 = 0, Door3_1 = 0, Door3_2 = 0, Door4_1 = 0, Door4_2 = 0;
void fill_arrSone (float Sone1,float Sone2,float Sone3,float Sone4);
float filled_arr[10];
int DoorOne[4] = { Door1_1, Door2_1, Door3_1, Door4_1 };
int DoorTwo[4] = { Door1_2, Door2_2, Door3_2, Door4_2 };

enum {_Feil, _Tilstand1, _Tilstand2, _Tilstand3, _NormalDrift} Tilstand; // Tilstand1 = Bryter1 i Sonen valgt, Tilstand2 = Bryter2 i sonen valgt, Tilstand3 = bryter 1 og 2 i sonen valgt, Normaldrift = alt er optimalt.
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;
        }
        Tilstandssjekk();
        float volt = Sone1*3.3;
        pc.printf("%f\n", volt);
        wait(1.0);
        //while(sysclock == 1);
        //while(sysclock == 0);
        Tid++;
    }
}

int Tilstandssjekk()
{
    int i = 0;
    for(i = 0; i < 3; i++) {
        if(filled_arr[i] == Tilstand1) {
            pc.printf("I tilstand 1\n");
            AlarmBlink_Start();
            DoorOne[i] = AlarmUtganger1;
        }
        if(Tilstand2 == filled_arr[i]) {
            pc.printf("I tilstand 2\n");
            AlarmBlink_Start();
            DoorTwo[i] = AlarmUtganger2;
        }
        if(Tilstand3 == filled_arr[i]) {
            pc.printf("I tilstand 3\n");
            AlarmBlink_Start();
            DoorOne[i] = AlarmUtganger1;
            DoorTwo[i] = AlarmUtganger2;
        }
        if(Feil == filled_arr[i]) {
            AlarmBlink_Start();
            pc.printf("I tilstand feil\n");
        }
        if(Normaldrift == filled_arr[i]) {
            Driftslys = 1;
            DoorOne[i] = AlarmUtganger1 - DoorOne[i];
            pc.printf("I tilstand normaldrift\n");
        }
        if(i < 0 ) {
            DoorOne[i] = AlarmUtganger1 + DoorOne[i];
            DoorTwo[i] = AlarmUtganger2 - DoorTwo[i];
        }
        if(i < 0 ) {
            DoorOne[i] = AlarmUtganger2 + DoorTwo[i];
        }
    }
    return 0;
}

void AlarmBlink_Start(void)
{
    sysclock = !sysclock;
    Driftslys = 1;
    if(Normaldrift == 1) {
        Driftslys = 1;
        Utganger1 = 0;
        Utganger2 = 0;
    }
}
void fill_arrSone =(float Sone1, float Sone2, float Sone3, float Sone4){
        filled_arr[1] = Sone1;
        filled_arr[2] = Sone2;
        filled_arr[3] = Sone3;
        filled_arr[4] = Sone4;
}