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

Committer:
pkresic
Date:
2021-11-30
Revision:
0:ecfa6cb36189

File content as of revision 0:ecfa6cb36189:

//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();
}