Dependencies: mbed Motordriver QEI
servo.h
- Committer:
- Keisuke_Fujii
- Date:
- 2011-11-10
- Revision:
- 1:19d647492936
File content as of revision 1:19d647492936:
void control_servo( void ) { short torque[9] = { 0xfa, 0xaf, 0x00, 0x00, 0x24, 0x01, 0x01, 0x01, 0x00 }; short send_deg[10] = { 0xfa, 0xaf, 0x00, 0x00, 0x1e, 0x02, 0x01, 0x01, 0x00, 0x00 }; // Hdr, Hdr, ID, Flg, Adr, Len, Cnt,Lower,Upper, Sum for( int a = 0; a < LENGTH; a ++ ) { torque[2] = ID_num[a]; torque[8] = cal_sum( torque, 8 ); for( int b = 0; b < 9; b ++ ) servo.putc( torque[b] ); wait_ms( 5 ); } while( 1 ) { for( int a = 0; a < LENGTH; a ++ ) { for( int i = 0; i < LENGTH; i ++ ) { send_deg[2] = ID_num[i]; cal_deg( degree[a], &send_deg[7], &send_deg[8] ); send_deg[9] = cal_sum( send_deg, 9 ); for( int b = 0; b < 10; b ++ ) servo.putc( send_deg[b] ); wait_ms( 1000 ); } } } } void cal_deg( short degree, short *lower, short *upper ) { *lower = degree & 0x00ff; *upper = ( degree >> 8 ) & 0x00ff; } void id_set( void ) { int i, j; short ID[LENGTH][9] = { { 0xfa, 0xaf, 0x01, 0x00, 0x04, 0x01, 0x01, 0x01, 0x00 } //ID }; for( i = 0; i < LENGTH; i ++ ) { ID[i][7] = ID_num[i]; ID[i][8] = cal_sum( ID[i], 8 ); for( j = 0; j < 9; j ++ ) servo.putc( ID[i][j] ); save( ID[i][7] ); } } short cal_sum( short *data, int sum_num ) { int sum = 0, j; for( j = 2; j < sum_num; j ++ ) { sum ^= ( int )data[j]; } return sum; } void save( short id ) { int i, j; short save[2][8] = { { 0xfa, 0xaf, id, 0x40, 0xff, 0x00, 0x00, 0x00 }, //save { 0xfa, 0xaf, id, 0x20, 0xff, 0x00, 0x00, 0x00 } //reboot }; for( i = 0; i < 2; i ++ ) { save[i][2] = id; save[i][7] = cal_sum( save[i], 7 ); for( j = 0; j < 8; j ++ ) servo.putc( save[i][j] ); } }