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.
main.cpp@0:ecfa6cb36189, 2021-11-30 (annotated)
- Committer:
- pkresic
- Date:
- Tue Nov 30 17:03:50 2021 +0000
- Revision:
- 0:ecfa6cb36189
Vatrodojavni alarm
Who changed what in which revision?
User | Revision | Line number | New 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 | } |