wu

Dependencies:   mbed-rtos mbed

Fork of CCC by kao yi

camera_api.cpp

Committer:
backman
Date:
2014-06-04
Revision:
2:c51647d3c14d
Parent:
1:82bc25a7b68b
Child:
3:c5f2281b3ed2

File content as of revision 2:c51647d3c14d:

#include "mbed.h"
#include "camera_api.h"

#define clk 2  //ms

 
 BX_camera::BX_camera(void){
     
           line_CamR = new FastAnalogIn(PTD5);
           line_CamL=   new FastAnalogIn(PTD6,0);  
            cam_clk=new DigitalOut(PTE1);
            si=new DigitalOut(PTD7);
     
   
     
     
     }
 
 
 void BX_camera::read(void){
 
          w_f_vL=0x0000;
          b_f_vL=0xffff;
   
          w_f_vR=0x0000;
          b_f_vR=0xffff;
 
 
        
           
           *si=1;
           *cam_clk=1;
           
           wait_us(30);   // tune here
           *si=0;
           *cam_clk=0;
            
            
 
          line_CamR->enable();
          line_CamL->enable();
          
          
       //input 128 //both  
          
          for(int i=0;i<128;i++){     
              *cam_clk=1;   
              wait_us(5);
             
             
             line_imageR[i]=line_CamR->read_u16();
             line_imageL[i]=line_CamL->read_u16();
         
         //  big small    
             if(line_imageR[i] > w_f_vR) 
                w_f_vR=line_imageR[i];
             else if(line_imageR[i] < b_f_vR )
                b_f_vR = line_imageR[i];
                
                
              if(line_imageL[i] > w_f_vL) 
                w_f_vL=line_imageL[i];
             else if(line_imageL[i] < b_f_vL )
                b_f_vL = line_imageL[i];   
                
             
             
             
             *cam_clk=0;
             wait_us(5);
        
           
           }
           
           
          line_CamR->enable();
          line_CamL->enable();
           
           
           //filter L R   //may change
           
          for(int i=0;i<128;i++){   
           
           
               if( (line_imageR[i]-b_f_vR) < (w_f_vR - line_imageR[i] )    ) 
                   sign_line_imageR[i]=' ';
               else
                   sign_line_imageR[i]='O';    
           
             
               if( (line_imageL[i]-b_f_vL) < (w_f_vL - line_imageL[i] )    ) 
                   sign_line_imageL[i]=' ';
               else
                   sign_line_imageL[i]='O';    
           
           
                 
                 
                 
                 if(i==0){
                   sign_line_imageR[i]='X';
                   sign_line_imageL[i]='X'; 
                 }     
                 
           
          }
           
           
           
           }