knut kristensen / Mbed 2 deprecated prosjektoppgave_alarm

Dependencies:   mbed

Fork of prosjektoppgave_alarm by PnM_spring17

Committer:
mathimat
Date:
Wed Jan 25 11:50:32 2017 +0000
Revision:
11:2af2150e495d
Parent:
10:557f325a6119
Child:
13:892212c61603
test;

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);
mathimat 7:1fbdaef9052a 8 LocalFileSystem local("local");
mathimat 1:fbad5dc82abd 9
mathimat 5:b4e1656b6627 10 Ticker tick;
mathimat 7:1fbdaef9052a 11 Timer systemTid;
mathimat 1:fbad5dc82abd 12
mathimat 9:7fff168507fa 13 struct alarmKretser { //1 = aktivert
mathimat 9:7fff168507fa 14 int A;
mathimat 9:7fff168507fa 15 int B;
mathimat 10:557f325a6119 16 };
mathimat 10:557f325a6119 17 struct alarmKretser brytere[4];
mathimat 7:1fbdaef9052a 18
mathimat 1:fbad5dc82abd 19 int status = 0; //1 = alarm
mathimat 1:fbad5dc82abd 20
mathimat 4:3dfc937f6516 21
mathimat 4:3dfc937f6516 22 //todo: få dette i en konfigurasjons tekstfil
mathimat 1:fbad5dc82abd 23 #define passord "qwerty"
mathimat 6:5607f07a3863 24 #define bryterAhigh 0.285f
mathimat 6:5607f07a3863 25 #define bryterAlow 0.200f
mathimat 6:5607f07a3863 26 #define bryterBhigh 0.200f
mathimat 6:5607f07a3863 27 #define bryterBlow 0.150f
mathimat 6:5607f07a3863 28 #define bryterABhigh 0.150f
mathimat 6:5607f07a3863 29 #define bryterABlow 0.050f
mathimat 11:2af2150e495d 30 #define bryter0 0.800f
mathimat 1:fbad5dc82abd 31
mathimat 1:fbad5dc82abd 32
mathimat 6:5607f07a3863 33 void getFromFile(){
mathimat 6:5607f07a3863 34
mathimat 6:5607f07a3863 35 }
mathimat 6:5607f07a3863 36
mathimat 10:557f325a6119 37 void log(int status = 0, int tall = 0, char bokstav = '0') {
mathimat 7:1fbdaef9052a 38 FILE *fp = fopen("/local/log.txt", "a");
mathimat 7:1fbdaef9052a 39 fprintf(fp, "\r\n TIME: %f |", systemTid.read());
mathimat 7:1fbdaef9052a 40 switch(status){
mathimat 7:1fbdaef9052a 41 case 1:
mathimat 7:1fbdaef9052a 42 fprintf(fp,"ALARM, bryter: %d", tall);
mathimat 7:1fbdaef9052a 43 break;
mathimat 7:1fbdaef9052a 44 case 2:
mathimat 7:1fbdaef9052a 45 fprintf(fp,"ALARM, nullstillt ved servisbryter");
mathimat 7:1fbdaef9052a 46 break;
mathimat 7:1fbdaef9052a 47 case 3:
mathimat 7:1fbdaef9052a 48 fprintf(fp,"ALARM, nullstillt ved terminal");
mathimat 7:1fbdaef9052a 49 break;
mathimat 7:1fbdaef9052a 50 default:
mathimat 7:1fbdaef9052a 51 break;
mathimat 7:1fbdaef9052a 52 }
mathimat 7:1fbdaef9052a 53 fclose(fp);
mathimat 7:1fbdaef9052a 54 }
mathimat 7:1fbdaef9052a 55
mathimat 7:1fbdaef9052a 56
mathimat 1:fbad5dc82abd 57 int alarmSjekk(AnalogIn& krets, int kretsn){
mathimat 7:1fbdaef9052a 58 //TODO: oppdater tabell med hvilken alarm som har gått
mathimat 1:fbad5dc82abd 59 /* Sjekker kretsen etter spenningsendring og returnerer hvilke bryter som er åpen
mathimat 1:fbad5dc82abd 60 -1 error
mathimat 1:fbad5dc82abd 61 0 alle lukket
mathimat 1:fbad5dc82abd 62 1 bryter A
mathimat 1:fbad5dc82abd 63 2 bryter B
mathimat 1:fbad5dc82abd 64 3 bryter AB
mathimat 6:5607f07a3863 65 ---
mathimat 1:fbad5dc82abd 66 */
mathimat 1:fbad5dc82abd 67 int bryter = -1;
mathimat 1:fbad5dc82abd 68 float volt = krets.read();
mathimat 11:2af2150e495d 69 pc.printf("volt: %f",volt);
mathimat 6:5607f07a3863 70 if(volt <= bryter0){
mathimat 1:fbad5dc82abd 71 status = 1;
mathimat 6:5607f07a3863 72 if(volt < bryterAhigh){
mathimat 6:5607f07a3863 73 if(volt < bryterBhigh){
mathimat 6:5607f07a3863 74 if(volt < bryterABhigh){
mathimat 6:5607f07a3863 75 bryter = 3;
mathimat 9:7fff168507fa 76 if (brytere[kretsn-1].A != 1 || brytere[kretsn-1].B != 1){
mathimat 10:557f325a6119 77 log(1,kretsn,'A');
mathimat 10:557f325a6119 78 log(1,kretsn,'B');
mathimat 9:7fff168507fa 79 }
mathimat 9:7fff168507fa 80 brytere[kretsn-1].A = brytere[kretsn-1].B = 1;
mathimat 7:1fbdaef9052a 81
mathimat 6:5607f07a3863 82 } else {
mathimat 6:5607f07a3863 83 bryter = 2;
mathimat 9:7fff168507fa 84 if ( brytere[kretsn-1].B != 1){
mathimat 10:557f325a6119 85 log(1,kretsn,'B');
mathimat 9:7fff168507fa 86 }
mathimat 9:7fff168507fa 87 brytere[kretsn-1].B = 1;
mathimat 6:5607f07a3863 88 }
mathimat 6:5607f07a3863 89 } else {
mathimat 6:5607f07a3863 90 bryter = 1;
mathimat 9:7fff168507fa 91 if ( brytere[kretsn-1].B != 1){
mathimat 10:557f325a6119 92 log(1,kretsn,'B');
mathimat 9:7fff168507fa 93 }
mathimat 9:7fff168507fa 94 brytere[kretsn-1].A = 1;
mathimat 6:5607f07a3863 95 }
mathimat 6:5607f07a3863 96 } else {
mathimat 6:5607f07a3863 97 bryter = -2;
mathimat 1:fbad5dc82abd 98 }
mathimat 1:fbad5dc82abd 99 } else(bryter = 0);
mathimat 1:fbad5dc82abd 100 return bryter;
mathimat 1:fbad5dc82abd 101 }
mathimat 1:fbad5dc82abd 102
mathimat 1:fbad5dc82abd 103 void sjekkAlleKretser(){
mathimat 1:fbad5dc82abd 104 //sjekker alle kretser skvensielt for aktivering
mathimat 7:1fbdaef9052a 105 int a = alarmSjekk(ain1, 0);
mathimat 7:1fbdaef9052a 106 int b = alarmSjekk(ain2, 1);
mathimat 7:1fbdaef9052a 107 int c = alarmSjekk(ain3, 2);
mathimat 7:1fbdaef9052a 108 int d = alarmSjekk(ain4, 3);
mathimat 1:fbad5dc82abd 109 }
mathimat 1:fbad5dc82abd 110
mathimat 1:fbad5dc82abd 111 void statusLED(){
mathimat 1:fbad5dc82abd 112 //oppdatere statusLED til aktiverte alarmer
mathimat 1:fbad5dc82abd 113 }
mathimat 1:fbad5dc82abd 114
mathimat 3:d3f95e1e06cf 115
mathimat 3:d3f95e1e06cf 116
mathimat 1:fbad5dc82abd 117 void resetSystem(){
mathimat 1:fbad5dc82abd 118 //reseter alarmsystemet
mathimat 1:fbad5dc82abd 119 status = 0;
mathimat 1:fbad5dc82abd 120
mathimat 1:fbad5dc82abd 121 }
mathimat 0:0aa2d9849f98 122
mathimat 2:2d97a168af1e 123
mathimat 5:b4e1656b6627 124 void chron(){
mathimat 5:b4e1656b6627 125 sjekkAlleKretser();
mathimat 5:b4e1656b6627 126 statusLED();
mathimat 5:b4e1656b6627 127 }
mathimat 5:b4e1656b6627 128
mathimat 5:b4e1656b6627 129
mathimat 0:0aa2d9849f98 130 int main() {
mathimat 7:1fbdaef9052a 131 systemTid.start();
mathimat 3:d3f95e1e06cf 132 while(1){
mathimat 7:1fbdaef9052a 133 pc.printf("\r ");
mathimat 7:1fbdaef9052a 134 sjekkAlleKretser();
mathimat 7:1fbdaef9052a 135 pc.printf(" | Alarm Status: %d\r\n",status);
mathimat 7:1fbdaef9052a 136 wait(0.5);
mathimat 3:d3f95e1e06cf 137 }
mathimat 0:0aa2d9849f98 138 }