Ultrazvucno mjerenje udaljenosti sa prikazom na dva sedam segmenta displeja
Dependencies: mbed
main.cpp
- Committer:
- dfraj
- Date:
- 2016-12-13
- Revision:
- 0:7f642f42dec0
File content as of revision 0:7f642f42dec0:
#include "mbed.h" Ticker osvjezavanje; Serial pc(USBTX, USBRX); DigitalOut trig (p29); DigitalIn echo (p30); PwmOut led(p21); int alarm; BusInOut inputSW(p24, p25, p26, p27); DigitalOut Dis1(p19); DigitalOut Dis2(p20); BusOut Seg(p5,p6,p7,p8,p9,p10,p11,p12); int prikaz; int Znak1; int Znak2; int brojac; Timer tmr; double pulsedur, distance; char SegConvert(char SegValue); void displays(); int main() { inputSW.mode(PullUp); led.period(0.001); osvjezavanje.attach(&displays, 0.005); while(1) { tmr.reset(); trig = 1; wait_us(10); trig = 0; while (!echo); tmr.start(); while (echo); tmr.stop(); pulsedur = tmr.read_us(); distance = pulsedur/58; pc.printf("pulsedur=%8.2f\n\r", distance); switch(inputSW) { case 0x1: alarm=4; break; case 0x2: alarm=6; break; case 0x3: alarm=8; break; case 0x4: alarm=10; break; case 0x5: alarm=12; break; case 0x6: alarm=14; break; case 0x7: alarm=16; break; case 0x8: alarm=18; break; case 0x9: alarm=20; break; case 0xA: alarm=22; break; case 0xB: alarm=24; break; case 0xC: alarm=26; break; case 0xD: alarm=28; break; case 0xE: alarm=30; break; case 0xF: alarm=32; break; default : alarm=2; } if (alarm>distance) { led=0.5; } else { led=0.0; } prikaz = distance*100; Znak1 = prikaz/1000; Znak2 = (prikaz/100)%10; wait(0.5); } } void displays(){ switch (++brojac) { case 1: Dis1=1; Dis2=0; Seg=SegConvert(Znak1); break; case 2: Dis1=0; Dis2=1; Seg=SegConvert(Znak2); brojac=0; break; } } char SegConvert(char SegValue){ char SegByte=0x00; switch (SegValue) { case 0 : SegByte = 0x3F; break; case 1 : SegByte = 0x06; break; case 2 : SegByte = 0x5B; break; case 3 : SegByte = 0x4F; break; case 4 : SegByte = 0x66; break; case 5 : SegByte = 0x6D; break; case 6 : SegByte = 0x7D; break; case 7 : SegByte = 0x07; break; case 8 : SegByte = 0x7F; break; case 9 : SegByte = 0x6F; break; } return SegByte; }