Trying to make loop works.

1 view (last 30 days)
Aliff
Aliff on 5 Mar 2013
I need to make a loop keep running until a condition in the code is met to break the loop.
I was thinking of using a while loop like this:
while (Y<60);
motorX_down;
end
while(Y>60);
motorX_up
end
if (Y==60);
motor_stop;
end
I use this code to control my motors according to the feedback from the image processing. My objective is to make the camera move so that its center is the same as the detected object coordinate. I had the image processing part done and can get the detected object coordinate in X and Y.
Then arduino will move the motor to adjust the camera.
Now my frame size 160x120 with X:80 and Y:60 as the center.
motorX_up will make the camera move up. motorX_down will make the camera move down. motor_stop will stop the camera.
So far i'm only trying to make the camera move vertically only to test it.
But when I run the code, the motor move only down :( So maybe I thought I had the while loop wrong.

Answers (1)

Honglei Chen
Honglei Chen on 5 Mar 2013
Because you never update Y in your first loop so it keeps going down. You need to update Y value in the loop, for example
Y = Some_function_to_generate_Y;
while Y~=60
if Y < 60
motorX_down;
else
motorX_up;
end
Y = Some_function_to_generate_Y;
end
  5 Comments
Aliff
Aliff on 5 Mar 2013
Edited: Aliff on 5 Mar 2013
The while loop is okay except for that. But from this code here X and Y can only be generated with this code:
for object=1:length(stats)
bb=stats(object).BoundingBox;
bc=stats(object).Centroid;
rectangle('Position',bb,'EdgeColor','Y','LineWidth',2);
plot(bc(1),bc(2),'-m+');
a=text(bc(1)+15,bc(2), strcat('X:', num2str(round(bc(1))), 'Y:', num2str(round(bc(2)))));
set(a, 'FontName', 'Arial', 'FontWeight', 'bold', 'FontSize', 12, 'Color', 'yellow');
X=num2str(round(bc(1)));
Y=num2str(round(bc(2)));
end
This for loop always update its center coordinate, so maybe I could use the code to move the motors inside this loop?
Honglei Chen
Honglei Chen on 5 Mar 2013
Sounds reasonable but you are really the best person to answer that as I don't know your algorithm.

Sign in to comment.

Categories

Find more on MATLAB Support Package for Arduino Hardware in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!