fort test av mbed cli

Fork of Alarmsystem_rev_innlevering by Programmeringsgruppe 1

Committer:
Banyrud
Date:
Tue Feb 20 08:35:16 2018 +0000
Revision:
14:8e7aaf0cf5d7
Parent:
13:0622c228b67d
Child:
15:272fb4e610dc
rev_med_stuff

Who changed what in which revision?

UserRevisionLine numberNew contents of line
andreped 0:33bf28fd1ac6 1 #include "mbed.h"
andreped 12:0193024eab13 2 #include "rtos.h"
andreped 12:0193024eab13 3 #include <RtosTimer.h>
andreped 11:dad1798ed88f 4 #include <math.h>
andreped 12:0193024eab13 5 #include "mbed_error.h"
Banyrud 14:8e7aaf0cf5d7 6 #include<string>
andreped 12:0193024eab13 7
Banyrud 13:0622c228b67d 8 /////DEFINISJONER/////
andreped 6:a3b97bf7902b 9 #define Inn 4
Banyrud 13:0622c228b67d 10 Serial pc(USBTX, USBRX);
andreped 6:a3b97bf7902b 11 //#define Feil 0<1
andreped 10:f0a6d74095d4 12
Banyrud 13:0622c228b67d 13 /////INNGANGER/////
andreped 0:33bf28fd1ac6 14 DigitalIn Servicebryter(p20);
andreped 12:0193024eab13 15 AnalogIn _Sone1(p15);
andreped 12:0193024eab13 16 AnalogIn _Sone2(p16);
andreped 12:0193024eab13 17 AnalogIn _Sone3(p17);
andreped 12:0193024eab13 18 AnalogIn _Sone4(p19);
Banyrud 13:0622c228b67d 19
Banyrud 13:0622c228b67d 20 /////UTGANGER/////
Banyrud 13:0622c228b67d 21 DigitalOut Driftslys(LED1);
Banyrud 13:0622c228b67d 22 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
Banyrud 13:0622c228b67d 23 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
Banyrud 13:0622c228b67d 24 //DigitalOut myled2(LED2);
Banyrud 13:0622c228b67d 25
Banyrud 13:0622c228b67d 26 /////VARIABLER/////
andreped 12:0193024eab13 27 float Soner[Inn];
andreped 12:0193024eab13 28 int tilstand = 0;
andreped 11:dad1798ed88f 29 int TilstandSjekk(int, int);
andreped 12:0193024eab13 30 volatile bool running = true;
Banyrud 14:8e7aaf0cf5d7 31 string password = ("admin");
Banyrud 14:8e7aaf0cf5d7 32 string keyinput;
Banyrud 13:0622c228b67d 33 //volatile int Klokke = 0;
andreped 6:a3b97bf7902b 34 //nt Tid = 0;
andreped 1:6917ec4f5e6d 35
Banyrud 13:0622c228b67d 36 /////FUNKSJON DEKLARASJONER/////
Banyrud 13:0622c228b67d 37 void Alarmf();
Banyrud 14:8e7aaf0cf5d7 38 Thread monitoring;
andreped 1:6917ec4f5e6d 39 int Tilstandssjekk();
Banyrud 14:8e7aaf0cf5d7 40 int admin_access_granted();
Banyrud 14:8e7aaf0cf5d7 41 int sone_monitor();
Banyrud 14:8e7aaf0cf5d7 42 int read_keyinput();
andreped 12:0193024eab13 43 //void Alarm();
Banyrud 13:0622c228b67d 44 //Ticker AlarmBlink; // 10Hz blinking for alarmfunksjon på lys og telling
andreped 1:6917ec4f5e6d 45
andreped 12:0193024eab13 46
Banyrud 13:0622c228b67d 47 /////MAIN/////
andreped 1:6917ec4f5e6d 48 int main()
andreped 1:6917ec4f5e6d 49 {
Banyrud 14:8e7aaf0cf5d7 50 pc.printf("Write admin access password:\n");
Banyrud 14:8e7aaf0cf5d7 51 pc.scanf("%s",keyinput);
Banyrud 14:8e7aaf0cf5d7 52 if(keyinput == password){
Banyrud 14:8e7aaf0cf5d7 53 monitoring(sone_monitor);
Banyrud 14:8e7aaf0cf5d7 54 admin_access_granted();
Banyrud 14:8e7aaf0cf5d7 55 while(1) {
Banyrud 14:8e7aaf0cf5d7 56 RtosTimer Alarm(Alarmf);
Banyrud 14:8e7aaf0cf5d7 57 read_keyinput();
Banyrud 14:8e7aaf0cf5d7 58
Banyrud 14:8e7aaf0cf5d7 59 }//while-end
Banyrud 14:8e7aaf0cf5d7 60 }//if-end
Banyrud 14:8e7aaf0cf5d7 61 }//main-end
Banyrud 14:8e7aaf0cf5d7 62
Banyrud 14:8e7aaf0cf5d7 63
Banyrud 14:8e7aaf0cf5d7 64
andreped 1:6917ec4f5e6d 65
Banyrud 13:0622c228b67d 66 /////FUNKSJONER/////
Banyrud 14:8e7aaf0cf5d7 67 void Alarmf(void)
Banyrud 14:8e7aaf0cf5d7 68 {
Banyrud 14:8e7aaf0cf5d7 69 Driftslys = !Driftslys;
Banyrud 13:0622c228b67d 70 }
Banyrud 13:0622c228b67d 71
andreped 11:dad1798ed88f 72 int TilstandSjekk(int i, int tilstand)
andreped 11:dad1798ed88f 73 {
andreped 11:dad1798ed88f 74 if(tilstand == 0) {
andreped 11:dad1798ed88f 75 //pc.printf("Vi er i funksjonen normaldrift i sone: %d \n", i);
andreped 12:0193024eab13 76 //AlarmBlink.detach();
andreped 12:0193024eab13 77 Alarm.stop();
andreped 11:dad1798ed88f 78 double n = 2; // We want 2^i
andreped 11:dad1798ed88f 79 double Y = 1;
andreped 11:dad1798ed88f 80 for(int k=1; k<=i; k++) Y = Y*n;
andreped 12:0193024eab13 81 if ( Y == AlarmUtganger1) AlarmUtganger1 = AlarmUtganger1 - Y;
andreped 12:0193024eab13 82 if ( Y == AlarmUtganger2) AlarmUtganger2 = AlarmUtganger2 - Y;
andreped 12:0193024eab13 83 int Utganger1 = AlarmUtganger1;
andreped 12:0193024eab13 84 int Utganger2 = AlarmUtganger2;
andreped 11:dad1798ed88f 85 //pc.printf("Utgangsbuss1 har naa verdien: %d \n Utgangsbuss2 har naa verdien: %d", Utganger1, Utganger2);
andreped 11:dad1798ed88f 86 }
andreped 11:dad1798ed88f 87 if(tilstand == 1) { //Hvis dør 1 er åpen...
andreped 11:dad1798ed88f 88 //pc.printf("Vi er i funksjonen tilstandssjekk dor 1, med verdi: %d\n", i);
andreped 12:0193024eab13 89 //Alarm();
Banyrud 14:8e7aaf0cf5d7 90 Alarm.start(50);
andreped 11:dad1798ed88f 91 double n = 2; // We want 2^i
andreped 11:dad1798ed88f 92 double Y = 1;
andreped 11:dad1798ed88f 93 for(int k=1; k<=i; k++) Y = Y*n;
andreped 11:dad1798ed88f 94 if( Y == AlarmUtganger2 ) AlarmUtganger2 = AlarmUtganger2 - Y;
andreped 11:dad1798ed88f 95 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 96 int Utganger1 = AlarmUtganger1;
andreped 11:dad1798ed88f 97 //pc.printf("Vi har verdien paa utgangsbuss: %d\n", Utganger1);
andreped 11:dad1798ed88f 98 }
andreped 11:dad1798ed88f 99 if(tilstand == 2) { //Hvis dør 2 er åpen...
andreped 11:dad1798ed88f 100 //pc.printf("Vi er i funksjonen tilstandssjekk dor 2, med verdi: %d\n", i);
andreped 12:0193024eab13 101 //Alarm();
Banyrud 14:8e7aaf0cf5d7 102 Alarm.start(50);
andreped 11:dad1798ed88f 103 double n = 2; // We want 2^i
andreped 11:dad1798ed88f 104 double Y = 1;
andreped 11:dad1798ed88f 105 for(int k=1; k<=i; k++) Y = Y*n;
andreped 11:dad1798ed88f 106 if( Y == AlarmUtganger1 ) AlarmUtganger1 = AlarmUtganger1 - Y;
andreped 11:dad1798ed88f 107 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 108 int Utganger2 = AlarmUtganger2;
andreped 11:dad1798ed88f 109 //pc.printf("Vi har verdien paa utgangsbuss: %d\n", Utganger2);
andreped 11:dad1798ed88f 110 }
andreped 11:dad1798ed88f 111 if(tilstand == 3) { //Hvis begge dører er åpne
andreped 12:0193024eab13 112 //pc.printf("Vi er i funksjonen tilstandssjekk alle dorer, med verdi: %d \n", i);;
andreped 12:0193024eab13 113 // Alarm();
Banyrud 14:8e7aaf0cf5d7 114 Alarm.start(50);
andreped 11:dad1798ed88f 115 double n = 2; // We want 2^i
andreped 11:dad1798ed88f 116 double Y = 1;
andreped 11:dad1798ed88f 117 for(int k=1; k<=i; k++) Y = Y*n;
andreped 11:dad1798ed88f 118 if( Y!=AlarmUtganger1 ) AlarmUtganger1 = Y + AlarmUtganger1;
andreped 11:dad1798ed88f 119 if( Y!=AlarmUtganger2 ) AlarmUtganger2 = Y + AlarmUtganger2;
andreped 11:dad1798ed88f 120 int Utganger2 = AlarmUtganger2;
andreped 11:dad1798ed88f 121 int Utganger1 = AlarmUtganger2;
andreped 11:dad1798ed88f 122 //pc.printf("Utgangsbuss1 har verdien: %d \n Utgangsbuss2 har verdien: %d \n", Utganger1, Utganger2);
andreped 11:dad1798ed88f 123 }
andreped 11:dad1798ed88f 124 return 0;
andreped 10:f0a6d74095d4 125 }
Banyrud 14:8e7aaf0cf5d7 126 sone_monitor()
Banyrud 14:8e7aaf0cf5d7 127 {
Banyrud 14:8e7aaf0cf5d7 128 Soner[0] = _Sone1;
Banyrud 14:8e7aaf0cf5d7 129 //Soner[1] = _Sone2;
Banyrud 14:8e7aaf0cf5d7 130 //Soner[2] = _Sone3;
Banyrud 14:8e7aaf0cf5d7 131 //Soner[3] = _Sone4;
Banyrud 14:8e7aaf0cf5d7 132 for(int i=0; i < Inn; i++) {
Banyrud 14:8e7aaf0cf5d7 133 //pc.printf("%f\n", Soner[i]);
Banyrud 14:8e7aaf0cf5d7 134 if((Soner[i] > 0.75 )&&( Soner[i] < 0.83)) { //Tilstand1, Dør 1 åpen
Banyrud 14:8e7aaf0cf5d7 135 //pc.printf("Vi er i Tilstand1\n");
Banyrud 14:8e7aaf0cf5d7 136 tilstand = 1;
Banyrud 14:8e7aaf0cf5d7 137 TilstandSjekk(i, tilstand);
Banyrud 14:8e7aaf0cf5d7 138 }
Banyrud 14:8e7aaf0cf5d7 139 if((Soner[i] > 0.55 )&&( Soner[i] < 0.59)) { //Normaldrift
Banyrud 14:8e7aaf0cf5d7 140 //pc.printf("Vi er i Normaldrift\n")
Banyrud 14:8e7aaf0cf5d7 141 tilstand = 0;
Banyrud 14:8e7aaf0cf5d7 142 TilstandSjekk(i, tilstand);
Banyrud 14:8e7aaf0cf5d7 143 }
Banyrud 14:8e7aaf0cf5d7 144 if((Soner[i] > 0.65 )&&( Soner[i] < 0.69)) { //Tilstand 2, Dør 2 åpen
Banyrud 14:8e7aaf0cf5d7 145 //pc.printf("Vi er i tilstand2\n");
Banyrud 14:8e7aaf0cf5d7 146 tilstand = 2;
Banyrud 14:8e7aaf0cf5d7 147 TilstandSjekk(i, tilstand);
Banyrud 14:8e7aaf0cf5d7 148 }
Banyrud 14:8e7aaf0cf5d7 149 if(Soner[i] >= 1) { //Begge dører er åpne
Banyrud 14:8e7aaf0cf5d7 150 //pc.printf("Vi er i tilstand 3, begge doorer er aapne");
Banyrud 14:8e7aaf0cf5d7 151 tilstand = 3;
Banyrud 14:8e7aaf0cf5d7 152 TilstandSjekk(i, tilstand);
Banyrud 14:8e7aaf0cf5d7 153 }
Banyrud 14:8e7aaf0cf5d7 154 //wait(1.5);
Banyrud 14:8e7aaf0cf5d7 155 }
Banyrud 14:8e7aaf0cf5d7 156 //pc.printf("%f\n", Sone1[]);
Banyrud 14:8e7aaf0cf5d7 157 //Tilstandssjekk(Sone1[]);
Banyrud 14:8e7aaf0cf5d7 158 //float volt = Sone1[];
Banyrud 14:8e7aaf0cf5d7 159 //pc.printf("%f\n", volt);
Banyrud 14:8e7aaf0cf5d7 160 //while(sysclock == 1);
Banyrud 14:8e7aaf0cf5d7 161 //while(sysclock == 0);
Banyrud 14:8e7aaf0cf5d7 162 //Tid++;
Banyrud 14:8e7aaf0cf5d7 163 }
Banyrud 14:8e7aaf0cf5d7 164 admin_access_granted()
Banyrud 14:8e7aaf0cf5d7 165 {
Banyrud 14:8e7aaf0cf5d7 166 pc.printf("Admin access granted\n");//info
Banyrud 14:8e7aaf0cf5d7 167 pc.printf("Following commands are available\n");// liste over funksjoner tilgjenglig.
Banyrud 14:8e7aaf0cf5d7 168 pc.printf("#req_sta_sone(1-4)_door(1-2)\n");// funksjon 1 - request spesific status
Banyrud 14:8e7aaf0cf5d7 169 pc.printf("#req_sta_all\n");// funksjon 1 - request status all
Banyrud 14:8e7aaf0cf5d7 170 pc.printf("#reset_sone(1-4)_door(1-2)\n");// funksjon 3 - request spesific log
Banyrud 14:8e7aaf0cf5d7 171 pc.printf("#reset_all\n");// funksjon 4 - request log all
Banyrud 14:8e7aaf0cf5d7 172 }
Banyrud 14:8e7aaf0cf5d7 173 read_keyinput()
Banyrud 14:8e7aaf0cf5d7 174 {
Banyrud 14:8e7aaf0cf5d7 175 serial.readabl
Banyrud 14:8e7aaf0cf5d7 176 pc.scanf("%s", keyinput);
Banyrud 14:8e7aaf0cf5d7 177
andreped 12:0193024eab13 178 /*void Alarm()
andreped 1:6917ec4f5e6d 179 {
andreped 12:0193024eab13 180 Driftslys = !Driftslys;
andreped 12:0193024eab13 181 wait(0.05);
Banyrud 14:8e7aaf0cf5d7 182 }*/