Konstrukcijski rad iz kolegija mikroupravljaci
Dependencies: mbed IndikatorUdaljenosti Parking_Senzor-Danijel_Pranjic HCSR04 zvucniEfekt
main.cpp@1:eadf45a15378, 2020-02-04 (annotated)
- 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?
User | Revision | Line number | New 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 |