Parking senzor izveden s NUCLEO F411RE mikroupravljačem te HCSR04 ultrazvučnim senzorom i piezo električnim zvučnikom

Dependencies:   mbed IndikatorUdaljenosti Parking_Senzor-Danijel_Pranjic HCSR04 zvucniEfekt

https://os.mbed.com/media/uploads/danijel28/parkingsenzor_shema.jpg

Committer:
danijel28
Date:
Tue Feb 04 18:46:57 2020 +0000
Revision:
1:eadf45a15378
Parent:
0:3f1cf63e039a
Nema promjena

Who changed what in which revision?

UserRevisionLine numberNew contents of line
danijel28 0:3f1cf63e039a 1 #include "mbed.h"
danijel28 0:3f1cf63e039a 2 #include "hcsr04.h"
danijel28 0:3f1cf63e039a 3 #include "zvucniEfekt.h"
danijel28 0:3f1cf63e039a 4 #include "Tipkalo.h"
danijel28 0:3f1cf63e039a 5 #include "DeklaracijaVarijabli.h"
danijel28 0:3f1cf63e039a 6 #include "IndikatorUdaljenostiObjekta.h"
danijel28 0:3f1cf63e039a 7
danijel28 0:3f1cf63e039a 8 Tipkalo tipka(gumb); //deklaracija objekta klase Tipkalo za prekidač te dodjeljivanje pinova s mbeda (PC_13 - gumb se nalazi direktno na tiskanoj pločici)
danijel28 0:3f1cf63e039a 9 indikatorUdaljenostiObjekta LED(D2,D3,D4,D5); //deklaracija objekta klase indikatorUdaljenostiObjekta za LED indikatore te dodjeljivanje pinova s mbeda (D2, D3, D4, D5 - NUCLEO F411RE)
danijel28 0:3f1cf63e039a 10 HCSR04 senzor_prednji(trigerStraznjegSenzora, echoStraznjegSenzora); //deklaracija objekta klase HCSR04 za 1.senzor te dodjeljivanje pinova s mbeda (D7,D6 - NUCLEO F411RE)
danijel28 0:3f1cf63e039a 11 HCSR04 senzor_zadnji(trigerPrednjegSenzora, echoPrednjegSenzora); //deklaracija objekta klase HCSR04 za 2.senzor te dodjeljivanje pinova s mbeda (D12,D11 - NUCLEO F411RE)
danijel28 0:3f1cf63e039a 12 zvucniEfekt zvucnik(buzzer); //deklaracija objekta klase Beep za piezo zvučnik te dodjeljivanje pinova s mbeda (D9 (PWM Pin) - NUCLEO F411RE)
danijel28 0:3f1cf63e039a 13
danijel28 0:3f1cf63e039a 14 //Funkcija koja obavlja svoju zadacu zadanu za straznji senzor sustava
danijel28 0:3f1cf63e039a 15 void straznjiSenzor()
danijel28 0:3f1cf63e039a 16 {
danijel28 0:3f1cf63e039a 17 int udaljenost_zadnji = senzor_zadnji.udaljenost(); //povlačenje vrijednosti udaljenosti iz klase HCSR04 u definiranu varijablu
danijel28 0:3f1cf63e039a 18 if(udaljenost_zadnji >= 30 && udaljenost_zadnji< 45) {
danijel28 0:3f1cf63e039a 19 LED.udaljenostObjekta30do45();
danijel28 0:3f1cf63e039a 20 zvucnik.radiZvucnik(500,0.5);
danijel28 0:3f1cf63e039a 21 wait(0.3);
danijel28 0:3f1cf63e039a 22 zvucnik.neRadiZvucnik();
danijel28 0:3f1cf63e039a 23 wait(0.8);
danijel28 0:3f1cf63e039a 24 } else if(udaljenost_zadnji>= 15 && udaljenost_zadnji < 30) {
danijel28 0:3f1cf63e039a 25 LED.udaljenostObjekta15do30();
danijel28 0:3f1cf63e039a 26 zvucnik.radiZvucnik(500,0.5);
danijel28 0:3f1cf63e039a 27 wait(0.2);
danijel28 0:3f1cf63e039a 28 zvucnik.neRadiZvucnik();
danijel28 0:3f1cf63e039a 29 wait(0.4);
danijel28 0:3f1cf63e039a 30 } else if(udaljenost_zadnji>=5 && udaljenost_zadnji<15) {
danijel28 0:3f1cf63e039a 31 LED.udaljenostObjekta5do15();
danijel28 0:3f1cf63e039a 32 zvucnik.radiZvucnik(500,0.5);
danijel28 0:3f1cf63e039a 33 wait(0.1);
danijel28 0:3f1cf63e039a 34 zvucnik.neRadiZvucnik();
danijel28 0:3f1cf63e039a 35 wait(0.2);
danijel28 0:3f1cf63e039a 36 } else if(udaljenost_zadnji>=0 && udaljenost_zadnji<5) {
danijel28 0:3f1cf63e039a 37 LED.udaljenostObjekta0do5();
danijel28 0:3f1cf63e039a 38 zvucnik.radiZvucnik(500,0.5);
danijel28 0:3f1cf63e039a 39 wait(0.05);
danijel28 0:3f1cf63e039a 40 zvucnik.neRadiZvucnik();
danijel28 0:3f1cf63e039a 41 wait(0.05);
danijel28 0:3f1cf63e039a 42 } else {
danijel28 0:3f1cf63e039a 43 LED.objektIzvanDometa();
danijel28 0:3f1cf63e039a 44 zvucnik.neRadiZvucnik();
danijel28 0:3f1cf63e039a 45 }
danijel28 0:3f1cf63e039a 46 }
danijel28 0:3f1cf63e039a 47
danijel28 0:3f1cf63e039a 48 //Funkcija koja obavlja svoju zadacu zadanu za prednji senzor sustava
danijel28 0:3f1cf63e039a 49 void prednjiSenzor()
danijel28 0:3f1cf63e039a 50 {
danijel28 0:3f1cf63e039a 51 long udaljenost_prednji = senzor_prednji.udaljenost(); //povlačenje vrijednosti udaljenosti iz klase HCSR04 u definiranu varijablu
danijel28 0:3f1cf63e039a 52 if(udaljenost_prednji >= 30 && udaljenost_prednji< 45) {
danijel28 0:3f1cf63e039a 53 LED.udaljenostObjekta30do45();
danijel28 0:3f1cf63e039a 54 zvucnik.radiZvucnik(500,0.5);
danijel28 0:3f1cf63e039a 55 wait(0.3);
danijel28 0:3f1cf63e039a 56 zvucnik.neRadiZvucnik();
danijel28 0:3f1cf63e039a 57 wait(0.8);
danijel28 0:3f1cf63e039a 58 } else if(udaljenost_prednji>= 15 && udaljenost_prednji < 30) {
danijel28 0:3f1cf63e039a 59 LED.udaljenostObjekta15do30();
danijel28 0:3f1cf63e039a 60 zvucnik.radiZvucnik(500,0.5);
danijel28 0:3f1cf63e039a 61 wait(0.2);
danijel28 0:3f1cf63e039a 62 zvucnik.neRadiZvucnik();
danijel28 0:3f1cf63e039a 63 wait(0.4);
danijel28 0:3f1cf63e039a 64 } else if(udaljenost_prednji>=5 && udaljenost_prednji<15) {
danijel28 0:3f1cf63e039a 65 LED.udaljenostObjekta5do15();
danijel28 0:3f1cf63e039a 66 zvucnik.radiZvucnik(500,0.5);
danijel28 0:3f1cf63e039a 67 wait(0.1);
danijel28 0:3f1cf63e039a 68 zvucnik.neRadiZvucnik();
danijel28 0:3f1cf63e039a 69 wait(0.2);
danijel28 0:3f1cf63e039a 70 } else if(udaljenost_prednji>=0 && udaljenost_prednji<5) {
danijel28 0:3f1cf63e039a 71 LED.udaljenostObjekta0do5();
danijel28 0:3f1cf63e039a 72 zvucnik.radiZvucnik(500,0.5);
danijel28 0:3f1cf63e039a 73 wait(0.05);
danijel28 0:3f1cf63e039a 74 zvucnik.neRadiZvucnik();
danijel28 0:3f1cf63e039a 75 wait(0.05);
danijel28 0:3f1cf63e039a 76 } else {
danijel28 0:3f1cf63e039a 77 LED.objektIzvanDometa();
danijel28 0:3f1cf63e039a 78 zvucnik.neRadiZvucnik();
danijel28 0:3f1cf63e039a 79 }
danijel28 0:3f1cf63e039a 80 }
danijel28 0:3f1cf63e039a 81
danijel28 0:3f1cf63e039a 82 //Funkcija zaslužna za promjenu rada pojedinog senzora
danijel28 0:3f1cf63e039a 83 void prebaciSPrvogNaDrugiSenzor()
danijel28 0:3f1cf63e039a 84 {
danijel28 0:3f1cf63e039a 85 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)
danijel28 0:3f1cf63e039a 86 straznjiSenzor(); //Poziv funkcije straznjiSenzor()
danijel28 0:3f1cf63e039a 87 } else {
danijel28 0:3f1cf63e039a 88 prednjiSenzor();
danijel28 0:3f1cf63e039a 89 }
danijel28 0:3f1cf63e039a 90 }
danijel28 0:3f1cf63e039a 91
danijel28 0:3f1cf63e039a 92 //glavna funkcija programa
danijel28 0:3f1cf63e039a 93 int main()
danijel28 0:3f1cf63e039a 94 {
danijel28 0:3f1cf63e039a 95 while(1) {
danijel28 0:3f1cf63e039a 96 prebaciSPrvogNaDrugiSenzor();
danijel28 0:3f1cf63e039a 97 }
danijel28 0:3f1cf63e039a 98 }
danijel28 0:3f1cf63e039a 99