wu

Dependencies:   mbed-rtos mbed

Fork of Boboobooov4 by kao yi

Committer:
backman
Date:
Sun Jun 29 14:02:25 2014 +0000
Revision:
15:585df3979be8
Parent:
14:2d90b0066fc6
Child:
16:b78dce5c0e98
lin

Who changed what in which revision?

UserRevisionLine numberNew contents of line
backman 1:82bc25a7b68b 1 #include "mbed.h"
backman 1:82bc25a7b68b 2 #include "camera_api.h"
backman 1:82bc25a7b68b 3
backman 1:82bc25a7b68b 4 #define clk 2 //ms
backman 6:5a39bde2e016 5
backman 13:63f9a5101205 6 BX_camera::BX_camera(int p)
backman 6:5a39bde2e016 7 {
backman 6:5a39bde2e016 8
backman 6:5a39bde2e016 9 line_CamR = new FastAnalogIn(PTD5);
backman 6:5a39bde2e016 10 line_CamL= new FastAnalogIn(PTD6,0);
backman 6:5a39bde2e016 11 cam_clk=new DigitalOut(PTE1);
backman 6:5a39bde2e016 12 si=new DigitalOut(PTD7);
backman 13:63f9a5101205 13 padding = p;
backman 6:5a39bde2e016 14 }
backman 6:5a39bde2e016 15
backman 6:5a39bde2e016 16 int BX_camera::black_centerR(void)
backman 6:5a39bde2e016 17 {
backman 6:5a39bde2e016 18
backman 7:fd976e1ced33 19 int l_care=10;
backman 7:fd976e1ced33 20 int r_care=118;
backman 15:585df3979be8 21 int b_start=0;
backman 14:2d90b0066fc6 22 int b_end=0;
backman 15:585df3979be8 23 bool l_f1=false;
backman 15:585df3979be8 24 bool l_f2=false;
backman 15:585df3979be8 25 bool find=false;
backman 15:585df3979be8 26 int b_thr_up=32;
backman 15:585df3979be8 27 int b_thr_dn=5;
backman 6:5a39bde2e016 28 int b_w=0;
backman 15:585df3979be8 29
backman 15:585df3979be8 30 for(int i=r_care;i>l_care;i--){
backman 15:585df3979be8 31
backman 15:585df3979be8 32
backman 15:585df3979be8 33 if(l_f1==false&&sign_line_imageR[i]==' '){
backman 15:585df3979be8 34
backman 15:585df3979be8 35 b_start=i;
backman 15:585df3979be8 36 l_f1=true;
backman 15:585df3979be8 37 }
backman 15:585df3979be8 38 if(l_f1==true && sign_line_imageR[i]=='O'){
backman 15:585df3979be8 39 b_end=i-1;
backman 15:585df3979be8 40 l_f2=true;
backman 15:585df3979be8 41 }
backman 15:585df3979be8 42
backman 15:585df3979be8 43 if(l_f1==true && l_f2== true){
backman 15:585df3979be8 44 b_w=b_start-b_end;
backman 15:585df3979be8 45 if( b_thr_up>b_w&&b_w> b_thr_dn){
backman 15:585df3979be8 46
backman 15:585df3979be8 47 find=true;
backman 15:585df3979be8 48 break;
backman 6:5a39bde2e016 49 }
backman 15:585df3979be8 50 else{
backman 15:585df3979be8 51 l_f1=false;
backman 15:585df3979be8 52 l_f2=false;
backman 15:585df3979be8 53
backman 15:585df3979be8 54 }
backman 15:585df3979be8 55
backman 15:585df3979be8 56
backman 15:585df3979be8 57 }
backman 15:585df3979be8 58
backman 15:585df3979be8 59
backman 6:5a39bde2e016 60 }
backman 15:585df3979be8 61
backman 15:585df3979be8 62
backman 15:585df3979be8 63
backman 15:585df3979be8 64
backman 3:c5f2281b3ed2 65
backman 15:585df3979be8 66 if(find)
backman 15:585df3979be8 67 return (b_start+b_end)/2;
backman 15:585df3979be8 68 else
backman 15:585df3979be8 69 return -1;
backman 15:585df3979be8 70 }
backman 6:5a39bde2e016 71
backman 11:418e39749f48 72
backman 6:5a39bde2e016 73
backman 6:5a39bde2e016 74
backman 6:5a39bde2e016 75
backman 6:5a39bde2e016 76 void BX_camera::read(void)
backman 6:5a39bde2e016 77 {
backman 6:5a39bde2e016 78
backman 6:5a39bde2e016 79 w_f_vL=0x0000;
backman 6:5a39bde2e016 80 b_f_vL=0xffff;
backman 6:5a39bde2e016 81
backman 6:5a39bde2e016 82 w_f_vR=0x0000;
backman 6:5a39bde2e016 83 b_f_vR=0xffff;
backman 6:5a39bde2e016 84
backman 6:5a39bde2e016 85
backman 6:5a39bde2e016 86
backman 6:5a39bde2e016 87
backman 6:5a39bde2e016 88 *si=1;
backman 6:5a39bde2e016 89 *cam_clk=1;
backman 6:5a39bde2e016 90
backman 6:5a39bde2e016 91 wait_us(30); // tune here
backman 6:5a39bde2e016 92 *si=0;
backman 6:5a39bde2e016 93 *cam_clk=0;
backman 6:5a39bde2e016 94
backman 6:5a39bde2e016 95
backman 6:5a39bde2e016 96
backman 6:5a39bde2e016 97 line_CamR->enable();
backman 6:5a39bde2e016 98 line_CamL->enable();
backman 6:5a39bde2e016 99
backman 6:5a39bde2e016 100
backman 6:5a39bde2e016 101 //input 128 //both
backman 6:5a39bde2e016 102
backman 6:5a39bde2e016 103 for(int i=0; i<128; i++) {
backman 6:5a39bde2e016 104 *cam_clk=1;
backman 6:5a39bde2e016 105 wait_us(5);
backman 6:5a39bde2e016 106
backman 6:5a39bde2e016 107
backman 6:5a39bde2e016 108 line_imageR[i]=line_CamR->read_u16();
backman 6:5a39bde2e016 109 line_imageL[i]=line_CamL->read_u16();
backman 4:05b21dbca0c7 110
backman 6:5a39bde2e016 111 // big small
backman 6:5a39bde2e016 112 if(line_imageR[i] > w_f_vR)
backman 6:5a39bde2e016 113 w_f_vR=line_imageR[i];
backman 6:5a39bde2e016 114 else if(line_imageR[i] < b_f_vR )
backman 6:5a39bde2e016 115 b_f_vR = line_imageR[i];
backman 6:5a39bde2e016 116
backman 6:5a39bde2e016 117
backman 6:5a39bde2e016 118 if(line_imageL[i] > w_f_vL)
backman 6:5a39bde2e016 119 w_f_vL=line_imageL[i];
backman 6:5a39bde2e016 120 else if(line_imageL[i] < b_f_vL )
backman 6:5a39bde2e016 121 b_f_vL = line_imageL[i];
backman 6:5a39bde2e016 122
backman 6:5a39bde2e016 123
backman 6:5a39bde2e016 124
backman 6:5a39bde2e016 125
backman 6:5a39bde2e016 126 *cam_clk=0;
backman 6:5a39bde2e016 127 wait_us(5);
backman 6:5a39bde2e016 128
backman 6:5a39bde2e016 129
backman 6:5a39bde2e016 130 }
backman 6:5a39bde2e016 131
backman 6:5a39bde2e016 132
backman 6:5a39bde2e016 133 line_CamR->enable();
backman 6:5a39bde2e016 134 line_CamL->enable();
backman 6:5a39bde2e016 135
backman 6:5a39bde2e016 136
backman 6:5a39bde2e016 137 //filter L R //may change
backman 6:5a39bde2e016 138
backman 6:5a39bde2e016 139 for(int i=0; i<128; i++) {
backman 6:5a39bde2e016 140
backman 6:5a39bde2e016 141
backman 6:5a39bde2e016 142 if( (line_imageR[i]-b_f_vR) < (w_f_vR - line_imageR[i] ) )
backman 6:5a39bde2e016 143 sign_line_imageR[i]=' ';
backman 6:5a39bde2e016 144 else
backman 6:5a39bde2e016 145 sign_line_imageR[i]='O';
backman 6:5a39bde2e016 146
backman 6:5a39bde2e016 147
backman 6:5a39bde2e016 148 if( (line_imageL[i]-b_f_vL) < (w_f_vL - line_imageL[i] ) )
backman 6:5a39bde2e016 149 sign_line_imageL[i]=' ';
backman 6:5a39bde2e016 150 else
backman 6:5a39bde2e016 151 sign_line_imageL[i]='O';
backman 6:5a39bde2e016 152
backman 6:5a39bde2e016 153
backman 6:5a39bde2e016 154
backman 6:5a39bde2e016 155
backman 6:5a39bde2e016 156
backman 6:5a39bde2e016 157 if(i==0) {
backman 6:5a39bde2e016 158 sign_line_imageR[i]='X';
backman 6:5a39bde2e016 159 sign_line_imageL[i]='X';
backman 6:5a39bde2e016 160 }
backman 6:5a39bde2e016 161
backman 6:5a39bde2e016 162
backman 6:5a39bde2e016 163 }
backman 6:5a39bde2e016 164
backman 6:5a39bde2e016 165
backman 6:5a39bde2e016 166
backman 6:5a39bde2e016 167 }