안녕하세요 반갑습니다.
도무지 방도가 떠오르지 않아 질문을 드립니다.
초음파센서값을 이용해서 다중서보모터를 제어할려고 합니다.
좀 더 간단하게 말을 드리면 초음파센서가 앞에 있는 장애물을 인식하면 서보모터를 제어해서 회피하는 것입니다.
distance = (unsigned)cn_data * Cvelocity / 1000;
if(distance<5.0) PORTA=0xf0;
else if(distance<10.0) PORTA=0x0f;
else {}
사용중인 소스코드의 일부입니다. distance변수값에 따라서 포트A에 연결된 LED는 작동을 잘합니다.
문제는... "어떻게 해야 다중서보를 제어하는 함수을 실행할 수 있는건가"입니다 ㅠㅠ;;
main()
{
while(1){
move_control()
{
Servo24SetDuty1(2,0,1800);
Servo24SetDuty1(2,1,1200);
Servo24SetDuty1(2,4,2000);//꼬리
Servo24SetDuty1(1,0,1500);//Base Value
Servo24SetDuty1(1,1,1380);//Base Value front -300
Servo24SetDuty1(1,2,1950);//Base Value
Servo24SetDuty1(1,3,1680);//Base Value
}
}
도무지 방도가 떠오르지 않아 질문을 드립니다.
초음파센서값을 이용해서 다중서보모터를 제어할려고 합니다.
좀 더 간단하게 말을 드리면 초음파센서가 앞에 있는 장애물을 인식하면 서보모터를 제어해서 회피하는 것입니다.
distance = (unsigned)cn_data * Cvelocity / 1000;
if(distance<5.0) PORTA=0xf0;
else if(distance<10.0) PORTA=0x0f;
else {}
사용중인 소스코드의 일부입니다. distance변수값에 따라서 포트A에 연결된 LED는 작동을 잘합니다.
문제는... "어떻게 해야 다중서보를 제어하는 함수을 실행할 수 있는건가"입니다 ㅠㅠ;;
main()
{
while(1){
move_control()
{
Servo24SetDuty1(2,0,1800);
Servo24SetDuty1(2,1,1200);
Servo24SetDuty1(2,4,2000);//꼬리
Servo24SetDuty1(1,0,1500);//Base Value
Servo24SetDuty1(1,1,1380);//Base Value front -300
Servo24SetDuty1(1,2,1950);//Base Value
Servo24SetDuty1(1,3,1680);//Base Value
}
}
서보모터는 어떠한 PWM 값을 계속 주고 있어야 그 값에 따라 반응합니다. 그러므로 편법을 쓰지 않는다면 각각의
PWM 제어가 되어야 합니다. 간단하게 타이머 1,2,3이 있으면 3개 제어가 된다고 보면 되겠네요.
이벤트가 걸렸을때 타이머의 값만 바꾸어 주면 될것 같은데.. 질문의 요지를 잘 모르겠네요.
메인함수
- 대기
이벤트 함수
- 만약 전방에 장애물이 있으면
PWM 설정
- 아니면
유지
차분히 생각하고 회로쪽에 문제 및 코드 수정으로 간단하게 작업 완료하였습니다 휴우~_~;;;