void center() { for(m = 0; m < 8; m++) { ADC_Start(m); ADC_Get( &ad[m] ); ad_data[m] = ad[m]; } X_l = abs(abs(ad_data[0]-ad_data[1]) - abs(ad_data[2]-ad_data[3])); Y_l = abs(abs(ad_data[0]-ad_data[2]) - abs(ad_data[1]-ad_data[3])); X_r = abs(abs(ad_data[4]-ad_data[5]) - abs(ad_data[6]-ad_data[7])); Y_r = abs(abs(ad_data[4]-ad_data[6]) - abs(ad_data[5]-ad_data[7])); if(X_l>X_r) { center_x = ((float)(X_l-X_r))/2; center_y = ((float)(Y_l-Y_r))/2; } if(X_l<X_r) { center_x = ((float)(X_r-X_l))/2; center_y = ((float)(Y_r-Y_l))/2; } usart1_transmit(100); usart1_transmit(center_x); }
void unsigned_dec(int dec) // 십진수 출력(네자리) { unsigned int result[5]; result[0] = 0; result[1] = 0; result[2] = 0; result[3] = 0; result[4] = 0; { char i = 0; do { result[i] = (dec % 10) + 48; dec = dec / 10; i++; }while(dec != 0); while(i > 0) { i--; usart1_transmit(result[i]); } } }
s16 read_ultrasonic_1() { receive_count=0; dis_H=dis_L=0; usart1_transmit(0x55); while(receive_count<=1); return dis_H*256+dis_L; }
void zmp() { for(m = 0; m < 8; m++) { ADC_Start(m); ADC_Get( &ad[m] ); ad_data[m] = ad[m]; } for(gg=0;gg<8;gg++) { numerator=ad_data[gg]*lenx[gg]; count_numerator = count_numerator+numerator; } for(gg=0;gg<8;gg++) { denominator=ad_data[gg]; count_denominator = count_denominator+denominator; } zmpx = count_numerator/count_denominator; for(gg=0;gg<8;gg++) { numerator_1=ad_data[gg]*leny[gg]; count_numerator_1 = count_numerator_1+numerator_1; } for(gg=0;gg<8;gg++) { denominator_1=ad_data[gg]; count_denominator_1 = count_denominator_1+denominator_1; } zmpy = count_numerator_1/count_denominator_1; unsigned_dec(zmpx); unsigned_dec(zmpy); usart1_transmit(0x0d); usart1_transmit(0x0a); }