Vatrodojavni alarm

Dependencies:   buzzer

Simulacija vatroalarma ledicama i buzzerom. U početnom stanju kada nema požara upaljena je ledica zelene boje koja označava da je alarm u standby modu. Povećanjem dima u prostoriji senzor aktivira zvučni alarm na buzzeru i aktivira se treperenje ledica. Kao senzor je korišten potenciometar. S dolaskom vatrogasaca (pritiskom na tipku USER BUTTON na pločici na rastući brid) se uključi integrirana ledica koja označava da su vatrogasci na terenu. Smanjivanjem količine dima alarm se vrati u standby stanje, isključi se sirena te konstantno svijetli zelena, a trepere crvena i žuta ledica što označava da je potrebno provjeriti stanje u objektu nakon požara. Na tipku reset se alarm resetira za daljnji rad. Slijed događaja se ispisuje u tera term aplikaciji.

Revision:
0:ecfa6cb36189
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Tue Nov 30 17:03:50 2021 +0000
@@ -0,0 +1,89 @@
+//Konstrukcijski_Kresić_Vatrodojava
+
+#include "mbed.h"
+#include "buzzer.h"
+
+Beep buzzer(D2);    //pin D2 za buzzer
+DigitalOut red(A2);    //pin A0 digitalni izlaz
+DigitalOut yellow(A4);    //pin A1 digitalni izlaz
+DigitalOut green(A0);     //pin A2 digitalni izlaz
+DigitalOut LED(LED2);     //digitalni izlaz
+
+InterruptIn vatrogasci(USER_BUTTON);    //integrirani pin senzora dolaska vatrogasaca
+
+Timer debounce;
+Ticker flipper;
+
+Serial pc(USBTX, USBRX);  //komunikacija s računalom
+
+AnalogIn potencio(A1);   //pin A1 analogni ulaz
+
+float dim;  //varijabla za spremanje količine dima s potenciometra
+float freq1 = 850;  //varijabla frekvencija zvuka 1
+float freq2 = 550;  //varijabla frekvencija zvuka 2
+float vrij = 0.4;  //vrijeme trajanja zvuka
+
+
+void titranje(void);
+void toggle(void);
+
+int main()
+{
+    pc.printf("\nPostotak dima iznosi : \n\r");
+    while (1) {
+        dim=potencio;
+        pc.printf("%f \n\r",dim);
+        wait(vrij);
+
+
+        if (dim <0.2) {
+            while (1) {
+                green = 1;
+                red = 0;
+                yellow = 0;
+                pc.printf("Nije uocen dim! Svijetli zeleni indikator\n\r");
+                break;
+            }
+        }
+        if (dim >=0.2) {
+            green = 0;
+            red = 1;
+            yellow = 0;
+            pc.printf("Uocen dim!! Treperenje crvenog i zutog indikatora\n\r");
+
+            while (1) {
+                flipper.attach(&titranje,0.5);
+                buzzer.beep(freq1,vrij);  //buzzer određen frekvencijom freq1 i vremenom vrij
+                wait(vrij);
+                buzzer.beep(freq2,vrij);  //buzzer određen frekvencijom freq2 i vremenom vrij
+                break;
+            }
+
+        }
+        if (dim >=0.2) {
+            debounce.start();
+            vatrogasci.rise(&toggle);
+
+        }
+        if (LED == 1) {
+            pc.printf("Vatrogasci stigli na teren!\n\r");
+        }
+    }
+}
+
+
+void titranje(void)  //za titranje ledica
+{
+    yellow = !yellow;
+    red = !red;
+
+}
+
+
+void toggle()  //za debounce i mijenjanje stanja integrirane ledice
+{
+    if (debounce.read_ms()>200)
+        LED=!LED;
+    green = 0;
+    debounce.reset();
+}