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

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "hcsr04.h"
00003 #include "zvucniEfekt.h"
00004 #include "Tipkalo.h"
00005 #include "DeklaracijaVarijabli.h"
00006 #include "IndikatorUdaljenostiObjekta.h"
00007 
00008 Tipkalo tipka(gumb);    //deklaracija objekta klase Tipkalo za prekidač te dodjeljivanje pinova s mbeda (PC_13 - gumb se nalazi direktno na tiskanoj pločici)
00009 indikatorUdaljenostiObjekta LED(D2,D3,D4,D5); //deklaracija objekta klase indikatorUdaljenostiObjekta za LED indikatore te dodjeljivanje pinova s mbeda (D2, D3, D4, D5 - NUCLEO F411RE)
00010 HCSR04 senzor_prednji(trigerStraznjegSenzora, echoStraznjegSenzora);  //deklaracija objekta klase HCSR04 za 1.senzor te dodjeljivanje pinova s mbeda (D7,D6 - NUCLEO F411RE)
00011 HCSR04 senzor_zadnji(trigerPrednjegSenzora, echoPrednjegSenzora);     //deklaracija objekta klase HCSR04 za 2.senzor te dodjeljivanje pinova s mbeda (D12,D11 - NUCLEO F411RE)
00012 zvucniEfekt zvucnik(buzzer);                                                 //deklaracija objekta klase Beep za piezo zvučnik te dodjeljivanje pinova s mbeda (D9 (PWM Pin) - NUCLEO F411RE)
00013 
00014 //Funkcija koja obavlja svoju zadacu zadanu za straznji senzor sustava
00015 void straznjiSenzor()
00016 {
00017     int udaljenost_zadnji = senzor_zadnji.udaljenost(); //povlačenje vrijednosti udaljenosti iz klase HCSR04 u definiranu varijablu
00018     if(udaljenost_zadnji >= 30 && udaljenost_zadnji< 45) {
00019         LED.udaljenostObjekta30do45();
00020         zvucnik.radiZvucnik(500,0.5);
00021         wait(0.3);
00022         zvucnik.neRadiZvucnik();
00023         wait(0.8);
00024     } else if(udaljenost_zadnji>= 15 && udaljenost_zadnji < 30) {
00025         LED.udaljenostObjekta15do30();
00026         zvucnik.radiZvucnik(500,0.5);
00027         wait(0.2);
00028         zvucnik.neRadiZvucnik();
00029         wait(0.4);
00030     } else if(udaljenost_zadnji>=5 && udaljenost_zadnji<15) {
00031         LED.udaljenostObjekta5do15();
00032         zvucnik.radiZvucnik(500,0.5);
00033         wait(0.1);
00034         zvucnik.neRadiZvucnik();
00035         wait(0.2);
00036     } else if(udaljenost_zadnji>=0 && udaljenost_zadnji<5) {
00037         LED.udaljenostObjekta0do5();
00038         zvucnik.radiZvucnik(500,0.5);
00039         wait(0.05);
00040         zvucnik.neRadiZvucnik();
00041         wait(0.05);
00042     } else {
00043         LED.objektIzvanDometa();
00044         zvucnik.neRadiZvucnik();
00045     }
00046 }
00047 
00048 //Funkcija koja obavlja svoju zadacu zadanu za prednji senzor sustava
00049 void prednjiSenzor()
00050 {
00051     long udaljenost_prednji = senzor_prednji.udaljenost();  //povlačenje vrijednosti udaljenosti iz klase HCSR04 u definiranu varijablu
00052     if(udaljenost_prednji >= 30 && udaljenost_prednji< 45) {
00053         LED.udaljenostObjekta30do45();
00054         zvucnik.radiZvucnik(500,0.5);
00055         wait(0.3);
00056         zvucnik.neRadiZvucnik();
00057         wait(0.8);
00058     } else if(udaljenost_prednji>= 15 && udaljenost_prednji < 30) {
00059         LED.udaljenostObjekta15do30();
00060         zvucnik.radiZvucnik(500,0.5);
00061         wait(0.2);
00062         zvucnik.neRadiZvucnik();
00063         wait(0.4);
00064     } else if(udaljenost_prednji>=5 && udaljenost_prednji<15) {
00065         LED.udaljenostObjekta5do15();
00066         zvucnik.radiZvucnik(500,0.5);
00067         wait(0.1);
00068         zvucnik.neRadiZvucnik();
00069         wait(0.2);
00070     } else if(udaljenost_prednji>=0 && udaljenost_prednji<5) {
00071         LED.udaljenostObjekta0do5();
00072         zvucnik.radiZvucnik(500,0.5);
00073         wait(0.05);
00074         zvucnik.neRadiZvucnik();
00075         wait(0.05);
00076     } else {
00077         LED.objektIzvanDometa();
00078         zvucnik.neRadiZvucnik();
00079     }
00080 }
00081 
00082 //Funkcija zaslužna za promjenu rada pojedinog senzora
00083 void prebaciSPrvogNaDrugiSenzor()
00084 {
00085     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)
00086         straznjiSenzor();  //Poziv funkcije straznjiSenzor()
00087     } else {
00088         prednjiSenzor();
00089     }
00090 }
00091 
00092 //glavna funkcija programa
00093 int main()
00094 {
00095     while(1) {
00096         prebaciSPrvogNaDrugiSenzor();
00097     }
00098 }
00099