Konstrukcijski rad iz kolegija mikroupravljaci
Dependencies: mbed IndikatorUdaljenosti Parking_Senzor-Danijel_Pranjic HCSR04 zvucniEfekt
Diff: main.cpp
- Revision:
- 0:3f1cf63e039a
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Tue Feb 04 17:59:11 2020 +0000 @@ -0,0 +1,99 @@ +#include "mbed.h" +#include "hcsr04.h" +#include "zvucniEfekt.h" +#include "Tipkalo.h" +#include "DeklaracijaVarijabli.h" +#include "IndikatorUdaljenostiObjekta.h" + +Tipkalo tipka(gumb); //deklaracija objekta klase Tipkalo za prekidač te dodjeljivanje pinova s mbeda (PC_13 - gumb se nalazi direktno na tiskanoj pločici) +indikatorUdaljenostiObjekta LED(D2,D3,D4,D5); //deklaracija objekta klase indikatorUdaljenostiObjekta za LED indikatore te dodjeljivanje pinova s mbeda (D2, D3, D4, D5 - NUCLEO F411RE) +HCSR04 senzor_prednji(trigerStraznjegSenzora, echoStraznjegSenzora); //deklaracija objekta klase HCSR04 za 1.senzor te dodjeljivanje pinova s mbeda (D7,D6 - NUCLEO F411RE) +HCSR04 senzor_zadnji(trigerPrednjegSenzora, echoPrednjegSenzora); //deklaracija objekta klase HCSR04 za 2.senzor te dodjeljivanje pinova s mbeda (D12,D11 - NUCLEO F411RE) +zvucniEfekt zvucnik(buzzer); //deklaracija objekta klase Beep za piezo zvučnik te dodjeljivanje pinova s mbeda (D9 (PWM Pin) - NUCLEO F411RE) + +//Funkcija koja obavlja svoju zadacu zadanu za straznji senzor sustava +void straznjiSenzor() +{ + int udaljenost_zadnji = senzor_zadnji.udaljenost(); //povlačenje vrijednosti udaljenosti iz klase HCSR04 u definiranu varijablu + if(udaljenost_zadnji >= 30 && udaljenost_zadnji< 45) { + LED.udaljenostObjekta30do45(); + zvucnik.radiZvucnik(500,0.5); + wait(0.3); + zvucnik.neRadiZvucnik(); + wait(0.8); + } else if(udaljenost_zadnji>= 15 && udaljenost_zadnji < 30) { + LED.udaljenostObjekta15do30(); + zvucnik.radiZvucnik(500,0.5); + wait(0.2); + zvucnik.neRadiZvucnik(); + wait(0.4); + } else if(udaljenost_zadnji>=5 && udaljenost_zadnji<15) { + LED.udaljenostObjekta5do15(); + zvucnik.radiZvucnik(500,0.5); + wait(0.1); + zvucnik.neRadiZvucnik(); + wait(0.2); + } else if(udaljenost_zadnji>=0 && udaljenost_zadnji<5) { + LED.udaljenostObjekta0do5(); + zvucnik.radiZvucnik(500,0.5); + wait(0.05); + zvucnik.neRadiZvucnik(); + wait(0.05); + } else { + LED.objektIzvanDometa(); + zvucnik.neRadiZvucnik(); + } +} + +//Funkcija koja obavlja svoju zadacu zadanu za prednji senzor sustava +void prednjiSenzor() +{ + long udaljenost_prednji = senzor_prednji.udaljenost(); //povlačenje vrijednosti udaljenosti iz klase HCSR04 u definiranu varijablu + if(udaljenost_prednji >= 30 && udaljenost_prednji< 45) { + LED.udaljenostObjekta30do45(); + zvucnik.radiZvucnik(500,0.5); + wait(0.3); + zvucnik.neRadiZvucnik(); + wait(0.8); + } else if(udaljenost_prednji>= 15 && udaljenost_prednji < 30) { + LED.udaljenostObjekta15do30(); + zvucnik.radiZvucnik(500,0.5); + wait(0.2); + zvucnik.neRadiZvucnik(); + wait(0.4); + } else if(udaljenost_prednji>=5 && udaljenost_prednji<15) { + LED.udaljenostObjekta5do15(); + zvucnik.radiZvucnik(500,0.5); + wait(0.1); + zvucnik.neRadiZvucnik(); + wait(0.2); + } else if(udaljenost_prednji>=0 && udaljenost_prednji<5) { + LED.udaljenostObjekta0do5(); + zvucnik.radiZvucnik(500,0.5); + wait(0.05); + zvucnik.neRadiZvucnik(); + wait(0.05); + } else { + LED.objektIzvanDometa(); + zvucnik.neRadiZvucnik(); + } +} + +//Funkcija zaslužna za promjenu rada pojedinog senzora +void prebaciSPrvogNaDrugiSenzor() +{ + if((tipka.procitajBrojPritisakaGumba())%3==0) { //Postavljen je uvjet o pritisku tipke na mbedu (ako je paran radi prednji senzor a ako je neparan radi straznji senzor) + straznjiSenzor(); //Poziv funkcije straznjiSenzor() + } else { + prednjiSenzor(); + } +} + +//glavna funkcija programa +int main() +{ + while(1) { + prebaciSPrvogNaDrugiSenzor(); + } +} +