Applied engineering Team / Mbed 2 deprecated programskiZadatak

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002  
00003 Ticker osvjezavanje;                                
00004 Serial pc(USBTX, USBRX);                           
00005 DigitalOut trig (p29);                              
00006 DigitalIn  echo (p30);                              
00007 PwmOut led(p21);
00008 int alarm;
00009 BusInOut inputSW(p24, p25, p26, p27);               
00010 DigitalOut Dis1(p19);                               
00011 DigitalOut Dis2(p20);                               
00012 BusOut Seg(p5,p6,p7,p8,p9,p10,p11,p12);             
00013 int prikaz;
00014 int Znak1;
00015 int Znak2;
00016 int brojac;
00017 Timer tmr;                                          
00018 double pulsedur, distance;                          
00019 char SegConvert(char SegValue);                     
00020 void displays();
00021   
00022 int main()
00023 {
00024     inputSW.mode(PullUp);                           
00025     led.period(0.001);
00026     osvjezavanje.attach(&displays, 0.005);          
00027     while(1) {
00028         tmr.reset();                                
00029         trig = 1;                                   
00030         wait_us(10);                                
00031         trig = 0;                                   
00032  
00033         while (!echo);                              
00034         tmr.start();
00035  
00036         while (echo);                               
00037         tmr.stop();
00038  
00039         pulsedur = tmr.read_us();                   
00040         distance = pulsedur/58;                     
00041         pc.printf("pulsedur=%8.2f\n\r", distance);  
00042         switch(inputSW) {                           
00043             case 0x1:
00044                 alarm=4;
00045                 break;
00046             case 0x2:
00047                 alarm=6;
00048                 break;
00049             case 0x3:
00050                 alarm=8;
00051                 break;
00052             case 0x4:
00053                 alarm=10;
00054                 break;
00055             case 0x5:
00056                 alarm=12;
00057                 break;
00058             case 0x6:
00059                 alarm=14;
00060                 break;
00061             case 0x7:
00062                 alarm=16;
00063                 break;
00064             case 0x8:
00065                 alarm=18;
00066                 break;
00067             case 0x9:
00068                 alarm=20;
00069                 break;
00070             case 0xA:
00071                 alarm=22;
00072                 break;
00073             case 0xB:
00074                 alarm=24;
00075                 break;
00076             case 0xC:
00077                 alarm=26;
00078                 break;
00079             case 0xD:
00080                 alarm=28;
00081                 break;
00082             case 0xE:
00083                 alarm=30;
00084                 break;
00085             case 0xF:
00086                 alarm=32;
00087                 break;
00088             default :
00089                 alarm=2;
00090         }
00091         if (alarm>distance) {
00092             led=0.5;
00093         } else {
00094             led=0.0;
00095         }
00096         prikaz = distance*100;                      
00097         Znak1 = prikaz/1000;                        
00098         Znak2 = (prikaz/100)%10;                    
00099         wait(0.5);
00100     }
00101 }
00102 
00103 void displays(){
00104     switch (++brojac) {                             
00105         case 1:                                     
00106             Dis1=1;                                 
00107             Dis2=0;                                 
00108             Seg=SegConvert(Znak1);                  
00109             break;
00110         case 2:                                     
00111             Dis1=0;                                 
00112             Dis2=1;                                 
00113             Seg=SegConvert(Znak2);                  
00114             brojac=0;                               
00115             break;
00116     }
00117 }
00118  
00119 char SegConvert(char SegValue){
00120     char SegByte=0x00;
00121     switch (SegValue) {                             
00122         case 0 :
00123             SegByte = 0x3F;                         
00124             break;                                  
00125         case 1 :
00126             SegByte = 0x06;                         
00127             break; 
00128         case 2 :
00129             SegByte = 0x5B;                         
00130             break; 
00131         case 3 :
00132             SegByte = 0x4F;                         
00133             break; 
00134         case 4 :
00135             SegByte = 0x66;                         
00136             break; 
00137         case 5 :
00138             SegByte = 0x6D;                         
00139             break; 
00140         case 6 :
00141             SegByte = 0x7D;                         
00142             break; 
00143         case 7 :
00144             SegByte = 0x07;                         
00145             break; 
00146         case 8 :
00147             SegByte = 0x7F;                         
00148             break; 
00149         case 9 :
00150             SegByte = 0x6F;                         
00151             break; 
00152     }
00153     return SegByte;
00154 }