0
나는 인코더 피드백 로봇을 가지고 있고, 나는, 일정 거리 로봇을 이동 기능을 사용하고 그것을 특정 각도를 켜려고합니다 그래서 예를 들면 :로봇을 일정 거리 이동하고 센서를 관리하는 방법은 무엇입니까?
void loop(){
if (Obstacle==false){ // if no obstacles
forward(1000); // move forward 1000 mm
backward(1000); // move backward 1000 mm
//...
}
}
전달 기능 :
void forward(int distance){ // distance in mm
int desiredRotationNumber= round(distance/circumference) ;
int desiredTicks = encoderResolution * desiredRotationNumber;
if (counter < desiredTicks) // variable counter counts the pulses from the encoder
{
analogWrite(motor,255);
}
else
{
analogWrite (motor,0);
}
}
문제는 "if"조건을 사용하면 전달 함수가 한 번만 실행되고 프로그램은 다음 함수로 점프하지만 "while 루프"를 사용하면 이동 함수가 올바르게 실행되지만 실행되지 않습니다. 센서 등을 관리 할 수 있어야합니다. , 비동기 작업 (이동 감지) 그 작업을 만들 수있는, 멀티 스레딩으로
while (distance > 0 && !Obstacle){
forward(step);
distance-=step;
check_sensors();
}
:
감사합니다. 내 이동 기능에서 아무도 장애물을 찾지 못했지만 기능이 작동하지 않으면 어떻게 될까요? 내가 멈춘 마지막 이동 기능에서 이동 방향 집합을 어떻게 다시 시작할 수 있습니까? – Apastrix
진행중인 이동 목록 (링크 된 목록 일 수도 있습니다)을 저장하는 메커니즘이 필요하고 하나씩 차례로 가져 오는 것이 좋습니다. 목록에서 쉽게 다시 시작할 수 있습니다. – didierc
나는 머리를 숙이고 이것을 다시 시도 할 것이다. 다시 감사한다. – Apastrix