Ultrazvucno mjerenje udaljenosti sa prikazom na dva sedam segmenta displeja
Dependencies: mbed
main.cpp@0:7f642f42dec0, 2016-12-13 (annotated)
- Committer:
- dfraj
- Date:
- Tue Dec 13 19:37:48 2016 +0000
- Revision:
- 0:7f642f42dec0
Ultrazvucno mjerenje udaljenosti sa prikazom na dva sedam segmentna displeja
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| dfraj | 0:7f642f42dec0 | 1 | #include "mbed.h" |
| dfraj | 0:7f642f42dec0 | 2 | |
| dfraj | 0:7f642f42dec0 | 3 | Ticker osvjezavanje; |
| dfraj | 0:7f642f42dec0 | 4 | Serial pc(USBTX, USBRX); |
| dfraj | 0:7f642f42dec0 | 5 | DigitalOut trig (p29); |
| dfraj | 0:7f642f42dec0 | 6 | DigitalIn echo (p30); |
| dfraj | 0:7f642f42dec0 | 7 | PwmOut led(p21); |
| dfraj | 0:7f642f42dec0 | 8 | int alarm; |
| dfraj | 0:7f642f42dec0 | 9 | BusInOut inputSW(p24, p25, p26, p27); |
| dfraj | 0:7f642f42dec0 | 10 | DigitalOut Dis1(p19); |
| dfraj | 0:7f642f42dec0 | 11 | DigitalOut Dis2(p20); |
| dfraj | 0:7f642f42dec0 | 12 | BusOut Seg(p5,p6,p7,p8,p9,p10,p11,p12); |
| dfraj | 0:7f642f42dec0 | 13 | int prikaz; |
| dfraj | 0:7f642f42dec0 | 14 | int Znak1; |
| dfraj | 0:7f642f42dec0 | 15 | int Znak2; |
| dfraj | 0:7f642f42dec0 | 16 | int brojac; |
| dfraj | 0:7f642f42dec0 | 17 | Timer tmr; |
| dfraj | 0:7f642f42dec0 | 18 | double pulsedur, distance; |
| dfraj | 0:7f642f42dec0 | 19 | char SegConvert(char SegValue); |
| dfraj | 0:7f642f42dec0 | 20 | void displays(); |
| dfraj | 0:7f642f42dec0 | 21 | |
| dfraj | 0:7f642f42dec0 | 22 | int main() |
| dfraj | 0:7f642f42dec0 | 23 | { |
| dfraj | 0:7f642f42dec0 | 24 | inputSW.mode(PullUp); |
| dfraj | 0:7f642f42dec0 | 25 | led.period(0.001); |
| dfraj | 0:7f642f42dec0 | 26 | osvjezavanje.attach(&displays, 0.005); |
| dfraj | 0:7f642f42dec0 | 27 | while(1) { |
| dfraj | 0:7f642f42dec0 | 28 | tmr.reset(); |
| dfraj | 0:7f642f42dec0 | 29 | trig = 1; |
| dfraj | 0:7f642f42dec0 | 30 | wait_us(10); |
| dfraj | 0:7f642f42dec0 | 31 | trig = 0; |
| dfraj | 0:7f642f42dec0 | 32 | |
| dfraj | 0:7f642f42dec0 | 33 | while (!echo); |
| dfraj | 0:7f642f42dec0 | 34 | tmr.start(); |
| dfraj | 0:7f642f42dec0 | 35 | |
| dfraj | 0:7f642f42dec0 | 36 | while (echo); |
| dfraj | 0:7f642f42dec0 | 37 | tmr.stop(); |
| dfraj | 0:7f642f42dec0 | 38 | |
| dfraj | 0:7f642f42dec0 | 39 | pulsedur = tmr.read_us(); |
| dfraj | 0:7f642f42dec0 | 40 | distance = pulsedur/58; |
| dfraj | 0:7f642f42dec0 | 41 | pc.printf("pulsedur=%8.2f\n\r", distance); |
| dfraj | 0:7f642f42dec0 | 42 | switch(inputSW) { |
| dfraj | 0:7f642f42dec0 | 43 | case 0x1: |
| dfraj | 0:7f642f42dec0 | 44 | alarm=4; |
| dfraj | 0:7f642f42dec0 | 45 | break; |
| dfraj | 0:7f642f42dec0 | 46 | case 0x2: |
| dfraj | 0:7f642f42dec0 | 47 | alarm=6; |
| dfraj | 0:7f642f42dec0 | 48 | break; |
| dfraj | 0:7f642f42dec0 | 49 | case 0x3: |
| dfraj | 0:7f642f42dec0 | 50 | alarm=8; |
| dfraj | 0:7f642f42dec0 | 51 | break; |
| dfraj | 0:7f642f42dec0 | 52 | case 0x4: |
| dfraj | 0:7f642f42dec0 | 53 | alarm=10; |
| dfraj | 0:7f642f42dec0 | 54 | break; |
| dfraj | 0:7f642f42dec0 | 55 | case 0x5: |
| dfraj | 0:7f642f42dec0 | 56 | alarm=12; |
| dfraj | 0:7f642f42dec0 | 57 | break; |
| dfraj | 0:7f642f42dec0 | 58 | case 0x6: |
| dfraj | 0:7f642f42dec0 | 59 | alarm=14; |
| dfraj | 0:7f642f42dec0 | 60 | break; |
| dfraj | 0:7f642f42dec0 | 61 | case 0x7: |
| dfraj | 0:7f642f42dec0 | 62 | alarm=16; |
| dfraj | 0:7f642f42dec0 | 63 | break; |
| dfraj | 0:7f642f42dec0 | 64 | case 0x8: |
| dfraj | 0:7f642f42dec0 | 65 | alarm=18; |
| dfraj | 0:7f642f42dec0 | 66 | break; |
| dfraj | 0:7f642f42dec0 | 67 | case 0x9: |
| dfraj | 0:7f642f42dec0 | 68 | alarm=20; |
| dfraj | 0:7f642f42dec0 | 69 | break; |
| dfraj | 0:7f642f42dec0 | 70 | case 0xA: |
| dfraj | 0:7f642f42dec0 | 71 | alarm=22; |
| dfraj | 0:7f642f42dec0 | 72 | break; |
| dfraj | 0:7f642f42dec0 | 73 | case 0xB: |
| dfraj | 0:7f642f42dec0 | 74 | alarm=24; |
| dfraj | 0:7f642f42dec0 | 75 | break; |
| dfraj | 0:7f642f42dec0 | 76 | case 0xC: |
| dfraj | 0:7f642f42dec0 | 77 | alarm=26; |
| dfraj | 0:7f642f42dec0 | 78 | break; |
| dfraj | 0:7f642f42dec0 | 79 | case 0xD: |
| dfraj | 0:7f642f42dec0 | 80 | alarm=28; |
| dfraj | 0:7f642f42dec0 | 81 | break; |
| dfraj | 0:7f642f42dec0 | 82 | case 0xE: |
| dfraj | 0:7f642f42dec0 | 83 | alarm=30; |
| dfraj | 0:7f642f42dec0 | 84 | break; |
| dfraj | 0:7f642f42dec0 | 85 | case 0xF: |
| dfraj | 0:7f642f42dec0 | 86 | alarm=32; |
| dfraj | 0:7f642f42dec0 | 87 | break; |
| dfraj | 0:7f642f42dec0 | 88 | default : |
| dfraj | 0:7f642f42dec0 | 89 | alarm=2; |
| dfraj | 0:7f642f42dec0 | 90 | } |
| dfraj | 0:7f642f42dec0 | 91 | if (alarm>distance) { |
| dfraj | 0:7f642f42dec0 | 92 | led=0.5; |
| dfraj | 0:7f642f42dec0 | 93 | } else { |
| dfraj | 0:7f642f42dec0 | 94 | led=0.0; |
| dfraj | 0:7f642f42dec0 | 95 | } |
| dfraj | 0:7f642f42dec0 | 96 | prikaz = distance*100; |
| dfraj | 0:7f642f42dec0 | 97 | Znak1 = prikaz/1000; |
| dfraj | 0:7f642f42dec0 | 98 | Znak2 = (prikaz/100)%10; |
| dfraj | 0:7f642f42dec0 | 99 | wait(0.5); |
| dfraj | 0:7f642f42dec0 | 100 | } |
| dfraj | 0:7f642f42dec0 | 101 | } |
| dfraj | 0:7f642f42dec0 | 102 | |
| dfraj | 0:7f642f42dec0 | 103 | void displays(){ |
| dfraj | 0:7f642f42dec0 | 104 | switch (++brojac) { |
| dfraj | 0:7f642f42dec0 | 105 | case 1: |
| dfraj | 0:7f642f42dec0 | 106 | Dis1=1; |
| dfraj | 0:7f642f42dec0 | 107 | Dis2=0; |
| dfraj | 0:7f642f42dec0 | 108 | Seg=SegConvert(Znak1); |
| dfraj | 0:7f642f42dec0 | 109 | break; |
| dfraj | 0:7f642f42dec0 | 110 | case 2: |
| dfraj | 0:7f642f42dec0 | 111 | Dis1=0; |
| dfraj | 0:7f642f42dec0 | 112 | Dis2=1; |
| dfraj | 0:7f642f42dec0 | 113 | Seg=SegConvert(Znak2); |
| dfraj | 0:7f642f42dec0 | 114 | brojac=0; |
| dfraj | 0:7f642f42dec0 | 115 | break; |
| dfraj | 0:7f642f42dec0 | 116 | } |
| dfraj | 0:7f642f42dec0 | 117 | } |
| dfraj | 0:7f642f42dec0 | 118 | |
| dfraj | 0:7f642f42dec0 | 119 | char SegConvert(char SegValue){ |
| dfraj | 0:7f642f42dec0 | 120 | char SegByte=0x00; |
| dfraj | 0:7f642f42dec0 | 121 | switch (SegValue) { |
| dfraj | 0:7f642f42dec0 | 122 | case 0 : |
| dfraj | 0:7f642f42dec0 | 123 | SegByte = 0x3F; |
| dfraj | 0:7f642f42dec0 | 124 | break; |
| dfraj | 0:7f642f42dec0 | 125 | case 1 : |
| dfraj | 0:7f642f42dec0 | 126 | SegByte = 0x06; |
| dfraj | 0:7f642f42dec0 | 127 | break; |
| dfraj | 0:7f642f42dec0 | 128 | case 2 : |
| dfraj | 0:7f642f42dec0 | 129 | SegByte = 0x5B; |
| dfraj | 0:7f642f42dec0 | 130 | break; |
| dfraj | 0:7f642f42dec0 | 131 | case 3 : |
| dfraj | 0:7f642f42dec0 | 132 | SegByte = 0x4F; |
| dfraj | 0:7f642f42dec0 | 133 | break; |
| dfraj | 0:7f642f42dec0 | 134 | case 4 : |
| dfraj | 0:7f642f42dec0 | 135 | SegByte = 0x66; |
| dfraj | 0:7f642f42dec0 | 136 | break; |
| dfraj | 0:7f642f42dec0 | 137 | case 5 : |
| dfraj | 0:7f642f42dec0 | 138 | SegByte = 0x6D; |
| dfraj | 0:7f642f42dec0 | 139 | break; |
| dfraj | 0:7f642f42dec0 | 140 | case 6 : |
| dfraj | 0:7f642f42dec0 | 141 | SegByte = 0x7D; |
| dfraj | 0:7f642f42dec0 | 142 | break; |
| dfraj | 0:7f642f42dec0 | 143 | case 7 : |
| dfraj | 0:7f642f42dec0 | 144 | SegByte = 0x07; |
| dfraj | 0:7f642f42dec0 | 145 | break; |
| dfraj | 0:7f642f42dec0 | 146 | case 8 : |
| dfraj | 0:7f642f42dec0 | 147 | SegByte = 0x7F; |
| dfraj | 0:7f642f42dec0 | 148 | break; |
| dfraj | 0:7f642f42dec0 | 149 | case 9 : |
| dfraj | 0:7f642f42dec0 | 150 | SegByte = 0x6F; |
| dfraj | 0:7f642f42dec0 | 151 | break; |
| dfraj | 0:7f642f42dec0 | 152 | } |
| dfraj | 0:7f642f42dec0 | 153 | return SegByte; |
| dfraj | 0:7f642f42dec0 | 154 | } |