BASIC4MCU | 질문게시판 | 아두이노에서 여러개 모터를 반복시키는 코드 단축시키고싶습니다.
페이지 정보
작성자 민수 작성일2019-08-26 13:32 조회13,677회 댓글1건본문
void loop 안에 문구입니다.
아래처럼 1번 / 2번 / 3번 을 넘어 6번까지 계속 있습니다.
근데 다 average1, power1, pgain1, get_data1 등 뒤에 숫자만 바꾼 형식으로 코드가 다 같습니다.
code(n) 이런식으로 저장해두고
code(1)을 불러오면 자동으로 average1, power1, pgain1, get_data1 등으로 다 1번 변수들로 코드 돌려지고
code(2)를 불러오면 자동으로 average2, power2, pgain2, get_data2 등으로 다 2번 변수들로 코드 돌려지는
이러한 방식으로 6개의 코드를 1개로 압축시키고 싶은데 방법이나 예제 소개 부탁드립니다. ㅎㅎ...
if (average1 < minus){ //R
power1 = minus - average1;
pgain1 = pow(0.04*power1,2.1)-70;
pgain1 = constrain(pgain1,20,200);
get_data1 = get_data1+pgain1;
dxl_wb.goalPosition(DXL_ID1, get_data1);
Serial.print("1 MX64 present position : "); Serial.print(get_data1); Serial.println(")");
get_data1 = get_data1;
dxl_wb.goalPosition(DXL_ID1, get_data1);
}
else if (average1 > minus && average1 < plus){
get_data1 = get_data1;
dxl_wb.goalPosition(DXL_ID1, get_data1);
Serial.print("1 MX64 present position : "); Serial.print(get_data1); Serial.println(")");
}
else {
power1 = average1 - plus;
pgain1 = pow(0.04*power1,2.1)-200;
pgain1 = constrain(pgain1,20,200);
get_data1 = get_data1-pgain1;
dxl_wb.goalPosition(DXL_ID1, get_data1);
Serial.print("1 MX64 present position : "); Serial.print(get_data1); Serial.println(")");
get_data1 = get_data1;
dxl_wb.goalPosition(DXL_ID1, get_data1);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if (average2 < minus){ //L
power2 = minus - average2;
pgain2 = pow(0.04*power2,2.1)-70;
pgain2 = constrain(pgain2,20,200);
get_data2 = get_data2-pgain2;
dxl_wb.goalPosition(DXL_ID2, get_data2);
Serial.print("2 MX64 present position : "); Serial.print(get_data2); Serial.println(")");
get_data1 = get_data1;
dxl_wb.goalPosition(DXL_ID1, get_data1);
}
else if (average2 > minus && average2 < plus){
get_data2 = get_data2;
dxl_wb.goalPosition(DXL_ID2, get_data2);
Serial.print("2 MX64 present position : "); Serial.print(get_data2); Serial.println(")");
}
else {
power2 = average2 - plus;
pgain2 = pow(0.04*power2,2.1)-200;
pgain2 = constrain(pgain2,20,200);
get_data2 = get_data2+pgain2;
dxl_wb.goalPosition(DXL_ID2, get_data2);
Serial.print("2 MX64 present position : "); Serial.print(get_data2); Serial.println(")");
get_data1 = get_data1;
dxl_wb.goalPosition(DXL_ID1, get_data1);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if (average3 < minus){ //R
power3 = minus - average3;
pgain3 = pow(0.04*power3,2.1)-70;
pgain3 = constrain(pgain3,20,200);
get_data3 = get_data3+pgain3;
dxl_wb.goalPosition(DXL_ID3, get_data3);
Serial.print("3 MX64 present position : "); Serial.print(get_data3); Serial.println(")");
get_data1 = get_data1;
dxl_wb.goalPosition(DXL_ID1, get_data1);
}
else if (average3 > minus && average3 < plus){
get_data3 = get_data3;
dxl_wb.goalPosition(DXL_ID3, get_data3);
Serial.print("3 MX64 present position : "); Serial.print(get_data3); Serial.println(")");
}
else {
power3 = average3 - plus;
pgain3 = pow(0.04*power3,2.1)-200;
pgain3 = constrain(pgain3,20,200);
get_data3 = get_data3-pgain3;
dxl_wb.goalPosition(DXL_ID3, get_data3);
Serial.print("3 MX64 present position : "); Serial.print(get_data3); Serial.println(")");
get_data1 = get_data1;
dxl_wb.goalPosition(DXL_ID1, get_data1);
}
댓글 1
조회수 13,677master님의 댓글
master 작성일전체소스 첨부하세요