UZ mjerenje udadaljenosti(Kupres,Jazvić)
Dependencies: mbed
Fork of mikroupravljac by
main.cpp@0:ce0c9cbc4770, 2015-06-19 (annotated)
- Committer:
- kkupres
- Date:
- Fri Jun 19 17:57:43 2015 +0000
- Revision:
- 0:ce0c9cbc4770
Zadatak6(Kupres,Jazvi?)
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kkupres | 0:ce0c9cbc4770 | 1 | #include "mbed.h" |
kkupres | 0:ce0c9cbc4770 | 2 | |
kkupres | 0:ce0c9cbc4770 | 3 | Ticker osvjezavanje; // ticker koji ce sluziti za osvjezavanje prikaza na displeju |
kkupres | 0:ce0c9cbc4770 | 4 | |
kkupres | 0:ce0c9cbc4770 | 5 | Serial pc(USBTX, USBRX); |
kkupres | 0:ce0c9cbc4770 | 6 | DigitalOut trig (p29); |
kkupres | 0:ce0c9cbc4770 | 7 | DigitalIn echo (p30); |
kkupres | 0:ce0c9cbc4770 | 8 | PwmOut buzzer(p21); |
kkupres | 0:ce0c9cbc4770 | 9 | int alarm; |
kkupres | 0:ce0c9cbc4770 | 10 | BusInOut inputSW(p24, p25, p26, p27); |
kkupres | 0:ce0c9cbc4770 | 11 | DigitalOut Dis1(p20); // display1 |
kkupres | 0:ce0c9cbc4770 | 12 | DigitalOut Dis2(p19); // display2 |
kkupres | 0:ce0c9cbc4770 | 13 | BusOut Seg(p5,p6,p7,p8,p9,p10,p11,p12); // A,B,C,D,E,F,G,DP |
kkupres | 0:ce0c9cbc4770 | 14 | int prikaz; |
kkupres | 0:ce0c9cbc4770 | 15 | int Znak1; |
kkupres | 0:ce0c9cbc4770 | 16 | int Znak2; |
kkupres | 0:ce0c9cbc4770 | 17 | int brojac; |
kkupres | 0:ce0c9cbc4770 | 18 | Timer tmr; |
kkupres | 0:ce0c9cbc4770 | 19 | double pulsedur, distance; |
kkupres | 0:ce0c9cbc4770 | 20 | |
kkupres | 0:ce0c9cbc4770 | 21 | |
kkupres | 0:ce0c9cbc4770 | 22 | char SegConvert(char SegValue); // function prototype |
kkupres | 0:ce0c9cbc4770 | 23 | |
kkupres | 0:ce0c9cbc4770 | 24 | //funkcija za osvjezavanje ispisa na displejima svakih 5ms-koristi se tromost oka za prikaz |
kkupres | 0:ce0c9cbc4770 | 25 | void displeji() // displeji function |
kkupres | 0:ce0c9cbc4770 | 26 | { |
kkupres | 0:ce0c9cbc4770 | 27 | switch (++brojac) { // brojac se uvecava za 1 i svaki puta kada se uveca, prebacuje ispis na sljedeci displej |
kkupres | 0:ce0c9cbc4770 | 28 | case 1: // ispisivanje na prvi displej |
kkupres | 0:ce0c9cbc4770 | 29 | Dis2=0; //iskljucuje se ispis na 4 displeju |
kkupres | 0:ce0c9cbc4770 | 30 | Dis1=1; //ukljucuje se ispis na 1 displeju |
kkupres | 0:ce0c9cbc4770 | 31 | Seg=SegConvert(Znak1); // tens column |
kkupres | 0:ce0c9cbc4770 | 32 | break; |
kkupres | 0:ce0c9cbc4770 | 33 | case 2: //ispoisivanje na drugi displej |
kkupres | 0:ce0c9cbc4770 | 34 | Dis1=0; //iskljucuje se ispis na 1 displeju |
kkupres | 0:ce0c9cbc4770 | 35 | Dis2=1; //ukljucuje se ispis na 2 displeju |
kkupres | 0:ce0c9cbc4770 | 36 | Seg=SegConvert(Znak2); // tens column |
kkupres | 0:ce0c9cbc4770 | 37 | brojac=0; // kod ispisa na zadnjem displeju resetira se brojac da prikaz opet pocne od prvog displeja |
kkupres | 0:ce0c9cbc4770 | 38 | break; |
kkupres | 0:ce0c9cbc4770 | 39 | } |
kkupres | 0:ce0c9cbc4770 | 40 | } |
kkupres | 0:ce0c9cbc4770 | 41 | |
kkupres | 0:ce0c9cbc4770 | 42 | int main() |
kkupres | 0:ce0c9cbc4770 | 43 | { |
kkupres | 0:ce0c9cbc4770 | 44 | inputSW.mode(PullUp); |
kkupres | 0:ce0c9cbc4770 | 45 | buzzer.period(0.001); |
kkupres | 0:ce0c9cbc4770 | 46 | osvjezavanje.attach(&displeji, 0.005); //funkcija tickera. Vrijeme osvjezavanja displeja 5ms-koristi se tromost oka za prikaz |
kkupres | 0:ce0c9cbc4770 | 47 | while(1) { |
kkupres | 0:ce0c9cbc4770 | 48 | tmr.reset(); |
kkupres | 0:ce0c9cbc4770 | 49 | trig = 1; |
kkupres | 0:ce0c9cbc4770 | 50 | wait_us(10); |
kkupres | 0:ce0c9cbc4770 | 51 | trig = 0; |
kkupres | 0:ce0c9cbc4770 | 52 | |
kkupres | 0:ce0c9cbc4770 | 53 | while (!echo); // wait high |
kkupres | 0:ce0c9cbc4770 | 54 | tmr.start(); |
kkupres | 0:ce0c9cbc4770 | 55 | |
kkupres | 0:ce0c9cbc4770 | 56 | while (echo); // wait low |
kkupres | 0:ce0c9cbc4770 | 57 | tmr.stop(); |
kkupres | 0:ce0c9cbc4770 | 58 | |
kkupres | 0:ce0c9cbc4770 | 59 | pulsedur = tmr.read_us(); |
kkupres | 0:ce0c9cbc4770 | 60 | distance = pulsedur*0.017; //cm |
kkupres | 0:ce0c9cbc4770 | 61 | pc.printf("pulsedur=%8.2f\n\r", distance); |
kkupres | 0:ce0c9cbc4770 | 62 | switch(inputSW) { |
kkupres | 0:ce0c9cbc4770 | 63 | case 0x1: |
kkupres | 0:ce0c9cbc4770 | 64 | alarm=4; |
kkupres | 0:ce0c9cbc4770 | 65 | break; |
kkupres | 0:ce0c9cbc4770 | 66 | case 0x2: |
kkupres | 0:ce0c9cbc4770 | 67 | alarm=6; |
kkupres | 0:ce0c9cbc4770 | 68 | break; |
kkupres | 0:ce0c9cbc4770 | 69 | case 0x3: |
kkupres | 0:ce0c9cbc4770 | 70 | alarm=8; |
kkupres | 0:ce0c9cbc4770 | 71 | break; |
kkupres | 0:ce0c9cbc4770 | 72 | case 0x4: |
kkupres | 0:ce0c9cbc4770 | 73 | alarm=10; |
kkupres | 0:ce0c9cbc4770 | 74 | break; |
kkupres | 0:ce0c9cbc4770 | 75 | case 0x5: |
kkupres | 0:ce0c9cbc4770 | 76 | alarm=12; |
kkupres | 0:ce0c9cbc4770 | 77 | break; |
kkupres | 0:ce0c9cbc4770 | 78 | case 0x6: |
kkupres | 0:ce0c9cbc4770 | 79 | alarm=14; |
kkupres | 0:ce0c9cbc4770 | 80 | break; |
kkupres | 0:ce0c9cbc4770 | 81 | case 0x7: |
kkupres | 0:ce0c9cbc4770 | 82 | alarm=16; |
kkupres | 0:ce0c9cbc4770 | 83 | break; |
kkupres | 0:ce0c9cbc4770 | 84 | case 0x8: |
kkupres | 0:ce0c9cbc4770 | 85 | alarm=18; |
kkupres | 0:ce0c9cbc4770 | 86 | break; |
kkupres | 0:ce0c9cbc4770 | 87 | case 0x9: |
kkupres | 0:ce0c9cbc4770 | 88 | alarm=20; |
kkupres | 0:ce0c9cbc4770 | 89 | break; |
kkupres | 0:ce0c9cbc4770 | 90 | case 0xA: |
kkupres | 0:ce0c9cbc4770 | 91 | alarm=22; |
kkupres | 0:ce0c9cbc4770 | 92 | break; |
kkupres | 0:ce0c9cbc4770 | 93 | case 0xB: |
kkupres | 0:ce0c9cbc4770 | 94 | alarm=24; |
kkupres | 0:ce0c9cbc4770 | 95 | break; |
kkupres | 0:ce0c9cbc4770 | 96 | case 0xC: |
kkupres | 0:ce0c9cbc4770 | 97 | alarm=26; |
kkupres | 0:ce0c9cbc4770 | 98 | break; |
kkupres | 0:ce0c9cbc4770 | 99 | case 0xD: |
kkupres | 0:ce0c9cbc4770 | 100 | alarm=28; |
kkupres | 0:ce0c9cbc4770 | 101 | break; |
kkupres | 0:ce0c9cbc4770 | 102 | case 0xE: |
kkupres | 0:ce0c9cbc4770 | 103 | alarm=30; |
kkupres | 0:ce0c9cbc4770 | 104 | break; |
kkupres | 0:ce0c9cbc4770 | 105 | case 0xF: |
kkupres | 0:ce0c9cbc4770 | 106 | alarm=32; |
kkupres | 0:ce0c9cbc4770 | 107 | break; |
kkupres | 0:ce0c9cbc4770 | 108 | default : |
kkupres | 0:ce0c9cbc4770 | 109 | alarm=2; |
kkupres | 0:ce0c9cbc4770 | 110 | } |
kkupres | 0:ce0c9cbc4770 | 111 | if (alarm>distance) { |
kkupres | 0:ce0c9cbc4770 | 112 | buzzer=0.5; |
kkupres | 0:ce0c9cbc4770 | 113 | } else { |
kkupres | 0:ce0c9cbc4770 | 114 | buzzer=0.0; |
kkupres | 0:ce0c9cbc4770 | 115 | } |
kkupres | 0:ce0c9cbc4770 | 116 | prikaz = distance*100; //preracunavanje float varijable u postotcima u integer varijablu u voltima radi ispisa |
kkupres | 0:ce0c9cbc4770 | 117 | Znak1 = prikaz/1000; //racunanje cijelog djela broja za ispis |
kkupres | 0:ce0c9cbc4770 | 118 | Znak2 = (prikaz/100)%10; //racunanje prve decimale za ispis |
kkupres | 0:ce0c9cbc4770 | 119 | wait(0.5); |
kkupres | 0:ce0c9cbc4770 | 120 | } |
kkupres | 0:ce0c9cbc4770 | 121 | } |
kkupres | 0:ce0c9cbc4770 | 122 | |
kkupres | 0:ce0c9cbc4770 | 123 | char SegConvert(char SegValue) // function 'SegConvert' |
kkupres | 0:ce0c9cbc4770 | 124 | { |
kkupres | 0:ce0c9cbc4770 | 125 | char SegByte=0x00; |
kkupres | 0:ce0c9cbc4770 | 126 | switch (SegValue) { //DPGFEDCBA |
kkupres | 0:ce0c9cbc4770 | 127 | case 0 : |
kkupres | 0:ce0c9cbc4770 | 128 | SegByte = 0x3F; |
kkupres | 0:ce0c9cbc4770 | 129 | break; // 00111111 binary |
kkupres | 0:ce0c9cbc4770 | 130 | case 1 : |
kkupres | 0:ce0c9cbc4770 | 131 | SegByte = 0x06; |
kkupres | 0:ce0c9cbc4770 | 132 | break; // 00000110 binary |
kkupres | 0:ce0c9cbc4770 | 133 | case 2 : |
kkupres | 0:ce0c9cbc4770 | 134 | SegByte = 0x5B; |
kkupres | 0:ce0c9cbc4770 | 135 | break; // 01011011 binary |
kkupres | 0:ce0c9cbc4770 | 136 | case 3 : |
kkupres | 0:ce0c9cbc4770 | 137 | SegByte = 0x4F; |
kkupres | 0:ce0c9cbc4770 | 138 | break; // 01001111 binary |
kkupres | 0:ce0c9cbc4770 | 139 | case 4 : |
kkupres | 0:ce0c9cbc4770 | 140 | SegByte = 0x66; |
kkupres | 0:ce0c9cbc4770 | 141 | break; // 01100110 binary |
kkupres | 0:ce0c9cbc4770 | 142 | case 5 : |
kkupres | 0:ce0c9cbc4770 | 143 | SegByte = 0x6D; |
kkupres | 0:ce0c9cbc4770 | 144 | break; // 01101101 binary |
kkupres | 0:ce0c9cbc4770 | 145 | case 6 : |
kkupres | 0:ce0c9cbc4770 | 146 | SegByte = 0x7D; |
kkupres | 0:ce0c9cbc4770 | 147 | break; // 01111101 binary |
kkupres | 0:ce0c9cbc4770 | 148 | case 7 : |
kkupres | 0:ce0c9cbc4770 | 149 | SegByte = 0x07; |
kkupres | 0:ce0c9cbc4770 | 150 | break; // 00000111 binary |
kkupres | 0:ce0c9cbc4770 | 151 | case 8 : |
kkupres | 0:ce0c9cbc4770 | 152 | SegByte = 0x7F; |
kkupres | 0:ce0c9cbc4770 | 153 | break; // 01111111 binary |
kkupres | 0:ce0c9cbc4770 | 154 | case 9 : |
kkupres | 0:ce0c9cbc4770 | 155 | SegByte = 0x6F; |
kkupres | 0:ce0c9cbc4770 | 156 | break; // 01101111 binary |
kkupres | 0:ce0c9cbc4770 | 157 | } |
kkupres | 0:ce0c9cbc4770 | 158 | return SegByte; |
kkupres | 0:ce0c9cbc4770 | 159 | } |