譯文 張 / Mbed 2 deprecated 7_7Boboobooo

Dependencies:   mbed

Fork of Boboobooo by Clark Lin

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers camera_api.cpp Source File

camera_api.cpp

00001 #include "mbed.h"
00002 #include "camera_api.h"
00003 
00004 #define clk 2  //ms
00005  
00006  BX_camera::BX_camera(void){
00007      
00008            line_CamR = new FastAnalogIn(PTD5);
00009            line_CamL=   new FastAnalogIn(PTD6,0);  
00010             cam_clk=new DigitalOut(PTE1);
00011             si=new DigitalOut(PTD7);
00012 
00013      }
00014  
00015 int BX_camera::black_centerR(void){
00016        
00017     int black_R = 10;
00018     for(int i = 118; i >=10; i--){
00019         if(sign_line_imageR[i] == 'O' && sign_line_imageR[i-1] == ' ' && sign_line_imageR[i-2] == ' '){
00020             return i;
00021         }
00022     } 
00023     return black_R;
00024     
00025          
00026 
00027     
00028 }
00029 
00030 int BX_camera::black_centerL(void){
00031          
00032      int black_L = 118;
00033      for(int i = 10; i <118 ; i++){
00034         if(sign_line_imageL[i] == 'O' && sign_line_imageL[i+1] == ' ' && sign_line_imageL[i+2] == ' '){
00035             return i;
00036         }
00037     }
00038     return black_L;
00039      
00040      
00041     
00042           
00043                  
00044      
00045  
00046  }
00047  
00048 
00049  
00050  void BX_camera::read(void){
00051  
00052           w_f_vL=0x0000;
00053           b_f_vL=0xffff;
00054    
00055           w_f_vR=0x0000;
00056           b_f_vR=0xffff;
00057  
00058  
00059         
00060            
00061            *si=1;
00062            *cam_clk=1;
00063            
00064            wait_us(30);   // tune here
00065            *si=0;
00066            *cam_clk=0;
00067             
00068             
00069  
00070           line_CamR->enable();
00071           line_CamL->enable();
00072           
00073           
00074        //input 128 //both  
00075           
00076           for(int i=127;i>=0;i--){     
00077               *cam_clk=1;   
00078               wait_us(5);
00079              
00080              
00081              line_imageR[i]=line_CamR->read_u16();
00082              line_imageL[i]=line_CamL->read_u16();
00083          
00084          //  big small    
00085              if(line_imageR[i] > w_f_vR) 
00086                 w_f_vR=line_imageR[i];
00087              else if(line_imageR[i] < b_f_vR )
00088                 b_f_vR = line_imageR[i];
00089                 
00090                 
00091               if(line_imageL[i] > w_f_vL) 
00092                 w_f_vL=line_imageL[i];
00093              else if(line_imageL[i] < b_f_vL )
00094                 b_f_vL = line_imageL[i];   
00095                 
00096              
00097              
00098              
00099              *cam_clk=0;
00100              wait_us(5);
00101         
00102            
00103            }
00104            
00105            
00106           line_CamR->enable();
00107           line_CamL->enable();
00108            
00109            
00110            //filter L R   //may change
00111            
00112           for(int i=0;i<128;i++){   
00113            
00114            
00115                if( (line_imageR[i]-b_f_vR) < (w_f_vR - line_imageR[i] )    ) 
00116                    sign_line_imageR[i]=' ';
00117                else
00118                    sign_line_imageR[i]='O';    
00119            
00120              
00121                if( (line_imageL[i]-b_f_vL) < (w_f_vL - line_imageL[i] )    ) 
00122                    sign_line_imageL[i]=' ';
00123                else
00124                    sign_line_imageL[i]='O';    
00125            
00126            
00127                  
00128                  
00129                  
00130                  if(i==0){
00131                    sign_line_imageR[i]='X';
00132                    sign_line_imageL[i]='X'; 
00133                  }     
00134                  
00135            
00136           }
00137            
00138            
00139            
00140            }