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.

Committer:
pkresic
Date:
Tue Nov 30 17:03:50 2021 +0000
Revision:
0:ecfa6cb36189
Vatrodojavni alarm

Who changed what in which revision?

UserRevisionLine numberNew contents of line
pkresic 0:ecfa6cb36189 1 //Konstrukcijski_Kresić_Vatrodojava
pkresic 0:ecfa6cb36189 2
pkresic 0:ecfa6cb36189 3 #include "mbed.h"
pkresic 0:ecfa6cb36189 4 #include "buzzer.h"
pkresic 0:ecfa6cb36189 5
pkresic 0:ecfa6cb36189 6 Beep buzzer(D2); //pin D2 za buzzer
pkresic 0:ecfa6cb36189 7 DigitalOut red(A2); //pin A0 digitalni izlaz
pkresic 0:ecfa6cb36189 8 DigitalOut yellow(A4); //pin A1 digitalni izlaz
pkresic 0:ecfa6cb36189 9 DigitalOut green(A0); //pin A2 digitalni izlaz
pkresic 0:ecfa6cb36189 10 DigitalOut LED(LED2); //digitalni izlaz
pkresic 0:ecfa6cb36189 11
pkresic 0:ecfa6cb36189 12 InterruptIn vatrogasci(USER_BUTTON); //integrirani pin senzora dolaska vatrogasaca
pkresic 0:ecfa6cb36189 13
pkresic 0:ecfa6cb36189 14 Timer debounce;
pkresic 0:ecfa6cb36189 15 Ticker flipper;
pkresic 0:ecfa6cb36189 16
pkresic 0:ecfa6cb36189 17 Serial pc(USBTX, USBRX); //komunikacija s računalom
pkresic 0:ecfa6cb36189 18
pkresic 0:ecfa6cb36189 19 AnalogIn potencio(A1); //pin A1 analogni ulaz
pkresic 0:ecfa6cb36189 20
pkresic 0:ecfa6cb36189 21 float dim; //varijabla za spremanje količine dima s potenciometra
pkresic 0:ecfa6cb36189 22 float freq1 = 850; //varijabla frekvencija zvuka 1
pkresic 0:ecfa6cb36189 23 float freq2 = 550; //varijabla frekvencija zvuka 2
pkresic 0:ecfa6cb36189 24 float vrij = 0.4; //vrijeme trajanja zvuka
pkresic 0:ecfa6cb36189 25
pkresic 0:ecfa6cb36189 26
pkresic 0:ecfa6cb36189 27 void titranje(void);
pkresic 0:ecfa6cb36189 28 void toggle(void);
pkresic 0:ecfa6cb36189 29
pkresic 0:ecfa6cb36189 30 int main()
pkresic 0:ecfa6cb36189 31 {
pkresic 0:ecfa6cb36189 32 pc.printf("\nPostotak dima iznosi : \n\r");
pkresic 0:ecfa6cb36189 33 while (1) {
pkresic 0:ecfa6cb36189 34 dim=potencio;
pkresic 0:ecfa6cb36189 35 pc.printf("%f \n\r",dim);
pkresic 0:ecfa6cb36189 36 wait(vrij);
pkresic 0:ecfa6cb36189 37
pkresic 0:ecfa6cb36189 38
pkresic 0:ecfa6cb36189 39 if (dim <0.2) {
pkresic 0:ecfa6cb36189 40 while (1) {
pkresic 0:ecfa6cb36189 41 green = 1;
pkresic 0:ecfa6cb36189 42 red = 0;
pkresic 0:ecfa6cb36189 43 yellow = 0;
pkresic 0:ecfa6cb36189 44 pc.printf("Nije uocen dim! Svijetli zeleni indikator\n\r");
pkresic 0:ecfa6cb36189 45 break;
pkresic 0:ecfa6cb36189 46 }
pkresic 0:ecfa6cb36189 47 }
pkresic 0:ecfa6cb36189 48 if (dim >=0.2) {
pkresic 0:ecfa6cb36189 49 green = 0;
pkresic 0:ecfa6cb36189 50 red = 1;
pkresic 0:ecfa6cb36189 51 yellow = 0;
pkresic 0:ecfa6cb36189 52 pc.printf("Uocen dim!! Treperenje crvenog i zutog indikatora\n\r");
pkresic 0:ecfa6cb36189 53
pkresic 0:ecfa6cb36189 54 while (1) {
pkresic 0:ecfa6cb36189 55 flipper.attach(&titranje,0.5);
pkresic 0:ecfa6cb36189 56 buzzer.beep(freq1,vrij); //buzzer određen frekvencijom freq1 i vremenom vrij
pkresic 0:ecfa6cb36189 57 wait(vrij);
pkresic 0:ecfa6cb36189 58 buzzer.beep(freq2,vrij); //buzzer određen frekvencijom freq2 i vremenom vrij
pkresic 0:ecfa6cb36189 59 break;
pkresic 0:ecfa6cb36189 60 }
pkresic 0:ecfa6cb36189 61
pkresic 0:ecfa6cb36189 62 }
pkresic 0:ecfa6cb36189 63 if (dim >=0.2) {
pkresic 0:ecfa6cb36189 64 debounce.start();
pkresic 0:ecfa6cb36189 65 vatrogasci.rise(&toggle);
pkresic 0:ecfa6cb36189 66
pkresic 0:ecfa6cb36189 67 }
pkresic 0:ecfa6cb36189 68 if (LED == 1) {
pkresic 0:ecfa6cb36189 69 pc.printf("Vatrogasci stigli na teren!\n\r");
pkresic 0:ecfa6cb36189 70 }
pkresic 0:ecfa6cb36189 71 }
pkresic 0:ecfa6cb36189 72 }
pkresic 0:ecfa6cb36189 73
pkresic 0:ecfa6cb36189 74
pkresic 0:ecfa6cb36189 75 void titranje(void) //za titranje ledica
pkresic 0:ecfa6cb36189 76 {
pkresic 0:ecfa6cb36189 77 yellow = !yellow;
pkresic 0:ecfa6cb36189 78 red = !red;
pkresic 0:ecfa6cb36189 79
pkresic 0:ecfa6cb36189 80 }
pkresic 0:ecfa6cb36189 81
pkresic 0:ecfa6cb36189 82
pkresic 0:ecfa6cb36189 83 void toggle() //za debounce i mijenjanje stanja integrirane ledice
pkresic 0:ecfa6cb36189 84 {
pkresic 0:ecfa6cb36189 85 if (debounce.read_ms()>200)
pkresic 0:ecfa6cb36189 86 LED=!LED;
pkresic 0:ecfa6cb36189 87 green = 0;
pkresic 0:ecfa6cb36189 88 debounce.reset();
pkresic 0:ecfa6cb36189 89 }