Program opisuje signalizaciju otvaranja garaznih vrata. Kada su vrata zatvorena svjetli crvena ledica, na pritisak tipkala pokreće se otvaranje vrata. signalizacija otvaranja vrata je titrajuća zuta ledica i zvuk iz buzzera. Kada su vrata otvorena svjetli zelena ledica.
Dependencies: Piezo_zvucnik
Diff: main.cpp
- Revision:
- 0:054375111414
diff -r 000000000000 -r 054375111414 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Thu Dec 09 07:52:53 2021 +0000 @@ -0,0 +1,67 @@ +#include "mbed.h" +#include "buzzer.h" + +Beep buzzer(A3); //pin A3 za buzzer + +DigitalOut crvena(A0); //inicijalizacija crvene led lampice +DigitalOut zuta(A1); //inicijalizacija zute led lampice +DigitalOut zelena(A2); //inicijalizacija zelene led lampice +DigitalOut LED(LED2); //inicijalizacija integrirane led lampice + + +InterruptIn daljinski(USER_BUTTON); //inicijalizacija tipkala + + +Timer debounce; //inicijalizacija debounce timera +Timer odbrojavanje; //inicijalizacija timera +Ticker tick; //inicijalizacija tickera +float freq = 850; //frekvencija zvuka + +void klik (void); //inicijalizacija funkcije +void otvaranje (void); //inicijalizacija funkcije +void prekid(void); //inicijalizacija funkcije + +int main() +{ + crvena = 1; //vrata zatvorena + + debounce.start(); + daljinski.rise(&klik); //hardverski interupt + while (1) { + + if (odbrojavanje.read() < 10) { //postavljanje vremenskog uvjeta + + if (LED == 0) { //uvjet provjere stanja integrirane ledice + tick.attach(&otvaranje,1); //pozivanje funkcije otvaranje pomoću tickera + } + } + + if (odbrojavanje.read() > 10) { //postavljanje vremenskog uvjeta + zelena = 1; //vrata otvorena + } + } +} + + + +void klik(void) //funkcija za debounce i mijenjanje stanja integrirane ledice +{ + if (debounce.read_ms()>200) { + crvena = 0; + zelena = 0; + LED=!LED; //promjena stanja integrirane ledice + odbrojavanje.start(); + debounce.reset(); + } +} + +void otvaranje(void) //funkcija za signalizaciju promjenom stanja zute ledice i pokretanje buzzera +{ + crvena = 0; + zuta = !zuta; //promjena stanja zute ledice + buzzer.beep(freq,0.5); //frekvencija melodije i trajanje melodije + if (odbrojavanje.read() > 10) { //uvjet za deaktivaciju zute ledice i buzzera + zuta = 0; + buzzer.nobeep(); + } +}