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: mbed
Diff: Alarm.h
- Revision:
- 0:9e26d3c8b2b1
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Alarm.h Thu Feb 12 13:49:58 2015 +0000
@@ -0,0 +1,72 @@
+#include "mbed.h"
+#include <vector>
+#include <string>
+#include <list>
+#include "Logger.h"
+
+extern Logger GlobalLogger;
+
+class Alarm {
+private:
+ std::string alarmNavn;
+ std::vector<float> AlarmSpenninger;
+ AnalogIn port;
+ DigitalOut led;
+ float feilmargin;
+ bool LEDInvertStatus;
+ bool alarmLogged;
+
+public:
+ Alarm(std::string alarmNavn, PinName portIn, PinName ledOut)
+ : alarmNavn(alarmNavn), port(portIn), led(ledOut), feilmargin(0.05), LEDInvertStatus(false), alarmLogged(false)
+ {
+ }
+ ~Alarm()
+ {
+ }
+ void AlarmVoltageAdd(float spenning) {
+ AlarmSpenninger.push_back(spenning);
+ }
+ void AddCurrentAlarmVoltage(void) {
+ AlarmVoltageAdd(AlarmVoltage());
+ }
+ void AlarmVoltageCLearAll() {
+ AlarmSpenninger.clear();
+ }
+ float AlarmVoltage (void) {
+ return port.read();
+ }
+ void LEDSet(bool value) {
+ if (LEDInvertStatus) led.write(!value);
+ else led.write(value);
+ }
+ void LEDInverted(bool value) {
+ LEDInvertStatus = value;
+ }
+ bool AlarmTest() {
+ return test();
+ }
+ void Reset() {
+ LEDSet(0);
+ alarmLogged = false;
+ }
+
+
+private:
+ bool test() {
+ bool resultat = false;
+ float portSpenning = port.read();
+ for (int i = 0; i < AlarmSpenninger.size(); i++) {
+ if (portSpenning + feilmargin > AlarmSpenninger[i] && portSpenning - feilmargin < AlarmSpenninger[i]) {
+ resultat = true;
+ }
+ }
+ if (resultat && !alarmLogged) {
+ alarmLogged = true;
+ std::string melding = alarmNavn + " ble aktivert!";
+ GlobalLogger.Logg(melding);
+ }
+ return resultat;
+ }
+
+};