knut kristensen / Mbed 2 deprecated prosjektoppgave_alarm

Dependencies:   mbed

Fork of prosjektoppgave_alarm by PnM_spring17

Committer:
mathimat
Date:
Wed Jan 25 11:59:08 2017 +0000
Revision:
13:892212c61603
Parent:
12:3d384401500c
Parent:
11:2af2150e495d
Child:
14:4020d8bdb6a6
MERGE

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mathimat 0:0aa2d9849f98 1 #include "mbed.h"
mathimat 0:0aa2d9849f98 2
mathimat 1:fbad5dc82abd 3 AnalogIn ain1(p17), ain2(p18), ain3(p19), ain4(p20);
mathimat 1:fbad5dc82abd 4 DigitalIn nullut(p16);
mathimat 1:fbad5dc82abd 5 BusOut ledStatus(p21,p22,p23,p24,p25,p26,p27,p28);
mathimat 1:fbad5dc82abd 6 DigitalOut ledMaster(LED1);
mathimat 6:5607f07a3863 7 Serial pc(USBTX, USBRX);
Rocker79 8:0e77808699d0 8 PwmOut led(LED1);
mathimat 7:1fbdaef9052a 9 LocalFileSystem local("local");
mathimat 1:fbad5dc82abd 10
mathimat 5:b4e1656b6627 11 Ticker tick;
mathimat 7:1fbdaef9052a 12 Timer systemTid;
mathimat 1:fbad5dc82abd 13
mathimat 9:7fff168507fa 14 struct alarmKretser { //1 = aktivert
mathimat 9:7fff168507fa 15 int A;
mathimat 9:7fff168507fa 16 int B;
mathimat 10:557f325a6119 17 };
mathimat 10:557f325a6119 18 struct alarmKretser brytere[4];
mathimat 7:1fbdaef9052a 19
mathimat 1:fbad5dc82abd 20 int status = 0; //1 = alarm
mathimat 1:fbad5dc82abd 21
mathimat 4:3dfc937f6516 22
mathimat 4:3dfc937f6516 23
mathimat 4:3dfc937f6516 24 //todo: få dette i en konfigurasjons tekstfil
mathimat 1:fbad5dc82abd 25 #define passord "qwerty"
mathimat 6:5607f07a3863 26 #define bryterAhigh 0.285f
mathimat 6:5607f07a3863 27 #define bryterAlow 0.200f
mathimat 6:5607f07a3863 28 #define bryterBhigh 0.200f
mathimat 6:5607f07a3863 29 #define bryterBlow 0.150f
mathimat 6:5607f07a3863 30 #define bryterABhigh 0.150f
mathimat 6:5607f07a3863 31 #define bryterABlow 0.050f
mathimat 11:2af2150e495d 32 #define bryter0 0.800f
mathimat 1:fbad5dc82abd 33
mathimat 1:fbad5dc82abd 34
mathimat 12:3d384401500c 35 void getFromFile()
mathimat 12:3d384401500c 36 {
mathimat 12:3d384401500c 37
mathimat 12:3d384401500c 38 }
Rocker79 8:0e77808699d0 39
mathimat 12:3d384401500c 40 void blink()
mathimat 12:3d384401500c 41 {
mathimat 12:3d384401500c 42 if (status==0) {
mathimat 12:3d384401500c 43 led.period(0.1f);
mathimat 12:3d384401500c 44 led.write(1.0f);
mathimat 12:3d384401500c 45 } else {
mathimat 12:3d384401500c 46 led.period(0.1f);
mathimat 12:3d384401500c 47 led.write(0.5f);
mathimat 6:5607f07a3863 48 }
mathimat 6:5607f07a3863 49
mathimat 10:557f325a6119 50 void log(int status = 0, int tall = 0, char bokstav = '0') {
mathimat 7:1fbdaef9052a 51 FILE *fp = fopen("/local/log.txt", "a");
mathimat 7:1fbdaef9052a 52 fprintf(fp, "\r\n TIME: %f |", systemTid.read());
mathimat 7:1fbdaef9052a 53 switch(status){
mathimat 7:1fbdaef9052a 54 case 1:
mathimat 7:1fbdaef9052a 55 fprintf(fp,"ALARM, bryter: %d", tall);
mathimat 7:1fbdaef9052a 56 break;
mathimat 7:1fbdaef9052a 57 case 2:
mathimat 7:1fbdaef9052a 58 fprintf(fp,"ALARM, nullstillt ved servisbryter");
mathimat 7:1fbdaef9052a 59 break;
mathimat 7:1fbdaef9052a 60 case 3:
mathimat 7:1fbdaef9052a 61 fprintf(fp,"ALARM, nullstillt ved terminal");
mathimat 7:1fbdaef9052a 62 break;
mathimat 7:1fbdaef9052a 63 default:
mathimat 7:1fbdaef9052a 64 break;
mathimat 13:892212c61603 65
mathimat 7:1fbdaef9052a 66 }
mathimat 6:5607f07a3863 67
mathimat 7:1fbdaef9052a 68 fclose(fp);
mathimat 13:892212c61603 69
mathimat 7:1fbdaef9052a 70 }
mathimat 7:1fbdaef9052a 71
mathimat 7:1fbdaef9052a 72
mathimat 12:3d384401500c 73 int alarmSjekk(AnalogIn& krets, int kretsn)
mathimat 12:3d384401500c 74 {
mathimat 13:892212c61603 75
mathimat 13:892212c61603 76
mathimat 1:fbad5dc82abd 77 int alarmSjekk(AnalogIn& krets, int kretsn){
mathimat 7:1fbdaef9052a 78 //TODO: oppdater tabell med hvilken alarm som har gått
mathimat 13:892212c61603 79
mathimat 1:fbad5dc82abd 80 /* Sjekker kretsen etter spenningsendring og returnerer hvilke bryter som er åpen
mathimat 1:fbad5dc82abd 81 -1 error
mathimat 1:fbad5dc82abd 82 0 alle lukket
mathimat 1:fbad5dc82abd 83 1 bryter A
mathimat 1:fbad5dc82abd 84 2 bryter B
mathimat 1:fbad5dc82abd 85 3 bryter AB
mathimat 12:3d384401500c 86 ---
mathimat 1:fbad5dc82abd 87 */
mathimat 1:fbad5dc82abd 88 int bryter = -1;
mathimat 1:fbad5dc82abd 89 float volt = krets.read();
mathimat 13:892212c61603 90
mathimat 12:3d384401500c 91 pc.printf("volt %f", volt);
mathimat 12:3d384401500c 92 if(volt <= bryter0) {
mathimat 13:892212c61603 93
mathimat 11:2af2150e495d 94 pc.printf("volt: %f",volt);
mathimat 6:5607f07a3863 95 if(volt <= bryter0){
mathimat 13:892212c61603 96
mathimat 1:fbad5dc82abd 97 status = 1;
mathimat 12:3d384401500c 98 if(volt < bryterAhigh) {
mathimat 12:3d384401500c 99 if(volt < bryterBhigh) {
mathimat 12:3d384401500c 100 if(volt < bryterABhigh) {
mathimat 6:5607f07a3863 101 bryter = 3;
mathimat 9:7fff168507fa 102 if (brytere[kretsn-1].A != 1 || brytere[kretsn-1].B != 1){
mathimat 10:557f325a6119 103 log(1,kretsn,'A');
mathimat 10:557f325a6119 104 log(1,kretsn,'B');
mathimat 9:7fff168507fa 105 }
mathimat 9:7fff168507fa 106 brytere[kretsn-1].A = brytere[kretsn-1].B = 1;
mathimat 7:1fbdaef9052a 107
mathimat 6:5607f07a3863 108 } else {
mathimat 6:5607f07a3863 109 bryter = 2;
mathimat 9:7fff168507fa 110 if ( brytere[kretsn-1].B != 1){
mathimat 10:557f325a6119 111 log(1,kretsn,'B');
mathimat 9:7fff168507fa 112 }
mathimat 9:7fff168507fa 113 brytere[kretsn-1].B = 1;
mathimat 6:5607f07a3863 114 }
mathimat 6:5607f07a3863 115 } else {
mathimat 6:5607f07a3863 116 bryter = 1;
mathimat 9:7fff168507fa 117 if ( brytere[kretsn-1].B != 1){
mathimat 10:557f325a6119 118 log(1,kretsn,'B');
mathimat 9:7fff168507fa 119 }
mathimat 9:7fff168507fa 120 brytere[kretsn-1].A = 1;
mathimat 6:5607f07a3863 121 }
mathimat 6:5607f07a3863 122 } else {
mathimat 6:5607f07a3863 123 bryter = -2;
mathimat 1:fbad5dc82abd 124 }
mathimat 1:fbad5dc82abd 125 } else(bryter = 0);
mathimat 1:fbad5dc82abd 126 return bryter;
mathimat 1:fbad5dc82abd 127 }
mathimat 1:fbad5dc82abd 128
mathimat 12:3d384401500c 129 void sjekkAlleKretser()
mathimat 12:3d384401500c 130 {
mathimat 1:fbad5dc82abd 131 //sjekker alle kretser skvensielt for aktivering
mathimat 7:1fbdaef9052a 132 int a = alarmSjekk(ain1, 0);
mathimat 7:1fbdaef9052a 133 int b = alarmSjekk(ain2, 1);
mathimat 7:1fbdaef9052a 134 int c = alarmSjekk(ain3, 2);
mathimat 7:1fbdaef9052a 135 int d = alarmSjekk(ain4, 3);
mathimat 1:fbad5dc82abd 136 }
mathimat 1:fbad5dc82abd 137
mathimat 12:3d384401500c 138 void statusLED()
mathimat 12:3d384401500c 139 {
mathimat 1:fbad5dc82abd 140 //oppdatere statusLED til aktiverte alarmer
mathimat 12:3d384401500c 141 for(int i=0; brytere[i]!=NULL; i++) {
mathimat 12:3d384401500c 142 if(brytere[i] == 1) {
mathimat 12:3d384401500c 143 ledStatus = ledStatus+i;
mathimat 1:fbad5dc82abd 144 }
mathimat 1:fbad5dc82abd 145 }
mathimat 1:fbad5dc82abd 146 }
mathimat 1:fbad5dc82abd 147
mathimat 3:d3f95e1e06cf 148
mathimat 3:d3f95e1e06cf 149
mathimat 12:3d384401500c 150 void resetSystem()
mathimat 12:3d384401500c 151 {
mathimat 1:fbad5dc82abd 152 //reseter alarmsystemet
mathimat 12:3d384401500c 153 for(int i=0; brytere[i]!=NULL; i++) {
mathimat 12:3d384401500c 154 brytere[i] = 0;
mathimat 12:3d384401500c 155 }
mathimat 1:fbad5dc82abd 156 status = 0;
Rocker79 8:0e77808699d0 157
mathimat 1:fbad5dc82abd 158 }
mathimat 0:0aa2d9849f98 159
mathimat 2:2d97a168af1e 160
mathimat 2:2d97a168af1e 161
mathimat 12:3d384401500c 162 void chron()
mathimat 12:3d384401500c 163 {
mathimat 5:b4e1656b6627 164 sjekkAlleKretser();
mathimat 12:3d384401500c 165 statusLED();
mathimat 5:b4e1656b6627 166 }
mathimat 5:b4e1656b6627 167
mathimat 5:b4e1656b6627 168
mathimat 12:3d384401500c 169 int main()
mathimat 12:3d384401500c 170 {
mathimat 7:1fbdaef9052a 171 systemTid.start();
mathimat 3:d3f95e1e06cf 172 while(1){
mathimat 7:1fbdaef9052a 173 pc.printf("\r ");
mathimat 7:1fbdaef9052a 174 sjekkAlleKretser();
mathimat 7:1fbdaef9052a 175 pc.printf(" | Alarm Status: %d\r\n",status);
mathimat 7:1fbdaef9052a 176 wait(0.5);
mathimat 3:d3f95e1e06cf 177 }
mathimat 0:0aa2d9849f98 178 }