Ultrazvucno mjerenje udaljenosti sa prikazom na dva sedam segmenta displeja

Dependencies:   mbed

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?

UserRevisionLine numberNew 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 }