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.
Dependencies: Matrix
Fork of Alarmsystem_log_funksjon_funker_ikke by
main.cpp
- Committer:
- Banyrud
- Date:
- 2018-02-20
- Revision:
- 13:0622c228b67d
- Parent:
- 12:0193024eab13
- Child:
- 14:8e7aaf0cf5d7
File content as of revision 13:0622c228b67d:
#include "mbed.h"
#include "rtos.h"
#include <RtosTimer.h>
#include <math.h>
#include "mbed_error.h"
/////DEFINISJONER/////
#define Inn 4
Serial pc(USBTX, USBRX);
//#define Feil 0<1
/////INNGANGER/////
DigitalIn Servicebryter(p20);
AnalogIn _Sone1(p15);
AnalogIn _Sone2(p16);
AnalogIn _Sone3(p17);
AnalogIn _Sone4(p19);
/////UTGANGER/////
DigitalOut Driftslys(LED1);
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
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
//DigitalOut myled2(LED2);
/////VARIABLER/////
float Soner[Inn];
int tilstand = 0;
int TilstandSjekk(int, int);
volatile bool running = true;
//volatile int Klokke = 0;
//nt Tid = 0;
/////FUNKSJON DEKLARASJONER/////
void Alarmf();
Thread thread;
int Tilstandssjekk();
//void Alarm();
//Ticker AlarmBlink; // 10Hz blinking for alarmfunksjon på lys og telling
/////MAIN/////
int main()
{
while(1) {
RtosTimer Alarm(Alarmf);
// AlarmBlink.attach(&Alarm, 1);
/*if(Servicebryter == 1) {
Utganger1 = 0;
Utganger2 = 0;
}*/
Soner[0] = _Sone1;
//Soner[1] = _Sone2;
//Soner[2] = _Sone3;
//Soner[3] = _Sone4;
for(int i=0; i < Inn; i++) {
//pc.printf("%f\n", Soner[i]);
if((Soner[i] > 0.75 )&&( Soner[i] < 0.83)) { //Tilstand1, Dør 1 åpen
//pc.printf("Vi er i Tilstand1\n");
tilstand = 1;
TilstandSjekk(i, tilstand);
}
if((Soner[i] > 0.55 )&&( Soner[i] < 0.59)) { //Normaldrift
//pc.printf("Vi er i Normaldrift\n")
tilstand = 0;
TilstandSjekk(i, tilstand);
}
if((Soner[i] > 0.65 )&&( Soner[i] < 0.69)) { //Tilstand 2, Dør 2 åpen
//pc.printf("Vi er i tilstand2\n");
tilstand = 2;
TilstandSjekk(i, tilstand);
}
if(Soner[i] >= 1) { //Begge dører er åpne
//pc.printf("Vi er i tilstand 3, begge doorer er aapne");
tilstand = 3;
TilstandSjekk(i, tilstand);
}
//wait(1.5);
}
//pc.printf("%f\n", Sone1[]);
//Tilstandssjekk(Sone1[]);
//float volt = Sone1[];
//pc.printf("%f\n", volt);
//while(sysclock == 1);
//while(sysclock == 0);
//Tid++;
}
}
/////FUNKSJONER/////
void Alarmf(void) {
Driftslys = !Driftslys;
}
int TilstandSjekk(int i, int tilstand)
{
if(tilstand == 0) {
//pc.printf("Vi er i funksjonen normaldrift i sone: %d \n", i);
//AlarmBlink.detach();
Alarm.stop();
double n = 2; // We want 2^i
double Y = 1;
for(int k=1; k<=i; k++) Y = Y*n;
if ( Y == AlarmUtganger1) AlarmUtganger1 = AlarmUtganger1 - Y;
if ( Y == AlarmUtganger2) AlarmUtganger2 = AlarmUtganger2 - Y;
int Utganger1 = AlarmUtganger1;
int Utganger2 = AlarmUtganger2;
//pc.printf("Utgangsbuss1 har naa verdien: %d \n Utgangsbuss2 har naa verdien: %d", Utganger1, Utganger2);
}
if(tilstand == 1) { //Hvis dør 1 er åpen...
//pc.printf("Vi er i funksjonen tilstandssjekk dor 1, med verdi: %d\n", i);
//Alarm();
Alarm.start(50);
double n = 2; // We want 2^i
double Y = 1;
for(int k=1; k<=i; k++) Y = Y*n;
if( Y == AlarmUtganger2 ) AlarmUtganger2 = AlarmUtganger2 - Y;
if( Y!=AlarmUtganger1) AlarmUtganger1 = Y + AlarmUtganger1; //Sjekk om denne verdien har blitt sjekket før, hvis ikke starter alarm på neste dør.
int Utganger1 = AlarmUtganger1;
//pc.printf("Vi har verdien paa utgangsbuss: %d\n", Utganger1);
}
if(tilstand == 2) { //Hvis dør 2 er åpen...
//pc.printf("Vi er i funksjonen tilstandssjekk dor 2, med verdi: %d\n", i);
//Alarm();
Alarm.start(50);
double n = 2; // We want 2^i
double Y = 1;
for(int k=1; k<=i; k++) Y = Y*n;
if( Y == AlarmUtganger1 ) AlarmUtganger1 = AlarmUtganger1 - Y;
if( Y!=AlarmUtganger2) AlarmUtganger2 = Y + AlarmUtganger2; //Sjekk om denne verdien har blitt sjekket før, hvis ikke starter alarm på neste dør.
int Utganger2 = AlarmUtganger2;
//pc.printf("Vi har verdien paa utgangsbuss: %d\n", Utganger2);
}
if(tilstand == 3) { //Hvis begge dører er åpne
//pc.printf("Vi er i funksjonen tilstandssjekk alle dorer, med verdi: %d \n", i);;
// Alarm();
Alarm.start(50);
double n = 2; // We want 2^i
double Y = 1;
for(int k=1; k<=i; k++) Y = Y*n;
if( Y!=AlarmUtganger1 ) AlarmUtganger1 = Y + AlarmUtganger1;
if( Y!=AlarmUtganger2 ) AlarmUtganger2 = Y + AlarmUtganger2;
int Utganger2 = AlarmUtganger2;
int Utganger1 = AlarmUtganger2;
//pc.printf("Utgangsbuss1 har verdien: %d \n Utgangsbuss2 har verdien: %d \n", Utganger1, Utganger2);
}
return 0;
}
/*void Alarm()
{
Driftslys = !Driftslys;
wait(0.05);
}*/
