
edison2
Hi!... I have been developing my own application for Ez-B..
my robot is following a color, it is fine, but when I remove the color, the robot is moving in the direction where he saw last color
I am using an Hbridge... here is the code...Code:
private void timer1_Tick(object sender, EventArgs e)
{
if (!_camera.IsActive)
return;
{
ColorDetection.ColorEnum color = (ColorDetection.ColorEnum)comboBox3.SelectedItem;
ObjectLocation objectLocation = _camera.CameraBasicColorDetection.GetObjectLocationByColor(color, 10, (byte)trackBar1.Value);
_camera.UpdatePreview();
{
if (!objectLocation.isFound)
return;
{
if (checkservo.Checked)
{
int position = _ezb.Servo.GetServoPosition(Servo.ServoPortEnum.D12);
int positiony = _ezb.Servo.GetServoPosition(Servo.ServoPortEnum.D13);
if (objectLocation.horizontalLocation == ObjectLocation.HorizontalLocationEnum.Left)
position++;
else if (objectLocation.horizontalLocation == ObjectLocation.HorizontalLocationEnum.Right)
position--;
_ezb.Servo.SetServoPosition(Servo.ServoPortEnum.D12, position);
if (objectLocation.verticalLocation == ObjectLocation.VerticalLocationEnum.Top)
positiony++;
else if (objectLocation.verticalLocation == ObjectLocation.VerticalLocationEnum.Bottom)
positiony--;
_ezb.Servo.SetServoPosition(Servo.ServoPortEnum.D13, positiony);
}
else if (checkmovimiento.Checked)
{
if (objectLocation.horizontalLocation == ObjectLocation.HorizontalLocationEnum.Left)
{
_ezb.Digital.SetDigitalPort(Digital.DigitalPortEnum.D1, false);
_ezb.Digital.SetDigitalPort(Digital.DigitalPortEnum.D2, true);
_ezb.Digital.SetDigitalPort(Digital.DigitalPortEnum.D3, true);
_ezb.Digital.SetDigitalPort(Digital.DigitalPortEnum.D4, false);
}
else if (objectLocation.horizontalLocation == ObjectLocation.HorizontalLocationEnum.Right)
{
_ezb.Digital.SetDigitalPort(Digital.DigitalPortEnum.D1, true);
_ezb.Digital.SetDigitalPort(Digital.DigitalPortEnum.D2, false);
_ezb.Digital.SetDigitalPort(Digital.DigitalPortEnum.D3, false);
_ezb.Digital.SetDigitalPort(Digital.DigitalPortEnum.D4, true);
}
else if (objectLocation.verticalLocation == ObjectLocation.VerticalLocationEnum.Middle)
{
_ezb.Digital.SetDigitalPort(Digital.DigitalPortEnum.D1, true);
_ezb.Digital.SetDigitalPort(Digital.DigitalPortEnum.D2, false);
_ezb.Digital.SetDigitalPort(Digital.DigitalPortEnum.D3, true);
_ezb.Digital.SetDigitalPort(Digital.DigitalPortEnum.D4, false);
}
else if (objectLocation.verticalLocation == ObjectLocation.VerticalLocationEnum.Top)
{
_ezb.Digital.SetDigitalPort(Digital.DigitalPortEnum.D1, true);
_ezb.Digital.SetDigitalPort(Digital.DigitalPortEnum.D2, false);
_ezb.Digital.SetDigitalPort(Digital.DigitalPortEnum.D3, true);
_ezb.Digital.SetDigitalPort(Digital.DigitalPortEnum.D4, false);
}
else if (objectLocation.verticalLocation == ObjectLocation.VerticalLocationEnum.Bottom)
{
_ezb.Digital.SetDigitalPort(Digital.DigitalPortEnum.D1, true);
_ezb.Digital.SetDigitalPort(Digital.DigitalPortEnum.D2, false);
_ezb.Digital.SetDigitalPort(Digital.DigitalPortEnum.D3, true);
_ezb.Digital.SetDigitalPort(Digital.DigitalPortEnum.D4, false);
}
else if (objectLocation.horizontalLocation == ObjectLocation.HorizontalLocationEnum.Middle)
{
_ezb.Digital.SetDigitalPort(Digital.DigitalPortEnum.D1, true);
_ezb.Digital.SetDigitalPort(Digital.DigitalPortEnum.D2, false);
_ezb.Digital.SetDigitalPort(Digital.DigitalPortEnum.D3, true);
_ezb.Digital.SetDigitalPort(Digital.DigitalPortEnum.D4, false);
}
}
string logMsg = string.Format("Objeto encontrado: {0} {1}", objectLocation.horizontalLocation, objectLocation.verticalLocation);
tbLog.AppendText(logMsg);
tbLog.AppendText(Environment.NewLine);
}
}
}
}
how do I get the robot when it detects anything stand still?
*hint: Where is your code to tell the robot to stop when an object is not found?
Code: