Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of prosjektoppgave_alarm by
main.cpp
- Committer:
- mathimat
- Date:
- 2017-01-25
- Revision:
- 10:557f325a6119
- Parent:
- 9:7fff168507fa
- Child:
- 11:2af2150e495d
File content as of revision 10:557f325a6119:
#include "mbed.h"
AnalogIn ain1(p17), ain2(p18), ain3(p19), ain4(p20);
DigitalIn nullut(p16);
BusOut ledStatus(p21,p22,p23,p24,p25,p26,p27,p28);
DigitalOut ledMaster(LED1);
Serial pc(USBTX, USBRX);
LocalFileSystem local("local");
Ticker tick;
Timer systemTid;
struct alarmKretser { //1 = aktivert
int A;
int B;
};
struct alarmKretser brytere[4];
int status = 0; //1 = alarm
//todo: få dette i en konfigurasjons tekstfil
#define passord "qwerty"
#define bryterAhigh 0.285f
#define bryterAlow 0.200f
#define bryterBhigh 0.200f
#define bryterBlow 0.150f
#define bryterABhigh 0.150f
#define bryterABlow 0.050f
#define bryter0 0.97f
void getFromFile(){
}
void log(int status = 0, int tall = 0, char bokstav = '0') {
FILE *fp = fopen("/local/log.txt", "a");
fprintf(fp, "\r\n TIME: %f |", systemTid.read());
switch(status){
case 1:
fprintf(fp,"ALARM, bryter: %d", tall);
break;
case 2:
fprintf(fp,"ALARM, nullstillt ved servisbryter");
break;
case 3:
fprintf(fp,"ALARM, nullstillt ved terminal");
break;
default:
break;
}
fclose(fp);
}
int alarmSjekk(AnalogIn& krets, int kretsn){
//TODO: oppdater tabell med hvilken alarm som har gått
/* Sjekker kretsen etter spenningsendring og returnerer hvilke bryter som er åpen
-1 error
0 alle lukket
1 bryter A
2 bryter B
3 bryter AB
---
*/
int bryter = -1;
float volt = krets.read();
if(volt <= bryter0){
status = 1;
if(volt < bryterAhigh){
if(volt < bryterBhigh){
if(volt < bryterABhigh){
bryter = 3;
if (brytere[kretsn-1].A != 1 || brytere[kretsn-1].B != 1){
log(1,kretsn,'A');
log(1,kretsn,'B');
}
brytere[kretsn-1].A = brytere[kretsn-1].B = 1;
} else {
bryter = 2;
if ( brytere[kretsn-1].B != 1){
log(1,kretsn,'B');
}
brytere[kretsn-1].B = 1;
}
} else {
bryter = 1;
if ( brytere[kretsn-1].B != 1){
log(1,kretsn,'B');
}
brytere[kretsn-1].A = 1;
}
} else {
bryter = -2;
}
} else(bryter = 0);
return bryter;
}
void sjekkAlleKretser(){
//sjekker alle kretser skvensielt for aktivering
int a = alarmSjekk(ain1, 0);
int b = alarmSjekk(ain2, 1);
int c = alarmSjekk(ain3, 2);
int d = alarmSjekk(ain4, 3);
}
void statusLED(){
//oppdatere statusLED til aktiverte alarmer
}
void resetSystem(){
//reseter alarmsystemet
status = 0;
}
void chron(){
sjekkAlleKretser();
statusLED();
}
int main() {
systemTid.start();
while(1){
pc.printf("\r ");
sjekkAlleKretser();
pc.printf(" | Alarm Status: %d\r\n",status);
wait(0.5);
}
}
