Ultrazuvcno mjerenje udaljenosti

Dependencies:   mbed

Committer:
markomileticbj
Date:
Fri Jun 19 16:59:54 2015 +0000
Revision:
0:4fb151e9c106
Ultrazvucno mjerenje udaljenosti

Who changed what in which revision?

UserRevisionLine numberNew contents of line
markomileticbj 0:4fb151e9c106 1 #include "mbed.h"
markomileticbj 0:4fb151e9c106 2 #include "hcsr04.h"
markomileticbj 0:4fb151e9c106 3
markomileticbj 0:4fb151e9c106 4 Ticker osvjezavanje; // ticker koji ce sluziti za osvjezavanje prikaza na displeju
markomileticbj 0:4fb151e9c106 5
markomileticbj 0:4fb151e9c106 6 Serial pc(USBTX, USBRX);
markomileticbj 0:4fb151e9c106 7 Serial bluetooth(p13, p14);
markomileticbj 0:4fb151e9c106 8 HCSR04 senzor(p29,p30);
markomileticbj 0:4fb151e9c106 9 AnalogIn Ain(p20);
markomileticbj 0:4fb151e9c106 10 PwmOut buzzer(p25);
markomileticbj 0:4fb151e9c106 11 float ADCdata;
markomileticbj 0:4fb151e9c106 12 float temp;
markomileticbj 0:4fb151e9c106 13 float koeficijent;
markomileticbj 0:4fb151e9c106 14 float duljina;
markomileticbj 0:4fb151e9c106 15 int alarm;
markomileticbj 0:4fb151e9c106 16 BusInOut inputSW(p15, p16, p17, p18);
markomileticbj 0:4fb151e9c106 17 DigitalOut Dis1(p24); // display1
markomileticbj 0:4fb151e9c106 18 DigitalOut Dis2(p23); // display2
markomileticbj 0:4fb151e9c106 19 DigitalOut Dis3(p22); // display3
markomileticbj 0:4fb151e9c106 20 DigitalOut Dis4(p21); // display4
markomileticbj 0:4fb151e9c106 21 BusOut Seg(p5,p6,p7,p8,p9,p10,p11,p12); // A,B,C,D,E,F,G,DP
markomileticbj 0:4fb151e9c106 22 int prikaz;
markomileticbj 0:4fb151e9c106 23 int Znak1;
markomileticbj 0:4fb151e9c106 24 int Znak2;
markomileticbj 0:4fb151e9c106 25 int Znak3;
markomileticbj 0:4fb151e9c106 26 int Znak4;
markomileticbj 0:4fb151e9c106 27 int brojac;
markomileticbj 0:4fb151e9c106 28
markomileticbj 0:4fb151e9c106 29 char SegConvert(char SegValue); // function prototype
markomileticbj 0:4fb151e9c106 30
markomileticbj 0:4fb151e9c106 31 //funkcija za osvjezavanje ispisa na displejima svakih 5ms-koristi se tromost oka za prikaz
markomileticbj 0:4fb151e9c106 32 void displeji() // displeji function
markomileticbj 0:4fb151e9c106 33 {
markomileticbj 0:4fb151e9c106 34 switch (++brojac) { // brojac se uvecava za 1 i svaki puta kada se uveca, prebacuje ispis na sljedeci displej
markomileticbj 0:4fb151e9c106 35 case 1: // ispisivanje na prvi displej
markomileticbj 0:4fb151e9c106 36 Dis4=0; //iskljucuje se ispis na 4 displeju
markomileticbj 0:4fb151e9c106 37 Dis1=1; //ukljucuje se ispis na 1 displeju
markomileticbj 0:4fb151e9c106 38 Seg=SegConvert(Znak1); // tens column
markomileticbj 0:4fb151e9c106 39 break;
markomileticbj 0:4fb151e9c106 40 case 2: //ispoisivanje na drugi displej
markomileticbj 0:4fb151e9c106 41 Dis1=0; //iskljucuje se ispis na 1 displeju
markomileticbj 0:4fb151e9c106 42 Dis2=1; //ukljucuje se ispis na 2 displeju
markomileticbj 0:4fb151e9c106 43 Seg=SegConvert(Znak2); // tens column
markomileticbj 0:4fb151e9c106 44 Seg=Seg|0x80; // napravljena OR funkcija nad prikazanim cijeli djelom broja gdje se ukljucuje i decimalna tocka
markomileticbj 0:4fb151e9c106 45 break;
markomileticbj 0:4fb151e9c106 46 case 3: //ispisivanje na treci displej
markomileticbj 0:4fb151e9c106 47 Dis2=0; //iskljucuje se ispis na 2 displeju
markomileticbj 0:4fb151e9c106 48 Dis3=1; //ukljucuje se ispis na 3 displeju
markomileticbj 0:4fb151e9c106 49 Seg=SegConvert(Znak3); // tens column
markomileticbj 0:4fb151e9c106 50 break;
markomileticbj 0:4fb151e9c106 51 case 4: //ispisivanje na cetvrti displej
markomileticbj 0:4fb151e9c106 52 Dis3=0; //iskljucuje se ispis na 3displeju
markomileticbj 0:4fb151e9c106 53 Dis4=1; //ukljucuje se ispis na 4 displeju
markomileticbj 0:4fb151e9c106 54 Seg=SegConvert(Znak4); // tens column
markomileticbj 0:4fb151e9c106 55 brojac=0; // kod ispisa na zadnjem displeju resetira se brojac da prikaz opet pocne od prvog displeja
markomileticbj 0:4fb151e9c106 56 break;
markomileticbj 0:4fb151e9c106 57 }
markomileticbj 0:4fb151e9c106 58 }
markomileticbj 0:4fb151e9c106 59
markomileticbj 0:4fb151e9c106 60 int main()
markomileticbj 0:4fb151e9c106 61 {
markomileticbj 0:4fb151e9c106 62 ADCdata=0.06;
markomileticbj 0:4fb151e9c106 63 inputSW.mode(PullUp);
markomileticbj 0:4fb151e9c106 64 buzzer.period(0.001);
markomileticbj 0:4fb151e9c106 65 osvjezavanje.attach(&displeji, 0.005); //funkcija tickera. Vrijeme osvjezavanja displeja 5ms-koristi se tromost oka za prikaz
markomileticbj 0:4fb151e9c106 66 while(1) {
markomileticbj 0:4fb151e9c106 67 ADCdata=(0.9*ADCdata)+(0.1*Ain);
markomileticbj 0:4fb151e9c106 68 temp=ADCdata*303;
markomileticbj 0:4fb151e9c106 69 duljina = senzor.udaljenost();
markomileticbj 0:4fb151e9c106 70 koeficijent = (temp*0.6)+331;
markomileticbj 0:4fb151e9c106 71 // duljina=duljina/343;
markomileticbj 0:4fb151e9c106 72 // duljina = duljina* koeficijent;
markomileticbj 0:4fb151e9c106 73 pc.printf("udaljenost u cm =%8.2f\n\r", duljina);
markomileticbj 0:4fb151e9c106 74 bluetooth.printf("udaljenost u cm =%8.2f\n\r", duljina);
markomileticbj 0:4fb151e9c106 75 switch(inputSW) {
markomileticbj 0:4fb151e9c106 76 case 0x1:
markomileticbj 0:4fb151e9c106 77 alarm=4;
markomileticbj 0:4fb151e9c106 78 break;
markomileticbj 0:4fb151e9c106 79 case 0x2:
markomileticbj 0:4fb151e9c106 80 alarm=6;
markomileticbj 0:4fb151e9c106 81 break;
markomileticbj 0:4fb151e9c106 82 case 0x3:
markomileticbj 0:4fb151e9c106 83 alarm=8;
markomileticbj 0:4fb151e9c106 84 break;
markomileticbj 0:4fb151e9c106 85 case 0x4:
markomileticbj 0:4fb151e9c106 86 alarm=10;
markomileticbj 0:4fb151e9c106 87 break;
markomileticbj 0:4fb151e9c106 88 case 0x5:
markomileticbj 0:4fb151e9c106 89 alarm=12;
markomileticbj 0:4fb151e9c106 90 break;
markomileticbj 0:4fb151e9c106 91 case 0x6:
markomileticbj 0:4fb151e9c106 92 alarm=14;
markomileticbj 0:4fb151e9c106 93 break;
markomileticbj 0:4fb151e9c106 94 case 0x7:
markomileticbj 0:4fb151e9c106 95 alarm=16;
markomileticbj 0:4fb151e9c106 96 break;
markomileticbj 0:4fb151e9c106 97 case 0x8:
markomileticbj 0:4fb151e9c106 98 alarm=18;
markomileticbj 0:4fb151e9c106 99 break;
markomileticbj 0:4fb151e9c106 100 case 0x9:
markomileticbj 0:4fb151e9c106 101 alarm=20;
markomileticbj 0:4fb151e9c106 102 break;
markomileticbj 0:4fb151e9c106 103 case 0xA:
markomileticbj 0:4fb151e9c106 104 alarm=22;
markomileticbj 0:4fb151e9c106 105 break;
markomileticbj 0:4fb151e9c106 106 case 0xB:
markomileticbj 0:4fb151e9c106 107 alarm=24;
markomileticbj 0:4fb151e9c106 108 break;
markomileticbj 0:4fb151e9c106 109 case 0xC:
markomileticbj 0:4fb151e9c106 110 alarm=26;
markomileticbj 0:4fb151e9c106 111 break;
markomileticbj 0:4fb151e9c106 112 case 0xD:
markomileticbj 0:4fb151e9c106 113 alarm=28;
markomileticbj 0:4fb151e9c106 114 break;
markomileticbj 0:4fb151e9c106 115 case 0xE:
markomileticbj 0:4fb151e9c106 116 alarm=30;
markomileticbj 0:4fb151e9c106 117 break;
markomileticbj 0:4fb151e9c106 118 case 0xF:
markomileticbj 0:4fb151e9c106 119 alarm=32;
markomileticbj 0:4fb151e9c106 120 break;
markomileticbj 0:4fb151e9c106 121 default :
markomileticbj 0:4fb151e9c106 122 alarm=2;
markomileticbj 0:4fb151e9c106 123 }
markomileticbj 0:4fb151e9c106 124 if (alarm>duljina) {
markomileticbj 0:4fb151e9c106 125 pc.printf("ALARM =%d\n\r", alarm);
markomileticbj 0:4fb151e9c106 126 bluetooth.printf("ALARM =%d\n\r", alarm);
markomileticbj 0:4fb151e9c106 127 buzzer=0.5;
markomileticbj 0:4fb151e9c106 128 } else {
markomileticbj 0:4fb151e9c106 129 buzzer=0.0;
markomileticbj 0:4fb151e9c106 130 }
markomileticbj 0:4fb151e9c106 131 prikaz = duljina*100; //preracunavanje float varijable u postotcima u integer varijablu u voltima radi ispisa
markomileticbj 0:4fb151e9c106 132 Znak1 = prikaz/1000; //racunanje cijelog djela broja za ispis
markomileticbj 0:4fb151e9c106 133 Znak2 = (prikaz/100)%10; //racunanje prve decimale za ispis
markomileticbj 0:4fb151e9c106 134 Znak3 = (prikaz/10)%10; //racunanje druge decimale za ispis
markomileticbj 0:4fb151e9c106 135 Znak4 = prikaz%10; //racunanje trece decimale za ispis
markomileticbj 0:4fb151e9c106 136 wait(0.5);
markomileticbj 0:4fb151e9c106 137 }
markomileticbj 0:4fb151e9c106 138 }
markomileticbj 0:4fb151e9c106 139
markomileticbj 0:4fb151e9c106 140 char SegConvert(char SegValue) // function 'SegConvert'
markomileticbj 0:4fb151e9c106 141 {
markomileticbj 0:4fb151e9c106 142 char SegByte=0x00;
markomileticbj 0:4fb151e9c106 143 switch (SegValue) { //DPGFEDCBA
markomileticbj 0:4fb151e9c106 144 case 0 :
markomileticbj 0:4fb151e9c106 145 SegByte = 0x3F;
markomileticbj 0:4fb151e9c106 146 break; // 00111111 binary
markomileticbj 0:4fb151e9c106 147 case 1 :
markomileticbj 0:4fb151e9c106 148 SegByte = 0x06;
markomileticbj 0:4fb151e9c106 149 break; // 00000110 binary
markomileticbj 0:4fb151e9c106 150 case 2 :
markomileticbj 0:4fb151e9c106 151 SegByte = 0x5B;
markomileticbj 0:4fb151e9c106 152 break; // 01011011 binary
markomileticbj 0:4fb151e9c106 153 case 3 :
markomileticbj 0:4fb151e9c106 154 SegByte = 0x4F;
markomileticbj 0:4fb151e9c106 155 break; // 01001111 binary
markomileticbj 0:4fb151e9c106 156 case 4 :
markomileticbj 0:4fb151e9c106 157 SegByte = 0x66;
markomileticbj 0:4fb151e9c106 158 break; // 01100110 binary
markomileticbj 0:4fb151e9c106 159 case 5 :
markomileticbj 0:4fb151e9c106 160 SegByte = 0x6D;
markomileticbj 0:4fb151e9c106 161 break; // 01101101 binary
markomileticbj 0:4fb151e9c106 162 case 6 :
markomileticbj 0:4fb151e9c106 163 SegByte = 0x7D;
markomileticbj 0:4fb151e9c106 164 break; // 01111101 binary
markomileticbj 0:4fb151e9c106 165 case 7 :
markomileticbj 0:4fb151e9c106 166 SegByte = 0x07;
markomileticbj 0:4fb151e9c106 167 break; // 00000111 binary
markomileticbj 0:4fb151e9c106 168 case 8 :
markomileticbj 0:4fb151e9c106 169 SegByte = 0x7F;
markomileticbj 0:4fb151e9c106 170 break; // 01111111 binary
markomileticbj 0:4fb151e9c106 171 case 9 :
markomileticbj 0:4fb151e9c106 172 SegByte = 0x6F;
markomileticbj 0:4fb151e9c106 173 break; // 01101111 binary
markomileticbj 0:4fb151e9c106 174 }
markomileticbj 0:4fb151e9c106 175 return SegByte;
markomileticbj 0:4fb151e9c106 176 }